[Disksim-users] Segmentation Fault !!!

Anjo Vahldiek vahldiek at mpi-sws.org
Wed Feb 16 09:41:11 EST 2011


Hi,

I looked into the same issue. Abdullah it might be to late for you, but 
I think there is a hack which makes multiple disks and a single ssd 
possible. It is not a generic solution and might require to adopt defines!

It would be great, if anyone of you could look into the generated diff 
(difftomakeahybriddisk.txt) and verify that I'm not doing something 
completely wrong. The basic idea is to hard code the issue with the 
difference indexing of devices (devno...). In addition a problem with 
the logorg came up which can also be hard coded, because we know which 
logorg should be used.

For the enclosed parv I could run synthetic traces for the disk as well 
as the flash.

Thanks,
Anjo

On 11.12.2010 04:51, Michael Stroucken wrote:
> 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,
> _______________________________________________
> Disksim-users mailing list
> Disksim-users at ece.cmu.edu
> https://sos.ece.cmu.edu/mailman/listinfo/disksim-users
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: difftomakeahybriddisk.txt
URL: <http://lists.andrew.cmu.edu/pipermail/disksim-users/attachments/20110216/9d8a3b93/attachment.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: maxtor146g.parv
URL: <http://lists.andrew.cmu.edu/pipermail/disksim-users/attachments/20110216/9d8a3b93/attachment.ksh>


More information about the Disksim-users mailing list