diff options
| author | Christian Brauner <brauner@kernel.org> | 2025-02-27 12:33:26 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-03-05 11:52:50 +0100 |
| commit | 21432f9b5eda2f531dc029d8422280106834d5f7 (patch) | |
| tree | a3b7bfc30caa76f4c92d92ef270cc5baa2536209 /include | |
| parent | 71628584df835970d25c334ea03c012daccec4c1 (diff) | |
| parent | c54b386969a58151765a9ffaaa0438e7b580283f (diff) | |
Merge patch series "Change inode_operations.mkdir to return struct dentry *"
NeilBrown <neilb@suse.de> says:
This revised series contains a few clean-ups as requested by various
people but no substantial changes.
I reviewed the mkdir functions in many (all?) filesystems and found a
few that use d_instantiate() on an unlocked inode (after
unlock_new_inode()) and also support export_operations. These could
potentially call d_instantiate() on a directory inode which is already
attached to a dentry, though making that happen would usually require
guessing the filehandle correctly. I haven't tried to address those
here, (this patch set doesn't make that situation any worse) but I may
in the future.
* patches from https://lore.kernel.org/r/20250227013949.536172-2-neilb@suse.de:
VFS: Change vfs_mkdir() to return the dentry.
nfs: change mkdir inode_operation to return alternate dentry if needed.
fuse: return correct dentry for ->mkdir
ceph: return the correct dentry on mkdir
hostfs: store inode in dentry after mkdir if possible.
Change inode_operations.mkdir to return struct dentry *
Link: https://lore.kernel.org/r/20250227013949.536172-2-neilb@suse.de
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/fs.h | 8 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 2c3b2f8a621f..beae24bc990d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1981,8 +1981,8 @@ bool inode_owner_or_capable(struct mnt_idmap *idmap, */ int vfs_create(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool); -int vfs_mkdir(struct mnt_idmap *, struct inode *, - struct dentry *, umode_t); +struct dentry *vfs_mkdir(struct mnt_idmap *, struct inode *, + struct dentry *, umode_t); int vfs_mknod(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t); int vfs_symlink(struct mnt_idmap *, struct inode *, @@ -2211,8 +2211,8 @@ struct inode_operations { int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct mnt_idmap *, struct inode *,struct dentry *, const char *); - int (*mkdir) (struct mnt_idmap *, struct inode *,struct dentry *, - umode_t); + struct dentry *(*mkdir) (struct mnt_idmap *, struct inode *, + struct dentry *, umode_t); int (*rmdir) (struct inode *,struct dentry *); int (*mknod) (struct mnt_idmap *, struct inode *,struct dentry *, umode_t,dev_t); diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 9155a6ffc370..d66c61cbbd1d 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -1802,7 +1802,7 @@ struct nfs_rpc_ops { int (*link) (struct inode *, struct inode *, const struct qstr *); int (*symlink) (struct inode *, struct dentry *, struct folio *, unsigned int, struct iattr *); - int (*mkdir) (struct inode *, struct dentry *, struct iattr *); + struct dentry *(*mkdir) (struct inode *, struct dentry *, struct iattr *); int (*rmdir) (struct inode *, const struct qstr *); int (*readdir) (struct nfs_readdir_arg *, struct nfs_readdir_res *); int (*mknod) (struct inode *, struct dentry *, struct iattr *, |
