[PATCH] libata: make user scan wait for scan to complete
authorTejun Heo <htejun@gmail.com>
Sat, 30 Sep 2006 09:07:17 +0000 (18:07 +0900)
committerJeff Garzik <jeff@garzik.org>
Sat, 2 Dec 2006 03:40:29 +0000 (22:40 -0500)
Make user scan wait for scan to complete.  This way user can wait for
warm plug request to complete and is prevented from causing EH event
storm by repetitively issuing scan request while EH is in progress.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Fajun Chen <fajunchen@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-scsi.c

index 47ea111d5acee837d20d8939b9c52c6a46f0357e..6b2553dae489c0e5a43754f93b6592ccc7fc8deb 100644 (file)
@@ -3182,10 +3182,12 @@ static int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
                        rc = -EINVAL;
        }
 
-       if (rc == 0)
+       if (rc == 0) {
                ata_port_schedule_eh(ap);
-
-       spin_unlock_irqrestore(ap->lock, flags);
+               spin_unlock_irqrestore(ap->lock, flags);
+               ata_port_wait_eh(ap);
+       } else
+               spin_unlock_irqrestore(ap->lock, flags);
 
        return rc;
 }