diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ada4d24ed11b..8bb013672aee 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -3632,25 +3632,28 @@ static void btrfs_read_locked_inode(struct inode *inode) | |||
3632 | BTRFS_I(inode)->generation = btrfs_inode_generation(leaf, inode_item); | 3632 | BTRFS_I(inode)->generation = btrfs_inode_generation(leaf, inode_item); |
3633 | BTRFS_I(inode)->last_trans = btrfs_inode_transid(leaf, inode_item); | 3633 | BTRFS_I(inode)->last_trans = btrfs_inode_transid(leaf, inode_item); |
3634 | 3634 | ||
3635 | inode->i_version = btrfs_inode_sequence(leaf, inode_item); | ||
3636 | inode->i_generation = BTRFS_I(inode)->generation; | ||
3637 | inode->i_rdev = 0; | ||
3638 | rdev = btrfs_inode_rdev(leaf, inode_item); | ||
3639 | |||
3640 | BTRFS_I(inode)->index_cnt = (u64)-1; | ||
3641 | BTRFS_I(inode)->flags = btrfs_inode_flags(leaf, inode_item); | ||
3642 | |||
3643 | cache_index: | ||
3635 | /* | 3644 | /* |
3636 | * If we were modified in the current generation and evicted from memory | 3645 | * If we were modified in the current generation and evicted from memory |
3637 | * and then re-read we need to do a full sync since we don't have any | 3646 | * and then re-read we need to do a full sync since we don't have any |
3638 | * idea about which extents were modified before we were evicted from | 3647 | * idea about which extents were modified before we were evicted from |
3639 | * cache. | 3648 | * cache. |
3649 | * | ||
3650 | * This is required for both inode re-read from disk and delayed inode | ||
3651 | * in delayed_nodes_tree. | ||
3640 | */ | 3652 | */ |
3641 | if (BTRFS_I(inode)->last_trans == root->fs_info->generation) | 3653 | if (BTRFS_I(inode)->last_trans == root->fs_info->generation) |
3642 | set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, | 3654 | set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, |
3643 | &BTRFS_I(inode)->runtime_flags); | 3655 | &BTRFS_I(inode)->runtime_flags); |
3644 | 3656 | ||
3645 | inode->i_version = btrfs_inode_sequence(leaf, inode_item); | ||
3646 | inode->i_generation = BTRFS_I(inode)->generation; | ||
3647 | inode->i_rdev = 0; | ||
3648 | rdev = btrfs_inode_rdev(leaf, inode_item); | ||
3649 | |||
3650 | BTRFS_I(inode)->index_cnt = (u64)-1; | ||
3651 | BTRFS_I(inode)->flags = btrfs_inode_flags(leaf, inode_item); | ||
3652 | |||
3653 | cache_index: | ||
3654 | path->slots[0]++; | 3657 | path->slots[0]++; |
3655 | if (inode->i_nlink != 1 || | 3658 | if (inode->i_nlink != 1 || |
3656 | path->slots[0] >= btrfs_header_nritems(leaf)) | 3659 | path->slots[0] >= btrfs_header_nritems(leaf)) |