Re: [Xen-devel] [PATCH V2 2/4] Introduce xen-scsifront module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/29/2014 04:57 PM, Juergen Gross wrote:
On 07/29/2014 03:53 PM, Christoph Hellwig wrote:

+        switch (op) {
+        case VSCSIFRONT_OP_ADD_LUN:
+            if (device_state == XenbusStateInitialised) {
+                sdev = scsi_device_lookup(info->host, chn, tgt,
+                              lun);
+                if (sdev) {
+                    dev_err(&dev->dev,
+                        "Device already in use.\n");
+                    scsi_device_put(sdev);
+                    xenbus_printf(XBT_NIL, dev->nodename,
+                              state_str, "%d",
+                              XenbusStateClosed);
+                } else {
+                    scsi_add_device(info->host, chn, tgt,
+                            lun);
+                    xenbus_printf(XBT_NIL, dev->nodename,
+                              state_str, "%d",
+                              XenbusStateConnected);
+                }
+            }
+            break;

scsi_add_device handles an already existing device just fine, and unlike
this construct isn't racy.

Okay. I'll change it.

Hmm, I looked into scsi_add_device(). It seems as if the caller can't
distinguish between a new created and an already existing device. Am I
missing something?

The race is not existing: scsi_add_device() (and scsi_remove_device()
as well) for this scsi_host is called in scsifront_do_lun_hotplug()
only, and this function is always called in the same thread (xenbus
watch). A comment seems to be a good idea.


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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux