Hi linux-scsi people and linux1394 people,

there are a few changes to sbp2 in linux-2.6.13 (-rc2) that were not
merged back into the linux1394.org repository (and were not tested by
linux1394 maintainers as far as I have heard). Most of these changes
deal with TYPE_RBC devices.

Previous discussion:
 - "TYPE_RBC cache fixes (sbp2.c affected)"
   http://marc.theaimsgroup.com/?t=111620896500001

 - "Problems with Firewire and -mm kernels"
   http://marc.theaimsgroup.com/?t=111994463000003
   http://marc.theaimsgroup.com/?t=112027470800001
   http://marc.theaimsgroup.com/?t=112029841400001

I have one question for now: Is the following part of the diff related
to the TYPE_RBC issue, or is it unrelated? As you can see, locking is
removed from sbp2scsi_complete_command() but added to sbp2scsi_reset():


--- ieee1394_linux1394.org/sbp2.c       2005-07-03 12:29:55.000000000 +0200
+++ linux-2.6.13-rc2/drivers/ieee1394/sbp2.c    2005-07-06 05:46:33.000000000 
+0200
@@ -2580,8 +2454,6 @@ static void sbp2scsi_complete_command(st
                                      u32 scsi_status, struct scsi_cmnd *SCpnt,
                                      void (*done)(struct scsi_cmnd *))
 {
-       unsigned long flags;
-
        SBP2_DEBUG("sbp2scsi_complete_command");
 
        /*
@@ -2680,11 +2552,7 @@ static void sbp2scsi_complete_command(st
        /*
         * Tell scsi stack that we're done with this command
         */
-       spin_lock_irqsave(scsi_id->scsi_host->host_lock,flags);
        done (SCpnt);
-       spin_unlock_irqrestore(scsi_id->scsi_host->host_lock,flags);
-
-       return;
 }
 
 
@@ -2747,7 +2616,7 @@ static int sbp2scsi_abort(struct scsi_cm
 /*
  * Called by scsi stack when something has really gone wrong.
  */
-static int sbp2scsi_reset(struct scsi_cmnd *SCpnt)
+static int __sbp2scsi_reset(struct scsi_cmnd *SCpnt)
 {
        struct scsi_id_instance_data *scsi_id =
                (struct scsi_id_instance_data 
*)SCpnt->device->host->hostdata[0];
@@ -2762,6 +2631,18 @@ static int sbp2scsi_reset(struct scsi_cm
        return(SUCCESS);
 }
 
+static int sbp2scsi_reset(struct scsi_cmnd *SCpnt)
+{
+       unsigned long flags;
+       int rc;
+
+       spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
+       rc = __sbp2scsi_reset(SCpnt);
+       spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
+
+       return rc;
+}
+
 static const char *sbp2scsi_info (struct Scsi_Host *host)
 {
         return "SCSI emulation for IEEE-1394 SBP-2 Devices";



Thanks in advance for clarification.
-- 
Stefan Richter
-=====-=-=-= -=== -=--=
http://arcgraph.de/sr/

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to