diff options
Diffstat (limited to 'fs/udf/namei.c')
| -rw-r--r-- | fs/udf/namei.c | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 102c072c6bbf..5f6fc17d6bc5 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -594,6 +594,29 @@ static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode,  	return 0;  } +static int udf_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) +{ +	struct inode *inode; +	struct udf_inode_info *iinfo; +	int err; + +	inode = udf_new_inode(dir, mode, &err); +	if (!inode) +		return err; + +	iinfo = UDF_I(inode); +	if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) +		inode->i_data.a_ops = &udf_adinicb_aops; +	else +		inode->i_data.a_ops = &udf_aops; +	inode->i_op = &udf_file_inode_operations; +	inode->i_fop = &udf_file_operations; +	mark_inode_dirty(inode); + +	d_tmpfile(dentry, inode); +	return 0; +} +  static int udf_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,  		     dev_t rdev)  { @@ -1311,6 +1334,7 @@ const struct inode_operations udf_dir_inode_operations = {  	.rmdir				= udf_rmdir,  	.mknod				= udf_mknod,  	.rename				= udf_rename, +	.tmpfile			= udf_tmpfile,  };  const struct inode_operations udf_symlink_inode_operations = {  	.readlink	= generic_readlink,  | 

