diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-09-20 00:46:01 +0300 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-11-16 09:35:01 +0300 |
| commit | 1552ddc7fade1ae55af298580ef6c913b8db74bc (patch) | |
| tree | 1f3890ab31ceba18b37265f0bfb27afe9f76b0ab | |
| parent | 4051a9115ad24bb9a691774730ca9c1dd56de665 (diff) | |
| download | linux-1552ddc7fade1ae55af298580ef6c913b8db74bc.tar.xz | |
new helper: simple_done_creating()
should be paired with simple_start_creating() - unlocks parent and
drops dentry reference.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/libfs.c | 8 | ||||
| -rw-r--r-- | include/linux/fs.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/fs/libfs.c b/fs/libfs.c index d029aff41f66..a033f35493d0 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -2326,3 +2326,11 @@ struct dentry *simple_start_creating(struct dentry *parent, const char *name) return dentry; } EXPORT_SYMBOL(simple_start_creating); + +/* parent must have been held exclusive since simple_start_creating() */ +void simple_done_creating(struct dentry *child) +{ + inode_unlock(child->d_parent->d_inode); + dput(child); +} +EXPORT_SYMBOL(simple_done_creating); diff --git a/include/linux/fs.h b/include/linux/fs.h index 28bd4e8d3892..f5037c556f61 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3662,6 +3662,7 @@ extern int simple_fill_super(struct super_block *, unsigned long, extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count); extern void simple_release_fs(struct vfsmount **mount, int *count); struct dentry *simple_start_creating(struct dentry *, const char *); +void simple_done_creating(struct dentry *); extern ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos, const void *from, size_t available); |
