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; |