linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@poochiereds.net>
To: bfields@fieldses.org
Cc: linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	Al Viro <viro@ZenIV.linux.org.uk>
Subject: [PATCH v6 03/19] fs: add a kerneldoc header to fput
Date: Tue, 20 Oct 2015 13:33:36 -0400	[thread overview]
Message-ID: <1445362432-18869-4-git-send-email-jeff.layton@primarydata.com> (raw)
In-Reply-To: <1445362432-18869-1-git-send-email-jeff.layton@primarydata.com>

...and move its EXPORT_SYMBOL just below the function.

Cc: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
---
 fs/file_table.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/fs/file_table.c b/fs/file_table.c
index 52cc6803c07a..8cfeaee6323f 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -261,6 +261,25 @@ void flush_delayed_fput(void)
 	flush_delayed_work(&delayed_fput_work);
 }
 
+/**
+ * fput - put a struct file reference
+ * @file: file of which to put the reference
+ *
+ * This function decrements the reference count for the struct file reference,
+ * and queues it up for destruction if the count goes to zero. In the case of
+ * most tasks we queue it to the task_work infrastructure, which will be run
+ * just before the task returns back to userspace. kthreads however never
+ * return to userspace, so for those we add them to a global list and schedule
+ * a delayed workqueue job to do the final cleanup work.
+ *
+ * Why not just do it synchronously? __fput can involve taking locks of all
+ * sorts, and doing it synchronously means that the callers must take extra care
+ * not to deadlock. That can be very difficult to ensure, so by deferring it
+ * until just before return to userland or to the workqueue, we sidestep that
+ * nastiness. Also, __fput can be quite stack intensive, so doing a final fput
+ * has the possibility of blowing up if we don't take steps to ensure that we
+ * have enough stack space to make it work.
+ */
 void fput(struct file *file)
 {
 	if (atomic_long_dec_and_test(&file->f_count)) {
@@ -281,6 +300,7 @@ void fput(struct file *file)
 			schedule_delayed_work(&delayed_fput_work, 1);
 	}
 }
+EXPORT_SYMBOL(fput);
 
 /*
  * synchronous analog of fput(); for kernel threads that might be needed
@@ -299,7 +319,6 @@ void __fput_sync(struct file *file)
 	}
 }
 
-EXPORT_SYMBOL(fput);
 
 void put_filp(struct file *file)
 {
-- 
2.4.3


  parent reply	other threads:[~2015-10-20 17:34 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-20 17:33 [PATCH v6 00/19] nfsd: open file caching Jeff Layton
     [not found] ` <1445362432-18869-1-git-send-email-jeff.layton-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
2015-10-20 17:33   ` [PATCH v6 01/19] nfsd: move include of state.h from trace.c to trace.h Jeff Layton
     [not found]     ` <1445362432-18869-2-git-send-email-jeff.layton-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
2015-10-21 15:51       ` J. Bruce Fields
2015-10-20 17:33   ` [PATCH v6 02/19] fs: have flush_delayed_fput flush the workqueue job Jeff Layton
2015-10-20 17:33   ` [PATCH v6 05/19] fs: add fput_global Jeff Layton
2015-10-20 17:33   ` [PATCH v6 08/19] sunrpc: add a new cache_detail operation for when a cache is flushed Jeff Layton
2015-10-20 17:33   ` [PATCH v6 09/19] nfsd: add a new struct file caching facility to nfsd Jeff Layton
2015-10-20 17:33   ` [PATCH v6 10/19] nfsd: keep some rudimentary stats on nfsd_file cache Jeff Layton
2015-10-20 17:33   ` [PATCH v6 11/19] nfsd: allow filecache open to skip fh_verify check Jeff Layton
2015-10-20 17:33   ` [PATCH v6 12/19] nfsd: hook up nfsd_write to the new nfsd_file cache Jeff Layton
2015-10-20 17:33   ` [PATCH v6 13/19] nfsd: hook up nfsd_read to the " Jeff Layton
2015-10-20 17:33   ` [PATCH v6 14/19] nfsd: hook nfsd_commit up " Jeff Layton
2015-10-20 17:33   ` [PATCH v6 16/19] nfsd: have nfsd_test_lock use " Jeff Layton
2015-10-20 17:33   ` [PATCH v6 17/19] nfsd: convert fi_deleg_file and ls_file fields to nfsd_file Jeff Layton
2015-10-20 17:33   ` [PATCH v6 18/19] nfsd: hook up nfs4_preprocess_stateid_op to the nfsd_file cache Jeff Layton
2015-10-21 15:57   ` [PATCH v6 00/19] nfsd: open file caching J. Bruce Fields
2015-10-22 21:19   ` J. Bruce Fields
2015-10-23  0:21     ` Jeff Layton
2015-10-20 17:33 ` Jeff Layton [this message]
2015-10-20 17:33 ` [PATCH v6 04/19] fs: rename "delayed_fput" infrastructure to "fput_global" Jeff Layton
2015-10-20 17:33 ` [PATCH v6 06/19] fsnotify: export several symbols Jeff Layton
2015-10-20 17:33 ` [PATCH v6 07/19] locks: create a new notifier chain for lease attempts Jeff Layton
2015-10-20 17:33 ` [PATCH v6 15/19] nfsd: convert nfs4_file->fi_fds array to use nfsd_files Jeff Layton
2015-10-20 17:33 ` [PATCH v6 19/19] nfsd: rip out the raparms cache Jeff Layton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1445362432-18869-4-git-send-email-jeff.layton@primarydata.com \
    --to=jlayton@poochiereds.net \
    --cc=bfields@fieldses.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=viro@ZenIV.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).