Commit 19ee5345 authored by Al Viro's avatar Al Viro Committed by Miklos Szeredi

hugetlbfs: cleanup mknod and tmpfile

Duplicate the few lines that are shared between hugetlbfs_mknod() and
hugetlbfs_tmpfile().

This is a prerequisite for sanely changing the signature of ->tmpfile().
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Reviewed-by: default avatarChristian Brauner (Microsoft) <brauner@kernel.org>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent 22873dea
...@@ -885,33 +885,18 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb, ...@@ -885,33 +885,18 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,
/* /*
* File creation. Allocate an inode, and we're done.. * File creation. Allocate an inode, and we're done..
*/ */
static int do_hugetlbfs_mknod(struct inode *dir, static int hugetlbfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
struct dentry *dentry, struct dentry *dentry, umode_t mode, dev_t dev)
umode_t mode,
dev_t dev,
bool tmpfile)
{ {
struct inode *inode; struct inode *inode;
int error = -ENOSPC;
inode = hugetlbfs_get_inode(dir->i_sb, dir, mode, dev); inode = hugetlbfs_get_inode(dir->i_sb, dir, mode, dev);
if (inode) { if (!inode)
return -ENOSPC;
dir->i_ctime = dir->i_mtime = current_time(dir); dir->i_ctime = dir->i_mtime = current_time(dir);
if (tmpfile) {
d_tmpfile(dentry, inode);
} else {
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
dget(dentry);/* Extra count - pin the dentry in core */ dget(dentry);/* Extra count - pin the dentry in core */
} return 0;
error = 0;
}
return error;
}
static int hugetlbfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
struct dentry *dentry, umode_t mode, dev_t dev)
{
return do_hugetlbfs_mknod(dir, dentry, mode, dev, false);
} }
static int hugetlbfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, static int hugetlbfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
...@@ -935,7 +920,14 @@ static int hugetlbfs_tmpfile(struct user_namespace *mnt_userns, ...@@ -935,7 +920,14 @@ static int hugetlbfs_tmpfile(struct user_namespace *mnt_userns,
struct inode *dir, struct dentry *dentry, struct inode *dir, struct dentry *dentry,
umode_t mode) umode_t mode)
{ {
return do_hugetlbfs_mknod(dir, dentry, mode | S_IFREG, 0, true); struct inode *inode;
inode = hugetlbfs_get_inode(dir->i_sb, dir, mode | S_IFREG, 0);
if (!inode)
return -ENOSPC;
dir->i_ctime = dir->i_mtime = current_time(dir);
d_tmpfile(dentry, inode);
return 0;
} }
static int hugetlbfs_symlink(struct user_namespace *mnt_userns, static int hugetlbfs_symlink(struct user_namespace *mnt_userns,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment