Commit 94b77bd86f8ad458fa7870def78ec3a8a7caa986
1 parent
3d23985d6c
Exists in
master
and in
7 other branches
switch jfs to ->s_d_op, close exportfs races
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Showing 2 changed files with 4 additions and 12 deletions Side-by-side Diff
fs/jfs/namei.c
... | ... | @@ -1465,9 +1465,6 @@ |
1465 | 1465 | |
1466 | 1466 | jfs_info("jfs_lookup: name = %s", name); |
1467 | 1467 | |
1468 | - if (JFS_SBI(dip->i_sb)->mntflag & JFS_OS2) | |
1469 | - d_set_d_op(dentry, &jfs_ci_dentry_operations); | |
1470 | - | |
1471 | 1468 | if ((name[0] == '.') && (len == 1)) |
1472 | 1469 | inum = dip->i_ino; |
1473 | 1470 | else if (strcmp(name, "..") == 0) |
... | ... | @@ -1492,12 +1489,7 @@ |
1492 | 1489 | return ERR_CAST(ip); |
1493 | 1490 | } |
1494 | 1491 | |
1495 | - dentry = d_splice_alias(ip, dentry); | |
1496 | - | |
1497 | - if (dentry && (JFS_SBI(dip->i_sb)->mntflag & JFS_OS2)) | |
1498 | - d_set_d_op(dentry, &jfs_ci_dentry_operations); | |
1499 | - | |
1500 | - return dentry; | |
1492 | + return d_splice_alias(ip, dentry); | |
1501 | 1493 | } |
1502 | 1494 | |
1503 | 1495 | static struct inode *jfs_nfs_get_inode(struct super_block *sb, |
fs/jfs/super.c
... | ... | @@ -515,6 +515,9 @@ |
515 | 515 | |
516 | 516 | sb->s_magic = JFS_SUPER_MAGIC; |
517 | 517 | |
518 | + if (sbi->mntflag & JFS_OS2) | |
519 | + sb->s_d_op = &jfs_ci_dentry_operations; | |
520 | + | |
518 | 521 | inode = jfs_iget(sb, ROOT_I); |
519 | 522 | if (IS_ERR(inode)) { |
520 | 523 | ret = PTR_ERR(inode); |
... | ... | @@ -523,9 +526,6 @@ |
523 | 526 | sb->s_root = d_alloc_root(inode); |
524 | 527 | if (!sb->s_root) |
525 | 528 | goto out_no_root; |
526 | - | |
527 | - if (sbi->mntflag & JFS_OS2) | |
528 | - d_set_d_op(sb->s_root, &jfs_ci_dentry_operations); | |
529 | 529 | |
530 | 530 | /* logical blocks are represented by 40 bits in pxd_t, etc. */ |
531 | 531 | sb->s_maxbytes = ((u64) sb->s_blocksize) << 40; |