mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-25 23:02:51 -04:00
convert spufs
have spufs_new_file() use d_make_persistent() instead of d_add() and do an uncondition dput() in the caller; the rest is completely straightforward. [a braino in spufs_mkgang() fixed] Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -127,7 +127,7 @@ spufs_new_file(struct super_block *sb, struct dentry *dentry,
|
||||
inode->i_fop = fops;
|
||||
inode->i_size = size;
|
||||
inode->i_private = SPUFS_I(inode)->i_ctx = get_spu_context(ctx);
|
||||
d_add(dentry, inode);
|
||||
d_make_persistent(dentry, inode);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
@@ -163,10 +163,9 @@ static int spufs_fill_dir(struct dentry *dir,
|
||||
return -ENOMEM;
|
||||
ret = spufs_new_file(dir->d_sb, dentry, files->ops,
|
||||
files->mode & mode, files->size, ctx);
|
||||
if (ret) {
|
||||
dput(dentry);
|
||||
dput(dentry);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
files++;
|
||||
}
|
||||
return 0;
|
||||
@@ -241,11 +240,10 @@ spufs_mkdir(struct inode *dir, struct dentry *dentry, unsigned int flags,
|
||||
|
||||
inode_lock(inode);
|
||||
|
||||
dget(dentry);
|
||||
inc_nlink(dir);
|
||||
inc_nlink(inode);
|
||||
|
||||
d_instantiate(dentry, inode);
|
||||
d_make_persistent(dentry, inode);
|
||||
|
||||
if (flags & SPU_CREATE_NOSCHED)
|
||||
ret = spufs_fill_dir(dentry, spufs_dir_nosched_contents,
|
||||
@@ -479,10 +477,9 @@ spufs_mkgang(struct inode *dir, struct dentry *dentry, umode_t mode)
|
||||
inode->i_op = &simple_dir_inode_operations;
|
||||
inode->i_fop = &simple_dir_operations;
|
||||
|
||||
d_instantiate(dentry, inode);
|
||||
dget(dentry);
|
||||
inc_nlink(dir);
|
||||
inc_nlink(d_inode(dentry));
|
||||
inc_nlink(inode);
|
||||
d_make_persistent(dentry, inode);
|
||||
return ret;
|
||||
|
||||
out_iput:
|
||||
@@ -780,7 +777,7 @@ static struct file_system_type spufs_type = {
|
||||
.name = "spufs",
|
||||
.init_fs_context = spufs_init_fs_context,
|
||||
.parameters = spufs_fs_parameters,
|
||||
.kill_sb = kill_litter_super,
|
||||
.kill_sb = kill_anon_super,
|
||||
};
|
||||
MODULE_ALIAS_FS("spufs");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user