[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20150914133030.634ece28@synchrony.poochiereds.net>
Date: Mon, 14 Sep 2015 13:30:30 -0400
From: Jeff Layton <jlayton@...chiereds.net>
To: Al Viro <viro@...IV.linux.org.uk>
Cc: bfields@...ldses.org, linux-nfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/4] fs: add fput_queue
On Mon, 14 Sep 2015 17:39:54 +0100
Al Viro <viro@...IV.linux.org.uk> wrote:
> On Mon, Sep 14, 2015 at 10:19:18AM -0400, Jeff Layton wrote:
> > > > + * borrow the infrastructure used by kthreads, and the task can then just
> > > > + * called flush_delayed_fput to ensure that the final fput has completed.
> > >
> > > Are you sure that it's not a typo?
> >
> > I don't think so, but it could be clearer. Something like this maybe?
> >
> > "then we can't queue it via task_work_add."
>
> Huh?
>
> task_work_add() callbacks *will* run before we return to userland
Right, but only just before. We need it to run before we try to set the
lease in the context of a fcntl() call. How about this text instead
then? I'll fix up the patch if this sounds reasonable:
"When fput is called in the context of a userland process, it'll queue
the actual work (__fput()) to be done just before returning to userland. In
some cases however, we need to ensure that the __fput runs before that
point. There is no safe way to flush work that has been queued via
task_work_add however, so to do this we borrow the delayed_fput
infrastructure that kthreads use. The userland process can use
fput_queue() on one or more struct files and then call
flush_delayed_fput() to ensure that they are completely closed."
--
Jeff Layton <jlayton@...chiereds.net>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists