Re: [PATCH] sunrpc/nfs: don't allow TASK_KILLABLE sleeps to block the freezer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 1 Dec 2011 22:52:13 +0100
"Rafael J. Wysocki" <rjw@xxxxxxx> wrote:

> On Thursday, December 01, 2011, Jeff Layton wrote:
> > Allow the freezer to skip wait_on_bit_killable sleeps in the sunrpc
> > layer. This should allow suspend and hibernate events to proceed, even
> > when there are RPC's pending on the wire.
> > 
> > Also, wrap the TASK_KILLABLE sleeps in NFS layer in freezer_do_not_count
> > and freezer_count calls. This allows the freezer to skip tasks that are
> > sleeping while looping on EJUKEBOX or NFS4ERR_DELAY sorts of errors.
> > 
> > Rafael, I've gone ahead and combined the two patches into one here
> > and rebased this on top of the pm-freezer branch. Let me know if you'd
> > prefer to keep it as two patches.
> 
> One patch is just fine for me, applied to linux-pm/linux-next.
> 
> Thanks,
> Rafael
> 
> 

-------------------[snip]----------------

> > +
> > +/* Like schedule_timeout_killable(), but should not block the freezer. */
> > +#define freezable_schedule_timeout_killable(timeout)			\
> > +({									\
> > +	freezer_do_not_count();						\
> > +	schedule_timeout_killable(timeout);				\
> > +	freezer_count();						\
> > +})
> > +


Whoops...I just noticed a problem with this patch.

freezable_schedule_timeout_killable does not return the return code
from schedule_timeout_killable. Would you prefer for me to respin this
patch, or send a new patch on top of this one that just fixes that bug?

-- 
Jeff Layton <jlayton@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux