This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFC 5/5] SCSI Fault Injection using SystemTap


On 7/11/08, Anup C Shan <anupcshan@gmail.com> wrote:
> Hi.
>
> We have designed a tapset for fault injection. It is meant to ease the
> process of injecting faults into the kernel. As use cases, we have
> ported in-kernel fault injection for slab and page_alloc using this
> framework. Refer Documentation/fault-injection/
>
> We have also modified the existing SCSI fault-injection systemtap script
> (http://sourceforge.net/projects/scsifaultinjtst/) to use this framework.
>
> Please find the tapset file and readme attached. The usecase scripts
> are in the follow-up mails.
>
> Comments and suggestions are welcome.
>
> Please suggest a right location to place these tapset scripts in
> SystemTap source tree.
>
> Thanks,
> Kushal & Anup
>


Attached is the patch for SCSI Fault Injection SystemTap scripts found at

	 		

  http://sourceforge.net/projects/scsifaultinjtst/



 A few changes have been  made like



1. A new tapset called faultinject.stp have been developed for
generic fault injection
   framework which can be used to inject fault  in a
 simplified manner.  It enables the user
   to inject faults by choosing number  of times to inject,
probability of failure,
   which process to fail etc.



2. A tapset for SCSI called scsi_tapset.stp have been developed over the  above
    mentioned tapset.  It makes giving the command line arguments
easier  in any order
    of the form 'parameter=value'.



3. There is a set of default parameters in faultinject.stp which are
fij_failtimes,
    fij_totaltime, fij_space,  fij_probability, fij_pids to fail,
fij_verbosity, fij_taskfilter, fij_interval,
    fij_debug.  All these parameters are optional. They will be loaded
with their default
    values if not specified.  But the parameters for the scsi fault
injection are mandatory.
    They are dev_major, dev_minor_min, dev_minor_max, inode_lba_flag,
inode_lba_val.
    The function fij_scsi_add_option() adds all these mandatory
parameters to the
    parameters' list by calling the function
fij_add_necessary_option(option_name,
    help_string) defined in faultinject.stp. They have to be provided
in the form as
    mentioned in the above point.  Not specifying any of these will
result in an error.



4. fij_scsi_assign_params() in scsi_tapset.stp assigns all the scsi
command line
    arguments' values to the global variables dev_major, dev_minor_min,

    dev_minor_max, inode_lba_flag, inode_lba_val.



5. So in all the 8 scsi scripts the assignments statements have been
replaced with
    fij_scsi_add_option() and fij_scsi_assign_params(), giving the
user the   flexibility of
    providing the command line arguments in any order.



6. The field request_bufflen in struct scsi_cmnd is not found in the
current kernel versions
    so all references to it have been deleted.



7. A global variable fij_flag has been introduced in
scsi_timeout_injection.stp in all the 4
   tapsets to control the execution of the probe handlers depending on
when the fault
   injection took place.



8. The typecasting of THIS->__retvalue has been changed from unsigned
int to long in
   functions save_start_site() and save_entry_next() to avoid
dependencies on architecture
   in scsi_timeout_injection.stp



9. There is a shell script scsi_exe which is completely interactive
and asks the user script
    name and taspset for execution along with scsi command

    line arguments and gives a menu for optional parameters.



10. However scripts can be executed without this also like

       #stap -v -g disk_rerr.stp -I fault_injection_common_scsi -I
tapset  dev_major=8 dev_minor_min=0 dev_minor_max=49 inode_lba_flag=1
 inode_lba_val=0 failtimes=10 probability=100 verbosity=2



11. A documentation README.new has been given.


Thanks,
Kushal & Anup

Attachment: scsi_fault_injection_test_tool-1.0.1-using-faultinject-framework.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]