Merge branch 'for-3.8' of git://linux-nfs.org/~bfields/linux
[~shefty/rdma-dev.git] / fs / exportfs / expfs.c
index f1f1c59c2966cc6aac49fa103cad3012bb495044..5df4bb4aab145dff9edc58408f2c1d923a5c8552 100644 (file)
@@ -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;