diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2012-04-02 14:34:06 -0400 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-05-29 23:28:33 -0400 | 
| commit | b0b0382bb4904965a9e9fca77ad87514dfda0d1c (patch) | |
| tree | dc46873fa74e0d194e4a2571b16f0767e1919ae8 /fs/udf | |
| parent | 6d42e7e9f6d86ed4dfacde75a6cf515068f9749c (diff) | |
| download | linux-b0b0382bb4904965a9e9fca77ad87514dfda0d1c.tar.bz2 | |
->encode_fh() API change
pass inode + parent's inode or NULL instead of dentry + bool saying
whether we want the parent or not.
NOTE: that needs ceph fix folded in.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/udf')
| -rw-r--r-- | fs/udf/namei.c | 14 | 
1 files changed, 5 insertions, 9 deletions
| diff --git a/fs/udf/namei.c b/fs/udf/namei.c index a165c66e3eef..18024178ac4c 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -1260,16 +1260,15 @@ static struct dentry *udf_fh_to_parent(struct super_block *sb,  				 fid->udf.parent_partref,  				 fid->udf.parent_generation);  } -static int udf_encode_fh(struct dentry *de, __u32 *fh, int *lenp, -			 int connectable) +static int udf_encode_fh(struct inode *inode, __u32 *fh, int *lenp, +			 struct inode *parent)  {  	int len = *lenp; -	struct inode *inode =  de->d_inode;  	struct kernel_lb_addr location = UDF_I(inode)->i_location;  	struct fid *fid = (struct fid *)fh;  	int type = FILEID_UDF_WITHOUT_PARENT; -	if (connectable && (len < 5)) { +	if (parent && (len < 5)) {  		*lenp = 5;  		return 255;  	} else if (len < 3) { @@ -1282,14 +1281,11 @@ static int udf_encode_fh(struct dentry *de, __u32 *fh, int *lenp,  	fid->udf.partref = location.partitionReferenceNum;  	fid->udf.generation = inode->i_generation; -	if (connectable && !S_ISDIR(inode->i_mode)) { -		spin_lock(&de->d_lock); -		inode = de->d_parent->d_inode; -		location = UDF_I(inode)->i_location; +	if (parent) { +		location = UDF_I(parent)->i_location;  		fid->udf.parent_block = location.logicalBlockNum;  		fid->udf.parent_partref = location.partitionReferenceNum;  		fid->udf.parent_generation = inode->i_generation; -		spin_unlock(&de->d_lock);  		*lenp = 5;  		type = FILEID_UDF_WITH_PARENT;  	} |