[SCSI] fix async probe regression
authorDan Williams <dan.j.williams@intel.com>
Fri, 25 May 2012 17:55:07 +0000 (10:55 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 30 May 2012 09:37:07 +0000 (13:37 +0400)
Commit a7a20d1 "[SCSI] sd: limit the scope of the async probe domain"
moved sd probe work out of reach of wait_for_device_probe().  Allow it
to be synced via scsi_complete_async_scans().

Reported-by: Meelis Roos <mroos@linux.ee>
Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/scsi_scan.c

index 01b03744f1f99ced5879d0f9e9f3a7d1d0677c11..2e5fe584aad32d2130ad59945c922eaa238fb0be 100644 (file)
@@ -147,7 +147,7 @@ int scsi_complete_async_scans(void)
 
        do {
                if (list_empty(&scanning_hosts))
-                       return 0;
+                       goto out;
                /* If we can't get memory immediately, that's OK.  Just
                 * sleep a little.  Even if we never get memory, the async
                 * scans will finish eventually.
@@ -179,8 +179,11 @@ int scsi_complete_async_scans(void)
        }
  done:
        spin_unlock(&async_scan_lock);
-
        kfree(data);
+
+ out:
+       async_synchronize_full_domain(&scsi_sd_probe_domain);
+
        return 0;
 }