aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exportfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/exportfs')
-rw-r--r--fs/exportfs/expfs.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
index 8adb32a9387a..813011aad700 100644
--- a/fs/exportfs/expfs.c
+++ b/fs/exportfs/expfs.c
@@ -434,29 +434,29 @@ out:
434 * can be used to check that it is still valid. It places them in the 434 * can be used to check that it is still valid. It places them in the
435 * filehandle fragment where export_decode_fh expects to find them. 435 * filehandle fragment where export_decode_fh expects to find them.
436 */ 436 */
437static int export_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len, 437static int export_encode_fh(struct dentry *dentry, struct fid *fid,
438 int connectable) 438 int *max_len, int connectable)
439{ 439{
440 struct inode * inode = dentry->d_inode; 440 struct inode * inode = dentry->d_inode;
441 int len = *max_len; 441 int len = *max_len;
442 int type = 1; 442 int type = FILEID_INO32_GEN;
443 443
444 if (len < 2 || (connectable && len < 4)) 444 if (len < 2 || (connectable && len < 4))
445 return 255; 445 return 255;
446 446
447 len = 2; 447 len = 2;
448 fh[0] = inode->i_ino; 448 fid->i32.ino = inode->i_ino;
449 fh[1] = inode->i_generation; 449 fid->i32.gen = inode->i_generation;
450 if (connectable && !S_ISDIR(inode->i_mode)) { 450 if (connectable && !S_ISDIR(inode->i_mode)) {
451 struct inode *parent; 451 struct inode *parent;
452 452
453 spin_lock(&dentry->d_lock); 453 spin_lock(&dentry->d_lock);
454 parent = dentry->d_parent->d_inode; 454 parent = dentry->d_parent->d_inode;
455 fh[2] = parent->i_ino; 455 fid->i32.parent_ino = parent->i_ino;
456 fh[3] = parent->i_generation; 456 fid->i32.parent_gen = parent->i_generation;
457 spin_unlock(&dentry->d_lock); 457 spin_unlock(&dentry->d_lock);
458 len = 4; 458 len = 4;
459 type = 2; 459 type = FILEID_INO32_GEN_PARENT;
460 } 460 }
461 *max_len = len; 461 *max_len = len;
462 return type; 462 return type;
@@ -494,34 +494,34 @@ static struct dentry *export_decode_fh(struct super_block *sb, __u32 *fh, int fh
494 acceptable, context); 494 acceptable, context);
495} 495}
496 496
497int exportfs_encode_fh(struct dentry *dentry, __u32 *fh, int *max_len, 497int exportfs_encode_fh(struct dentry *dentry, struct fid *fid, int *max_len,
498 int connectable) 498 int connectable)
499{ 499{
500 struct export_operations *nop = dentry->d_sb->s_export_op; 500 struct export_operations *nop = dentry->d_sb->s_export_op;
501 int error; 501 int error;
502 502
503 if (nop->encode_fh) 503 if (nop->encode_fh)
504 error = nop->encode_fh(dentry, fh, max_len, connectable); 504 error = nop->encode_fh(dentry, fid->raw, max_len, connectable);
505 else 505 else
506 error = export_encode_fh(dentry, fh, max_len, connectable); 506 error = export_encode_fh(dentry, fid, max_len, connectable);
507 507
508 return error; 508 return error;
509} 509}
510EXPORT_SYMBOL_GPL(exportfs_encode_fh); 510EXPORT_SYMBOL_GPL(exportfs_encode_fh);
511 511
512struct dentry *exportfs_decode_fh(struct vfsmount *mnt, __u32 *fh, int fh_len, 512struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
513 int fileid_type, int (*acceptable)(void *, struct dentry *), 513 int fh_len, int fileid_type,
514 void *context) 514 int (*acceptable)(void *, struct dentry *), void *context)
515{ 515{
516 struct export_operations *nop = mnt->mnt_sb->s_export_op; 516 struct export_operations *nop = mnt->mnt_sb->s_export_op;
517 struct dentry *result; 517 struct dentry *result;
518 518
519 if (nop->decode_fh) { 519 if (nop->decode_fh) {
520 result = nop->decode_fh(mnt->mnt_sb, fh, fh_len, fileid_type, 520 result = nop->decode_fh(mnt->mnt_sb, fid->raw, fh_len,
521 acceptable, context); 521 fileid_type, acceptable, context);
522 } else { 522 } else {
523 result = export_decode_fh(mnt->mnt_sb, fh, fh_len, fileid_type, 523 result = export_decode_fh(mnt->mnt_sb, fid->raw, fh_len,
524 acceptable, context); 524 fileid_type, acceptable, context);
525 } 525 }
526 526
527 return result; 527 return result;