+ }
+ class_dev_parent = sysfs_get_classdev_parent(class_dev);
+ dprintf("class_dev 0x%p; class_dev_parent 0x%p\n", class_dev,
+ class_dev_parent);
+ if (class_dev_parent) {
+ scsi_dev = sysfs_get_classdev_device(class_dev_parent);
+ } else {
+ scsi_dev = sysfs_get_classdev_device(class_dev);
+ }
+
+ /*
+ * The close of scsi_dev will close class_dev or class_dev_parent.
+ */
+
+ /*
+ * We assume we are called after the device is completely ready,
+ * so we don't have to loop here like udev. (And we are usually
+ * called via udev.)
+ */
+ if (!scsi_dev) {
+ /*
+ * errno is not set if we can't find the device link, so
+ * don't print it out here.
+ */
+ log_message(LOG_WARNING, "Cannot find sysfs device associated with %s\n",
+ target_path);
+ return 1;
+ }