diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/inode.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index cc6022842e0c..da2680263d9f 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -2589,6 +2589,13 @@ static void fill_inode_item(struct btrfs_trans_handle *trans, | |||
2589 | struct btrfs_inode_item *item, | 2589 | struct btrfs_inode_item *item, |
2590 | struct inode *inode) | 2590 | struct inode *inode) |
2591 | { | 2591 | { |
2592 | if (!leaf->map_token) | ||
2593 | map_private_extent_buffer(leaf, (unsigned long)item, | ||
2594 | sizeof(struct btrfs_inode_item), | ||
2595 | &leaf->map_token, &leaf->kaddr, | ||
2596 | &leaf->map_start, &leaf->map_len, | ||
2597 | KM_USER1); | ||
2598 | |||
2592 | btrfs_set_inode_uid(leaf, item, inode->i_uid); | 2599 | btrfs_set_inode_uid(leaf, item, inode->i_uid); |
2593 | btrfs_set_inode_gid(leaf, item, inode->i_gid); | 2600 | btrfs_set_inode_gid(leaf, item, inode->i_gid); |
2594 | btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size); | 2601 | btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size); |
@@ -2617,6 +2624,11 @@ static void fill_inode_item(struct btrfs_trans_handle *trans, | |||
2617 | btrfs_set_inode_rdev(leaf, item, inode->i_rdev); | 2624 | btrfs_set_inode_rdev(leaf, item, inode->i_rdev); |
2618 | btrfs_set_inode_flags(leaf, item, BTRFS_I(inode)->flags); | 2625 | btrfs_set_inode_flags(leaf, item, BTRFS_I(inode)->flags); |
2619 | btrfs_set_inode_block_group(leaf, item, BTRFS_I(inode)->block_group); | 2626 | btrfs_set_inode_block_group(leaf, item, BTRFS_I(inode)->block_group); |
2627 | |||
2628 | if (leaf->map_token) { | ||
2629 | unmap_extent_buffer(leaf, leaf->map_token, KM_USER1); | ||
2630 | leaf->map_token = NULL; | ||
2631 | } | ||
2620 | } | 2632 | } |
2621 | 2633 | ||
2622 | /* | 2634 | /* |