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

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
Loading
Loading
Loading
Loading
+16 −24
Original line number Diff line number Diff line
@@ -885,33 +885,18 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,
/*
 * File creation. Allocate an inode, and we're done..
 */
static int do_hugetlbfs_mknod(struct inode *dir,
			struct dentry *dentry,
			umode_t mode,
			dev_t dev,
			bool tmpfile)
static int hugetlbfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
			   struct dentry *dentry, umode_t mode, dev_t dev)
{
	struct inode *inode;
	int error = -ENOSPC;

	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);
		if (tmpfile) {
			d_tmpfile(dentry, inode);
		} else {
	d_instantiate(dentry, inode);
	dget(dentry);/* Extra count - pin the dentry in core */
		}
		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);
	return 0;
}

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,
			     struct inode *dir, struct dentry *dentry,
			     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,