Sorry, please ignore this email, I find some tabs are lost after my paste and
copy, sorry for this. I will send another email.
----------------------------------------
> From: [email protected]
> To: [email protected]
> CC: [email protected]; [email protected]
> Subject: [PATCH]USB: usb-skeleton.c: add retry for nonblocking read
> Date: Thu, 18 Jul 2013 12:54:04 +0000
>
> From: Chen Wang [email protected]
>
> Updated skel_read() in usb-skeleton.c. When there is no data in the buffer,
> we would allow retry for both blocking and nonblocking cases. Original logic
> give retry only for blocking case. Actually we can also allow retry for
> nonblocking case. This will reuse the existing retry logic and handle the
> return of -EAGAIN in one place. Also if the data to be read is short and can
> be retrieved in quick time, we can also give a chance for nonblocking case
> and may catch the data and copy it back to userspace in one read() call too.
>
> Signed-off-by: Chen Wang [email protected]
> ---
> --- linux-3.11-rc1/drivers/usb/usb-skeleton.c.orig 2013-07-18
> 19:35:23.559780152 +0800
> +++ linux-3.11-rc1/drivers/usb/usb-skeleton.c 2013-07-18 19:38:11.546779516
> +0800
> @@ -325,9 +325,8 @@ retry:
> rv = skel_do_read_io(dev, count);
> if (rv < 0)
> goto exit;
> - else if (!(file->f_flags & O_NONBLOCK))
> + else
> goto retry;
> - rv = -EAGAIN;
> }
> exit:
> mutex_unlock(&dev->io_mutex);