2012-05-25 17:39:09

by Dan Williams

[permalink] [raw]
Subject: [PATCH v2] scsi: fix async probe regression

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().

Cc: David Miller <[email protected]>
Cc: Alan Stern <[email protected]>
Reported-by: Meelis Roos <[email protected]>
Tested-by: Meelis Roos <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
---

v2: James: don't wrapper scsi_complete_async_scans()

Kept the Tested-by tag since this is equivalent to v1.

--
Dan

drivers/scsi/scsi_scan.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 01b0374..2e5fe58 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -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;
}


2012-05-30 00:53:25

by walt

[permalink] [raw]
Subject: Re: [PATCH v2] scsi: fix async probe regression

On 05/25/2012 10:55 AM, Dan Williams wrote:
> 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().

Hi Dan. After applying version 2 of a7a20d1 I can boot again, but there's
a catch :)

My grub.cfg boot menu entry uses the root=PARTUUID=<guid> syntax, but that
has stopped working. After a7a20d1(v2) I have to use root=/dev/sda5 or I
get the familiar "can't find block device (foo,bar)" kernel panic.

Any idea what would cause that particular kind of breakage?

Thanks!

2012-05-30 23:00:46

by Dan Williams

[permalink] [raw]
Subject: Re: [PATCH v2] scsi: fix async probe regression

On Tue, May 29, 2012 at 5:53 PM, walt <[email protected]> wrote:
> On 05/25/2012 10:55 AM, Dan Williams wrote:
>> 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().
>
> Hi Dan. ?After applying version 2 of a7a20d1 I can boot again, but there's
> a catch :)

Ah you took me off the cc, so I missed this originally.

>
> My grub.cfg boot menu entry uses the root=PARTUUID=<guid> syntax, but that
> has stopped working. ?After a7a20d1(v2) I have to use root=/dev/sda5 or I
> get the familiar "can't find block device (foo,bar)" kernel panic.

What is a7a20d1(v2)? That's the original commit that broke things, so
I'm confused.

> Any idea what would cause that particular kind of breakage?

The fix should be equivalent for both root= options because if the
device can be found by /dev/sda5 I don't see anything related to the
async subsystem that would prevent it from being looked up by uuid??

--
Dan