• Boaz Harrosh's avatar
    [SCSI] libosd: Error handling revamped · aa9fffbe
    Boaz Harrosh authored
    Administer some love to the osd_req_decode_sense function
    
    * Fix a bad bug with osd_req_decode_sense(). If there was no scsi
      residual, .i.e the request never reached the target, then all the
      osd_sense_info members where garbage.
    
    * Add grossly missing in/out_resid to osd_sense_info and fill them in
      properly.
    
    * Define an osd_err_priority enum which divides the possible errors into
      7 categories in ascending severity. Each category is also assigned a
      Linux return code translation.
    
      Analyze the different osd/scsi/block returned errors and set the
      proper osd_err_priority and Linux return code accordingly.
    
    * extra check a few situations so not to get stuck with inconsistent
      error view. Example an empty residual with an error code, and other
      places ...
    
    Lots of libosd's osd_req_decode_sense clients had this logic in some
    form or another. Consolidate all these into one place that should
    actually know about osd returns. Thous translating it to a more
    abstract error.
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    aa9fffbe
osd_initiator.c 49.7 KB