diff options
Diffstat (limited to 'fs/btrfs/inode.c')
| -rw-r--r-- | fs/btrfs/inode.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index ec154f954646..a6ed6944e50c 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
| @@ -1971,8 +1971,8 @@ out: | |||
| 1971 | ordered_extent->len - 1, NULL, GFP_NOFS); | 1971 | ordered_extent->len - 1, NULL, GFP_NOFS); |
| 1972 | 1972 | ||
| 1973 | /* | 1973 | /* |
| 1974 | * This needs to be dont to make sure anybody waiting knows we are done | 1974 | * This needs to be done to make sure anybody waiting knows we are done |
| 1975 | * upating everything for this ordered extent. | 1975 | * updating everything for this ordered extent. |
| 1976 | */ | 1976 | */ |
| 1977 | btrfs_remove_ordered_extent(inode, ordered_extent); | 1977 | btrfs_remove_ordered_extent(inode, ordered_extent); |
| 1978 | 1978 | ||
| @@ -2572,8 +2572,8 @@ static void btrfs_read_locked_inode(struct inode *inode) | |||
| 2572 | struct btrfs_inode_item); | 2572 | struct btrfs_inode_item); |
| 2573 | inode->i_mode = btrfs_inode_mode(leaf, inode_item); | 2573 | inode->i_mode = btrfs_inode_mode(leaf, inode_item); |
| 2574 | set_nlink(inode, btrfs_inode_nlink(leaf, inode_item)); | 2574 | set_nlink(inode, btrfs_inode_nlink(leaf, inode_item)); |
| 2575 | inode->i_uid = btrfs_inode_uid(leaf, inode_item); | 2575 | i_uid_write(inode, btrfs_inode_uid(leaf, inode_item)); |
| 2576 | inode->i_gid = btrfs_inode_gid(leaf, inode_item); | 2576 | i_gid_write(inode, btrfs_inode_gid(leaf, inode_item)); |
| 2577 | btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item)); | 2577 | btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item)); |
| 2578 | 2578 | ||
| 2579 | tspec = btrfs_inode_atime(inode_item); | 2579 | tspec = btrfs_inode_atime(inode_item); |
| @@ -2651,8 +2651,8 @@ static void fill_inode_item(struct btrfs_trans_handle *trans, | |||
| 2651 | struct btrfs_inode_item *item, | 2651 | struct btrfs_inode_item *item, |
| 2652 | struct inode *inode) | 2652 | struct inode *inode) |
| 2653 | { | 2653 | { |
| 2654 | btrfs_set_inode_uid(leaf, item, inode->i_uid); | 2654 | btrfs_set_inode_uid(leaf, item, i_uid_read(inode)); |
| 2655 | btrfs_set_inode_gid(leaf, item, inode->i_gid); | 2655 | btrfs_set_inode_gid(leaf, item, i_gid_read(inode)); |
| 2656 | btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size); | 2656 | btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size); |
| 2657 | btrfs_set_inode_mode(leaf, item, inode->i_mode); | 2657 | btrfs_set_inode_mode(leaf, item, inode->i_mode); |
| 2658 | btrfs_set_inode_nlink(leaf, item, inode->i_nlink); | 2658 | btrfs_set_inode_nlink(leaf, item, inode->i_nlink); |
| @@ -7076,6 +7076,11 @@ static void init_once(void *foo) | |||
| 7076 | 7076 | ||
| 7077 | void btrfs_destroy_cachep(void) | 7077 | void btrfs_destroy_cachep(void) |
| 7078 | { | 7078 | { |
| 7079 | /* | ||
| 7080 | * Make sure all delayed rcu free inodes are flushed before we | ||
| 7081 | * destroy cache. | ||
| 7082 | */ | ||
| 7083 | rcu_barrier(); | ||
| 7079 | if (btrfs_inode_cachep) | 7084 | if (btrfs_inode_cachep) |
| 7080 | kmem_cache_destroy(btrfs_inode_cachep); | 7085 | kmem_cache_destroy(btrfs_inode_cachep); |
| 7081 | if (btrfs_trans_handle_cachep) | 7086 | if (btrfs_trans_handle_cachep) |
