On Friday 12 July 2013 04:49:54 WangChen wrote:
> Hi, Oliver,
> Regarding skel_write, I see your current desgin only refuse its execution  
> when> WRITES_IN_FLIGHT are on the fly, but this is not blocking IO due to 
> write() will not wait before callback returns, right? Do you think it's 
> unnecessary to support blocking IO on write or any special reason else?


        /*
         * limit the number of URBs in flight to stop a user from using up all
         * RAM
         */
        if (!(file->f_flags & O_NONBLOCK)) {
                if (down_interruptible(&dev->limit_sem)) {

The limit_sem will cause write() to wait for IO to finish,
if the limit is reached

                        retval = -ERESTARTSYS;
                        goto exit;
                }
        } else {
                if (down_trylock(&dev->limit_sem)) {
                        retval = -EAGAIN;

Unless non-blocking IO is used. In that case we return.

                        goto exit;
                }
        }

Blocking IO is perfectly well supported. To keep under the limit you don't
have to wait for the IO you started. Any IO will serve the purpose.

        Regards
                Oliver

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

Reply via email to