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