diff mbox

[5/5] initdev:kernel: USB and SCSI block init device notification, v3

Message ID 20090502023000.GA16076@cuplxvomd02.corp.sa.net
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

David VomLehn May 2, 2009, 2:30 a.m. UTC
From: Alan Stern <stern@rowland.harvard.edu

Add notification of device discovery for USB and SCSI block devices.

History
v3	Change bootdev_* to initdev_*
v2	Correct location of call to bootdev_found
v1	Initial version

Signed-off-by: Alan Stern <stern@rowland.harvard.edu
Signed-off-by: David VomLehn <dvomlehn@cisco.com>
---
 drivers/scsi/scsi_scan.c  |    2 ++
 drivers/usb/storage/usb.c |    3 +++
 2 files changed, 5 insertions(+), 0 deletions(-)

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

Comments

Ming Lei May 2, 2009, 3:55 a.m. UTC | #1
On Fri, 1 May 2009 19:30:00 -0700
David VomLehn <dvomlehn@cisco.com> wrote:

> From: Alan Stern <stern@rowland.harvard.edu
> 
> Add notification of device discovery for USB and SCSI block devices.
> 
> History
> v3	Change bootdev_* to initdev_*
> v2	Correct location of call to bootdev_found
> v1	Initial version
> 
> Signed-off-by: Alan Stern <stern@rowland.harvard.edu
> Signed-off-by: David VomLehn <dvomlehn@cisco.com>
> ---
>  drivers/scsi/scsi_scan.c  |    2 ++
>  drivers/usb/storage/usb.c |    3 +++
>  2 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> index 6f51ca4..735b061 100644
> --- a/drivers/scsi/scsi_scan.c
> +++ b/drivers/scsi/scsi_scan.c
> @@ -1834,6 +1834,7 @@ static int do_scan_async(void *_data)
>  	struct async_scan_data *data = _data;
>  	do_scsi_scan_host(data->shost);
>  	scsi_finish_async_scan(data);
> +	initdev_probe_done(BOOTDEV_BLOCK_MASK);

Which code are waiting for the block device's probe done?


>  	return 0;
>  }
>  
> @@ -1855,6 +1856,7 @@ void scsi_scan_host(struct Scsi_Host *shost)
>  		return;
>  	}
>  
> +	initdev_found(BOOTDEV_BLOCK_MASK);
>  	p = kthread_run(do_scan_async, data, "scsi_scan_%d",
> shost->host_no); if (IS_ERR(p))
>  		do_scan_async(data);
> diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
> index 8060b85..ea7abab 100644
> --- a/drivers/usb/storage/usb.c
> +++ b/drivers/usb/storage/usb.c
> @@ -837,6 +837,7 @@ static int usb_stor_scan_thread(void * __us)
>  		/* Should we unbind if no devices were detected? */
>  	}
>  
> +	initdev_probe_done(BOOTDEV_BLOCK_MASK);

the same question with above.

