[Disksim-users] Segmentation Fault !!!

Michael Stroucken stroucki at ece.cmu.edu
Fri Dec 10 22:51:42 EST 2010


Abdullah Al-Dahlawi wrote:
> Greeting
>
> Can any one gibe me a feedback why I am getting a "segmentation fault" 
> error when modifying a 3disk.parv faile to include an ssd device ?????????
>
Two issues:
1) You are getting a segmentation fault, because you are trying to 
implement a hybrid system using magnetic and SSD drives. Due to a bug in 
the disksim code, getssd will use the current disk index as an index 
into the table of ssd disks.
So if there are three magnetic disks, and one SSD, when trying to access 
disk 3 (the SSD), it will try to getssd(3). But since the count of SSDs 
is only 1, it will fall off the table.

To avoid this, keep your system purely SSD apply the second patch to 
your config.

2) Once this is bypassed, the code will fail on an assertion that your 
page size does not match the aligned count as returned by 
ssd_choose_aligned_count. The value that function returns is MIN(count, 
block number % page size). If count is 4 and page size is 8, you will 
have problems.

I don't know what that means for your experiments, but you can either 
change page size to 4 or apply the first patch. The patch will ignore 
the difference.

Good luck,
Michael.

--- ssd.c.orig    2010-12-10 22:28:08.000000000 -0500
+++ ssd.c    2010-12-10 22:34:45.000000000 -0500
@@ -638,7 +638,7 @@
        tmp->flags = curr->flags;
        tmp->blkno = blkno;
        tmp->bcount = 
ssd_choose_aligned_count(currdisk->params.page_size, blkno, count);
-       ASSERT(tmp->bcount == currdisk->params.page_size);
+       // ASSERT(tmp->bcount == currdisk->params.page_size);
 
        tmp->tempptr2 = curr;
        blkno += tmp->bcount;

--- t-mlc-08.parv.abdullah    2010-12-10 22:09:23.000000000 -0500
+++ t-mlc-08.parv    2010-12-10 22:22:11.000000000 -0500
@@ -88,42 +88,6 @@
 Use queueing in subsystem = 1
 } # end of DRV0 spec
 # ---------------------------------------------------------
-disksim_bus BUS0 {
-type = 1,
-Arbitration type = 1,
-Arbitration time = 0.0,
-Read block transfer time = 0.0,
-Write block transfer time = 0.0,
-Print stats =  0
-} # end of BUS0 spec
-# ---------------------------------------------------------
-disksim_bus BUS1 {
-type = 1,
-Arbitration type = 1,
-Arbitration time = 0.0,
-Read block transfer time = 0.0512,
-Write block transfer time = 0.0512,
-Print stats =  1
-} # end of BUS1 spec
-# ---------------------------------------------------------
-disksim_bus BUS2 {
-type = 1,
-Arbitration type = 1,
-Arbitration time = 0.0,
-Read block transfer time = 0.0512,
-Write block transfer time = 0.0512,
-Print stats =  1
-} # end of BUS2 spec
-# ---------------------------------------------------------
-disksim_bus BUS3 {
-type = 1,
-Arbitration type = 1,
-Arbitration time = 0.0,
-Read block transfer time = 0.0512,
-Write block transfer time = 0.0512,
-Print stats =  1
-} # end of BUS3 spec
-# ---------------------------------------------------------
 disksim_bus BUSHBA {
 type = 2,
 Arbitration type = 1,
@@ -252,23 +216,13 @@
 
 # ---------------------------------------------------------
 # HP_C3323A
-source atlas10k.diskspecs
-source ibm18es.diskspecs
-source cheetah9LP.diskspecs
 # ---------------------------------------------------------
 # component instantiation
 instantiate [ statfoo ] as Stats
 instantiate [ statfoo ]         as  Stats
 
-instantiate [ quantum ] as  QUANTUM_TORNADO_validate
-instantiate [ ibm ]     as  IBM_DNES-309170W_validate
-instantiate [ seagate ] as  SEAGATE_ST39102LW_validate
 instantiate [ ssd0x0 ]  as  SSD
 
-instantiate [ bus0 ]    as  BUS0
-instantiate [ bus1 ]    as  BUS1
-instantiate [ bus2 ]    as  BUS2
-instantiate [ bus3 ]    as  BUS3
 instantiate [ busHBA0 ] as  BUSHBA
 
 instantiate [ driver0 ] as  DRIVER0
@@ -276,79 +230,12 @@
 # ---------------------------------------------------------
 # system topology
 topology disksim_iodriver driver0 [
-     disksim_bus bus0 [
-                       disksim_ctlr ctlr0 [
-                                           disksim_bus bus1 [
-                                                             
disksim_disk quantum []
-                                                            ],
-                                           disksim_bus bus2 [
-                                                             
disksim_disk ibm []
-                                                            ],
-                                           disksim_bus bus3 [
-                                                             
disksim_disk seagate []
-                                                            ],
-                                        disksim_bus busHBA0 [
+     disksim_bus busHBA0 [
                                                              
ssdmodel_ssd ssd0x0 []
                                                             
]                                                         
                                           ]
-                      ]
-    ]
 # no syncsets
 # ---------------------------------------------------------
-disksim_logorg quantumorg {
-   Addressing mode = Parts,
-   Distribution scheme = Asis,
-   Redundancy scheme = Noredun,
-   devices = [ quantum ],
-   Stripe unit  =  17938986,
-   Synch writes for safety =  0,
-   Number of copies =  2,
-   Copy choice on read =  6,
-   RMW vs. reconstruct =  0.5,
-   Parity stripe unit =  64,
-   Parity rotation type =  1,
-   Time stamp interval =  0.000000,
-   Time stamp start time =  60000.000000,
-   Time stamp stop time =  10000000000.000000,
-   Time stamp file name =  stamps
-} # end of logorg org0 spec
-# ---------------------------------------------------------
-disksim_logorg ibmorg {
-   Addressing mode = Parts,
-   Distribution scheme = Asis,
-   Redundancy scheme = Noredun,
-   devices = [ ibm ],
-   Stripe unit  =   17916240,
-   Synch writes for safety =  0,
-   Number of copies =  2,
-   Copy choice on read =  6,
-   RMW vs. reconstruct =  0.5,
-   Parity stripe unit =  64,
-   Parity rotation type =  1,
-   Time stamp interval =  0.000000,
-   Time stamp start time =  60000.000000,
-   Time stamp stop time =  10000000000.000000,
-   Time stamp file name =  stamps
-} # end of logorg org0 spec
-# ---------------------------------------------------------
-disksim_logorg seagateorg {
-   Addressing mode = Parts,
-   Distribution scheme = Asis,
-   Redundancy scheme = Noredun,
-   devices = [ seagate ],
-   Stripe unit  =  17783240,
-   Synch writes for safety =  0,
-   Number of copies =  2,
-   Copy choice on read =  6,
-   RMW vs. reconstruct =  0.5,
-   Parity stripe unit =  64,
-   Parity rotation type =  1,
-   Time stamp interval =  0.000000,
-   Time stamp start time =  60000.000000,
-   Time stamp stop time =  10000000000.000000,
-   Time stamp file name =  stamps
-} # end of logorg org0 spec
-# ---------------------------------------------------------
 disksim_logorg org0 {
    Addressing mode = Array,
    Distribution scheme = Striped,



More information about the Disksim-users mailing list