mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
convert mqueue
All modifications via normal VFS codepaths; just take care of making persistent in in mqueue_create_attr() and discardable in mqueue_unlink() and it doesn't need kill_litter_super() at all. mqueue_unlink() side is best handled by having it call simple_unlink() rather than duplicating its guts... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
12
ipc/mqueue.c
12
ipc/mqueue.c
@@ -599,8 +599,7 @@ static int mqueue_create_attr(struct dentry *dentry, umode_t mode, void *arg)
|
||||
dir->i_size += DIRENT_SIZE;
|
||||
simple_inode_init_ts(dir);
|
||||
|
||||
d_instantiate(dentry, inode);
|
||||
dget(dentry);
|
||||
d_make_persistent(dentry, inode);
|
||||
return 0;
|
||||
out_unlock:
|
||||
spin_unlock(&mq_lock);
|
||||
@@ -617,13 +616,8 @@ static int mqueue_create(struct mnt_idmap *idmap, struct inode *dir,
|
||||
|
||||
static int mqueue_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
struct inode *inode = d_inode(dentry);
|
||||
|
||||
simple_inode_init_ts(dir);
|
||||
dir->i_size -= DIRENT_SIZE;
|
||||
drop_nlink(inode);
|
||||
dput(dentry);
|
||||
return 0;
|
||||
return simple_unlink(dir, dentry);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1638,7 +1632,7 @@ static const struct fs_context_operations mqueue_fs_context_ops = {
|
||||
static struct file_system_type mqueue_fs_type = {
|
||||
.name = "mqueue",
|
||||
.init_fs_context = mqueue_init_fs_context,
|
||||
.kill_sb = kill_litter_super,
|
||||
.kill_sb = kill_anon_super,
|
||||
.fs_flags = FS_USERNS_MOUNT,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user