From: Jeff Layton <jlayton@redhat.com>
To: trond.myklebust@primarydata.com
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH v2 5/5] nfs: emit a fsnotify_nameremove call in sillyrename codepath
Date: Mon, 17 Mar 2014 07:06:58 -0400 [thread overview]
Message-ID: <1395054418-14504-6-git-send-email-jlayton@redhat.com> (raw)
In-Reply-To: <1395054418-14504-1-git-send-email-jlayton@redhat.com>
If a file is sillyrenamed, then the generic vfs_unlink code will skip
emitting fsnotify events for it.
This patch has the sillyrename code do that instead.
In truth this is a little bit odd since we aren't actually removing the
dentry per-se, but renaming it. Still, this is probably the right thing
to do since it's what userland apps expect to see when an unlink()
occurs or some file is renamed on top of the dentry.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
fs/nfs/unlink.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index 818ded7b7b74..de54129336c6 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -14,6 +14,7 @@
#include <linux/sched.h>
#include <linux/wait.h>
#include <linux/namei.h>
+#include <linux/fsnotify.h>
#include "internal.h"
#include "nfs4_fs.h"
@@ -465,8 +466,18 @@ nfs_async_rename(struct inode *old_dir, struct inode *new_dir,
static void
nfs_complete_sillyrename(struct rpc_task *task, struct nfs_renamedata *data)
{
- if (task->tk_status != 0)
- nfs_cancel_async_unlink(data->old_dentry);
+ struct dentry *dentry = data->old_dentry;
+
+ if (task->tk_status != 0) {
+ nfs_cancel_async_unlink(dentry);
+ return;
+ }
+
+ /*
+ * vfs_unlink and the like do not issue this when a file is
+ * sillyrenamed, so do it here.
+ */
+ fsnotify_nameremove(dentry, 0);
}
#define SILLYNAME_PREFIX ".nfs"
--
1.8.5.3
next prev parent reply other threads:[~2014-03-17 11:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-17 11:06 [PATCH v2 0/5] nfs: consolidate rename code into one set of functions Jeff Layton
2014-03-17 11:06 ` [PATCH v2 1/5] nfs: abstract out code needed to complete a sillyrename Jeff Layton
2014-03-17 11:06 ` [PATCH v2 2/5] nfs: make nfs_async_rename non-static Jeff Layton
2014-03-17 11:06 ` [PATCH v2 3/5] nfs: convert nfs_rename to use async_rename infrastructure Jeff Layton
2014-03-17 11:06 ` [PATCH v2 4/5] nfs: remove synchronous rename code Jeff Layton
2014-03-17 11:06 ` Jeff Layton [this message]
2014-03-17 16:00 ` [PATCH v2 0/5] nfs: consolidate rename code into one set of functions Anna Schumaker
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=1395054418-14504-6-git-send-email-jlayton@redhat.com \
--to=jlayton@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=trond.myklebust@primarydata.com \
/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).