diff options
Diffstat (limited to 'fs/exportfs/expfs.c')
| -rw-r--r-- | fs/exportfs/expfs.c | 19 | 
1 files changed, 14 insertions, 5 deletions
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c index 29ab099e3e0..606bb074c50 100644 --- a/fs/exportfs/expfs.c +++ b/fs/exportfs/expfs.c @@ -341,10 +341,21 @@ static int export_encode_fh(struct inode *inode, struct fid *fid,  	return type;  } +int exportfs_encode_inode_fh(struct inode *inode, struct fid *fid, +			     int *max_len, struct inode *parent) +{ +	const struct export_operations *nop = inode->i_sb->s_export_op; + +	if (nop && nop->encode_fh) +		return nop->encode_fh(inode, fid->raw, max_len, parent); + +	return export_encode_fh(inode, fid, max_len, parent); +} +EXPORT_SYMBOL_GPL(exportfs_encode_inode_fh); +  int exportfs_encode_fh(struct dentry *dentry, struct fid *fid, int *max_len,  		int connectable)  { -	const struct export_operations *nop = dentry->d_sb->s_export_op;  	int error;  	struct dentry *p = NULL;  	struct inode *inode = dentry->d_inode, *parent = NULL; @@ -357,10 +368,8 @@ int exportfs_encode_fh(struct dentry *dentry, struct fid *fid, int *max_len,  		 */  		parent = p->d_inode;  	} -	if (nop->encode_fh) -		error = nop->encode_fh(inode, fid->raw, max_len, parent); -	else -		error = export_encode_fh(inode, fid, max_len, parent); + +	error = exportfs_encode_inode_fh(inode, fid, max_len, parent);  	dput(p);  	return error;  |