>  	complete_and_exit(&us->scanning_done, 0);
>  }
>  
> @@ -937,10 +938,12 @@ int usb_stor_probe2(struct us_data *us)
>  	}
>  
>  	/* Start up the thread for delayed SCSI-device scanning */
> +	initdev_found(BOOTDEV_BLOCK_MASK);
>  	th = kthread_create(usb_stor_scan_thread, us,
> "usb-stor-scan"); if (IS_ERR(th)) {
>  		printk(KERN_WARNING USB_STORAGE 
>  		       "Unable to start the device-scanning
> thread\n");
> +		initdev_probe_done(BOOTDEV_BLOCK_MASK);

the same question with above.

>  		complete(&us->scanning_done);
>  		quiesce_and_remove_host(us);
>  		result = PTR_ERR(th);
> --
David VomLehn May 5, 2009, 12:19 a.m. UTC | #2
On Fri, May 01, 2009 at 11:55:39PM -0400, Ming Lei wrote:
> On Fri, 1 May 2009 19:30:00 -0700
> David VomLehn <dvomlehn@cisco.com> wrote:
> 
> > From: Alan Stern <stern@rowland.harvard.edu
> > diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> > index 6f51ca4..735b061 100644
> > --- a/drivers/scsi/scsi_scan.c
> > +++ b/drivers/scsi/scsi_scan.c
...
> > @@ -1834,6 +1834,7 @@ static int do_scan_async(void *_data)
> >  	struct async_scan_data *data = _data;
> >  	do_scsi_scan_host(data->shost);
> >  	scsi_finish_async_scan(data);
> > +	initdev_probe_done(BOOTDEV_BLOCK_MASK);
> 
> Which code are waiting for the block device's probe done?

None yet. That remains to be done.

> > diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
> > index 8060b85..ea7abab 100644
> > --- a/drivers/usb/storage/usb.c
> > +++ b/drivers/usb/storage/usb.c
> > @@ -837,6 +837,7 @@ static int usb_stor_scan_thread(void * __us)
> >  		/* Should we unbind if no devices were detected? */
> >  	}
> >  
> > +	initdev_probe_done(BOOTDEV_BLOCK_MASK);
> 
> the same question with above.

Same answer.

> > @@ -937,10 +938,12 @@ int usb_stor_probe2(struct us_data *us)
> >  	}
> >  
> >  	/* Start up the thread for delayed SCSI-device scanning */
> > +	initdev_found(BOOTDEV_BLOCK_MASK);
> >  	th = kthread_create(usb_stor_scan_thread, us,
> > "usb-stor-scan"); if (IS_ERR(th)) {
> >  		printk(KERN_WARNING USB_STORAGE 
> >  		       "Unable to start the device-scanning
> > thread\n");
> > +		initdev_probe_done(BOOTDEV_BLOCK_MASK);
> 
> the same question with above.

Same answer.

> Lei Ming

Thanks!

David VomLehn
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ming Lei May 5, 2009, 4:05 a.m. UTC | #3
2009/5/5 David VomLehn <dvomlehn@cisco.com>:
> On Fri, May 01, 2009 at 11:55:39PM -0400, Ming Lei wrote:
>> On Fri, 1 May 2009 19:30:00 -0700
>> David VomLehn <dvomlehn@cisco.com> wrote:
>>
>> > From: Alan Stern <stern@rowland.harvard.edu
>> > diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
>> > index 6f51ca4..735b061 100644
>> > --- a/drivers/scsi/scsi_scan.c
>> > +++ b/drivers/scsi/scsi_scan.c
> ...
>> > @@ -1834,6 +1834,7 @@ static int do_scan_async(void *_data)
>> >     struct async_scan_data *data = _data;
>> >     do_scsi_scan_host(data->shost);
>> >     scsi_finish_async_scan(data);
>> > +   initdev_probe_done(BOOTDEV_BLOCK_MASK);
>>
>> Which code are waiting for the block device's probe done?
>
> None yet. That remains to be done.
>

Would you mind submitting  the code path of waitting for probe done to allow a
intact review?  Without the waitting code, it is a a little difficult
to undersand or verify
your patch, IMHO.

Thanks
David VomLehn June 5, 2009, 5:55 p.m. UTC | #4
On Tue, May 05, 2009 at 12:05:19AM -0400, Ming Lei wrote:
> 2009/5/5 David VomLehn <dvomlehn@cisco.com>:
> > On Fri, May 01, 2009 at 11:55:39PM -0400, Ming Lei wrote:
> >> On Fri, 1 May 2009 19:30:00 -0700
> >> David VomLehn <dvomlehn@cisco.com> wrote:
> >>
> >> > From: Alan Stern <stern@rowland.harvard.edu
> >> > diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> >> > index 6f51ca4..735b061 100644
> >> > --- a/drivers/scsi/scsi_scan.c
> >> > +++ b/drivers/scsi/scsi_scan.c
> > ...
> >> > @@ -1834,6 +1834,7 @@ static int do_scan_async(void *_data)
> >> >     struct async_scan_data *data = _data;
> >> >     do_scsi_scan_host(data->shost);
> >> >     scsi_finish_async_scan(data);
> >> > +   initdev_probe_done(BOOTDEV_BLOCK_MASK);
> >>
> >> Which code are waiting for the block device's probe done?
> >
> > None yet. That remains to be done.
> >
> 
> Would you mind submitting  the code path of waitting for probe done to allow a
> intact review?  Without the waitting code, it is a a little difficult
> to undersand or verify
> your patch, IMHO.

This will be in the next spin of the patch, coming soon (possibly today).

> Thanks
> Lei Ming

David VomLehn
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 6f51ca4..735b061 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -1834,6 +1834,7 @@  static int do_scan_async(void *_data)
 	struct async_scan_data *data = _data;
 	do_scsi_scan_host(data->shost);
 	scsi_finish_async_scan(data);
+	initdev_probe_done(BOOTDEV_BLOCK_MASK);
 	return 0;
 }
 
@@ -1855,6 +1856,7 @@  void scsi_scan_host(struct Scsi_Host *shost)
 		return;
 	}
 
+	initdev_found(BOOTDEV_BLOCK_MASK);
 	p = kthread_run(do_scan_async, data, "scsi_scan_%d", shost->host_no);
 	if (IS_ERR(p))
 		do_scan_async(data);
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 8060b85..ea7abab 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -837,6 +837,7 @@  static int usb_stor_scan_thread(void * __us)
 		/* Should we unbind if no devices were detected? */
 	}
 
+	initdev_probe_done(BOOTDEV_BLOCK_MASK);
 	complete_and_exit(&us->scanning_done, 0);
 }
 
@@ -937,10 +938,12 @@  int usb_stor_probe2(struct us_data *us)
 	}
 
 	/* Start up the thread for delayed SCSI-device scanning */
+	initdev_found(BOOTDEV_BLOCK_MASK);
 	th = kthread_create(usb_stor_scan_thread, us, "usb-stor-scan");
 	if (IS_ERR(th)) {
 		printk(KERN_WARNING USB_STORAGE 
 		       "Unable to start the device-scanning thread\n");
+		initdev_probe_done(BOOTDEV_BLOCK_MASK);
 		complete(&us->scanning_done);
 		quiesce_and_remove_host(us);
 		result = PTR_ERR(th);