From: Amir Goldstein <amir73il@gmail.com>
To: Jan Kara <jack@suse.cz>
Cc: Matthew Bobrowski <mbobrowski@mbobrowski.org>,
linux-fsdevel@vger.kernel.org
Subject: [PATCH v2 3/5] fsnotify: simplify API for filename events
Date: Wed, 14 Nov 2018 19:43:42 +0200 [thread overview]
Message-ID: <20181114174344.17530-4-amir73il@gmail.com> (raw)
In-Reply-To: <20181114174344.17530-1-amir73il@gmail.com>
Do not pass redundant parent inode arg.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
arch/powerpc/platforms/cell/spufs/inode.c | 2 +-
fs/btrfs/ioctl.c | 2 +-
fs/debugfs/inode.c | 6 +++---
fs/devpts/inode.c | 2 +-
fs/namei.c | 18 +++++++++---------
fs/ocfs2/refcounttree.c | 2 +-
fs/tracefs/inode.c | 4 ++--
include/linux/fsnotify.h | 20 +++++++++++++-------
net/sunrpc/rpc_pipe.c | 6 +++---
9 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index db329d4bf1c3..a40de703f586 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -587,7 +587,7 @@ long spufs_create(struct path *path, struct dentry *dentry,
ret = spufs_create_context(dir, dentry, path->mnt, flags, mode,
filp);
if (ret >= 0)
- fsnotify_mkdir(dir, dentry);
+ fsnotify_mkdir(dentry);
return ret;
}
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 802a628e9f7d..8af6258cb0a2 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -979,7 +979,7 @@ static noinline int btrfs_mksubvol(const struct path *parent,
async_transid, inherit);
}
if (!error)
- fsnotify_mkdir(dir, dentry);
+ fsnotify_mkdir(dentry);
out_up_read:
up_read(&fs_info->subvol_sem);
out_dput:
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 13b01351dd1c..ca9945f7db59 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -361,7 +361,7 @@ static struct dentry *__debugfs_create_file(const char *name, umode_t mode,
DEBUGFS_FSDATA_IS_REAL_FOPS_BIT);
d_instantiate(dentry, inode);
- fsnotify_create(d_inode(dentry->d_parent), dentry);
+ fsnotify_create(dentry);
return end_creating(dentry);
}
@@ -520,7 +520,7 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
inc_nlink(inode);
d_instantiate(dentry, inode);
inc_nlink(d_inode(dentry->d_parent));
- fsnotify_mkdir(d_inode(dentry->d_parent), dentry);
+ fsnotify_mkdir(dentry);
return end_creating(dentry);
}
EXPORT_SYMBOL_GPL(debugfs_create_dir);
@@ -559,7 +559,7 @@ struct dentry *debugfs_create_automount(const char *name,
inc_nlink(inode);
d_instantiate(dentry, inode);
inc_nlink(d_inode(dentry->d_parent));
- fsnotify_mkdir(d_inode(dentry->d_parent), dentry);
+ fsnotify_mkdir(dentry);
return end_creating(dentry);
}
EXPORT_SYMBOL(debugfs_create_automount);
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index c53814539070..f15a33399a5b 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -589,7 +589,7 @@ struct dentry *devpts_pty_new(struct pts_fs_info *fsi, int index, void *priv)
if (dentry) {
dentry->d_fsdata = priv;
d_add(dentry, inode);
- fsnotify_create(d_inode(root), dentry);
+ fsnotify_create(dentry);
} else {
iput(inode);
dentry = ERR_PTR(-ENOMEM);
diff --git a/fs/namei.c b/fs/namei.c
index 0cab6494978c..1d743adf90a0 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2911,7 +2911,7 @@ int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
return error;
error = dir->i_op->create(dir, dentry, mode, want_excl);
if (!error)
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return error;
}
EXPORT_SYMBOL(vfs_create);
@@ -2932,7 +2932,7 @@ int vfs_mkobj(struct dentry *dentry, umode_t mode,
return error;
error = f(dentry, mode, arg);
if (!error)
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return error;
}
EXPORT_SYMBOL(vfs_mkobj);
@@ -3081,7 +3081,7 @@ static int atomic_open(struct nameidata *nd, struct dentry *dentry,
int acc_mode = op->acc_mode;
if (file->f_mode & FMODE_CREATED) {
WARN_ON(!(open_flag & O_CREAT));
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
acc_mode = 0;
}
error = may_open(&file->f_path, acc_mode, open_flag);
@@ -3095,7 +3095,7 @@ static int atomic_open(struct nameidata *nd, struct dentry *dentry,
dentry = file->f_path.dentry;
}
if (file->f_mode & FMODE_CREATED)
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
if (unlikely(d_is_negative(dentry))) {
error = -ENOENT;
} else {
@@ -3235,7 +3235,7 @@ static int lookup_open(struct nameidata *nd, struct path *path,
open_flag & O_EXCL);
if (error)
goto out_dput;
- fsnotify_create(dir_inode, dentry);
+ fsnotify_create(dentry);
}
if (unlikely(create_error) && !dentry->d_inode) {
error = create_error;
@@ -3718,7 +3718,7 @@ int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
error = dir->i_op->mknod(dir, dentry, mode, dev);
if (!error)
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return error;
}
EXPORT_SYMBOL(vfs_mknod);
@@ -3816,7 +3816,7 @@ int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
error = dir->i_op->mkdir(dir, dentry, mode);
if (!error)
- fsnotify_mkdir(dir, dentry);
+ fsnotify_mkdir(dentry);
return error;
}
EXPORT_SYMBOL(vfs_mkdir);
@@ -4126,7 +4126,7 @@ int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
error = dir->i_op->symlink(dir, dentry, oldname);
if (!error)
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return error;
}
EXPORT_SYMBOL(vfs_symlink);
@@ -4248,7 +4248,7 @@ int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
}
inode_unlock(inode);
if (!error)
- fsnotify_link(dir, inode, new_dentry);
+ fsnotify_link(inode, new_dentry);
return error;
}
EXPORT_SYMBOL(vfs_link);
diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c
index a35259eebc56..7ff695d1a3e4 100644
--- a/fs/ocfs2/refcounttree.c
+++ b/fs/ocfs2/refcounttree.c
@@ -4417,7 +4417,7 @@ static int ocfs2_vfs_reflink(struct dentry *old_dentry, struct inode *dir,
error = ocfs2_reflink(old_dentry, dir, new_dentry, preserve);
inode_unlock(inode);
if (!error)
- fsnotify_create(dir, new_dentry);
+ fsnotify_create(new_dentry);
return error;
}
/*
diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c
index 7098c49f3693..4644ddc77595 100644
--- a/fs/tracefs/inode.c
+++ b/fs/tracefs/inode.c
@@ -410,7 +410,7 @@ struct dentry *tracefs_create_file(const char *name, umode_t mode,
inode->i_fop = fops ? fops : &tracefs_file_operations;
inode->i_private = data;
d_instantiate(dentry, inode);
- fsnotify_create(dentry->d_parent->d_inode, dentry);
+ fsnotify_create(dentry);
return end_creating(dentry);
}
@@ -435,7 +435,7 @@ static struct dentry *__create_dir(const char *name, struct dentry *parent,
inc_nlink(inode);
d_instantiate(dentry, inode);
inc_nlink(dentry->d_parent->d_inode);
- fsnotify_mkdir(dentry->d_parent->d_inode, dentry);
+ fsnotify_mkdir(dentry);
return end_creating(dentry);
}
diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h
index d00ec5838d6e..4fb2fa0b31d2 100644
--- a/include/linux/fsnotify.h
+++ b/include/linux/fsnotify.h
@@ -63,6 +63,12 @@ static inline int fsnotify_path(struct inode *inode, const struct path *path,
return fsnotify(inode, mask, path, FSNOTIFY_EVENT_PATH, NULL, 0);
}
+static inline void audit_dentry_child(const struct dentry *dentry,
+ const unsigned char type)
+{
+ audit_inode_child(d_inode(dentry->d_parent), dentry, type);
+}
+
/* Simple call site for access decisions */
static inline int fsnotify_perm(struct file *file, int mask)
{
@@ -129,7 +135,7 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir,
if (source)
fsnotify(source, FS_MOVE_SELF, moved, FSNOTIFY_EVENT_DENTRY, NULL, 0);
- audit_inode_child(new_dir, moved, AUDIT_TYPE_CHILD_CREATE);
+ audit_dentry_child(moved, AUDIT_TYPE_CHILD_CREATE);
}
/*
@@ -173,9 +179,9 @@ static inline void fsnotify_inoderemove(struct inode *inode)
/*
* fsnotify_create - 'name' was linked in
*/
-static inline void fsnotify_create(struct inode *inode, struct dentry *dentry)
+static inline void fsnotify_create(struct dentry *dentry)
{
- audit_inode_child(inode, dentry, AUDIT_TYPE_CHILD_CREATE);
+ audit_dentry_child(dentry, AUDIT_TYPE_CHILD_CREATE);
fsnotify_d_name(dentry, FS_CREATE);
}
@@ -185,10 +191,10 @@ static inline void fsnotify_create(struct inode *inode, struct dentry *dentry)
* Note: We have to pass also the linked inode ptr as some filesystems leave
* new_dentry->d_inode NULL and instantiate inode pointer later
*/
-static inline void fsnotify_link(struct inode *dir, struct inode *inode, struct dentry *new_dentry)
+static inline void fsnotify_link(struct inode *inode, struct dentry *new_dentry)
{
fsnotify_link_count(inode);
- audit_inode_child(dir, new_dentry, AUDIT_TYPE_CHILD_CREATE);
+ audit_dentry_child(new_dentry, AUDIT_TYPE_CHILD_CREATE);
fsnotify_d_name(new_dentry, FS_CREATE);
}
@@ -196,11 +202,11 @@ static inline void fsnotify_link(struct inode *dir, struct inode *inode, struct
/*
* fsnotify_mkdir - directory 'name' was created
*/
-static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry)
+static inline void fsnotify_mkdir(struct dentry *dentry)
{
__u32 mask = (FS_CREATE | FS_ISDIR);
- audit_inode_child(inode, dentry, AUDIT_TYPE_CHILD_CREATE);
+ audit_dentry_child(dentry, AUDIT_TYPE_CHILD_CREATE);
fsnotify_d_name(dentry, mask);
}
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index 4fda18d47e2c..2dc1a0054c40 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -524,7 +524,7 @@ static int __rpc_create(struct inode *dir, struct dentry *dentry,
err = __rpc_create_common(dir, dentry, S_IFREG | mode, i_fop, private);
if (err)
return err;
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return 0;
}
@@ -539,7 +539,7 @@ static int __rpc_mkdir(struct inode *dir, struct dentry *dentry,
if (err)
return err;
inc_nlink(dir);
- fsnotify_mkdir(dir, dentry);
+ fsnotify_mkdir(dentry);
return 0;
}
@@ -594,7 +594,7 @@ static int __rpc_mkpipe_dentry(struct inode *dir, struct dentry *dentry,
rpci = RPC_I(d_inode(dentry));
rpci->private = private;
rpci->pipe = pipe;
- fsnotify_create(dir, dentry);
+ fsnotify_create(dentry);
return 0;
}
--
2.17.1
next prev parent reply other threads:[~2018-11-15 3:48 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-14 17:43 [PATCH v2 0/5] fsnotify prep work for fanotify dentry events Amir Goldstein
2018-11-14 17:43 ` [PATCH v2 1/5] fsnotify: pass dentry instead of inode when available Amir Goldstein
2018-11-20 11:32 ` Jan Kara
2018-11-20 14:36 ` Amir Goldstein
2018-11-21 12:51 ` Jan Kara
2018-11-21 16:13 ` Amir Goldstein
2018-11-22 9:52 ` Jan Kara
2018-11-22 12:36 ` Amir Goldstein
2018-11-22 13:26 ` Jan Kara
2018-11-22 15:18 ` Amir Goldstein
2018-11-22 19:42 ` Amir Goldstein
2018-11-23 12:56 ` Jan Kara
2018-11-23 13:42 ` Amir Goldstein
2018-11-23 12:52 ` Btrfs and fanotify filesystem watches Jan Kara
2018-11-23 13:34 ` Amir Goldstein
2018-11-23 17:53 ` Amir Goldstein
2018-11-27 8:35 ` Jan Kara
2018-11-14 17:43 ` [PATCH v2 2/5] fsnotify: annotate filename events Amir Goldstein
2018-11-20 11:59 ` Jan Kara
2018-11-20 14:58 ` Amir Goldstein
2018-11-21 13:18 ` Jan Kara
2018-11-21 15:40 ` Amir Goldstein
2018-11-22 7:45 ` Amir Goldstein
2018-11-22 9:33 ` Jan Kara
2018-11-22 8:40 ` Amir Goldstein
2018-11-14 17:43 ` Amir Goldstein [this message]
2018-11-14 17:43 ` [PATCH v2 4/5] fsnotify: make MOVED_FROM a dentry event Amir Goldstein
2018-11-20 12:45 ` Jan Kara
2018-11-14 17:43 ` [PATCH v2 5/5] fsnotify: send event type FSNOTIFY_EVENT_DENTRY to super block mark Amir Goldstein
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=20181114174344.17530-4-amir73il@gmail.com \
--to=amir73il@gmail.com \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=mbobrowski@mbobrowski.org \
/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).