Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / fs / btrfs / inode.c
index f92def2467a61c6f2062408a6dba76f9f1b30ce7..85a1e5053fe63a9d8df6682da38198883e00bb22 100644 (file)
@@ -1960,8 +1960,8 @@ out:
                                      ordered_extent->len - 1, NULL, GFP_NOFS);
 
        /*
-        * This needs to be dont to make sure anybody waiting knows we are done
-        * upating everything for this ordered extent.
+        * This needs to be done to make sure anybody waiting knows we are done
+        * updating everything for this ordered extent.
         */
        btrfs_remove_ordered_extent(inode, ordered_extent);
 
@@ -2559,8 +2559,8 @@ static void btrfs_read_locked_inode(struct inode *inode)
                                    struct btrfs_inode_item);
        inode->i_mode = btrfs_inode_mode(leaf, inode_item);
        set_nlink(inode, btrfs_inode_nlink(leaf, inode_item));
-       inode->i_uid = btrfs_inode_uid(leaf, inode_item);
-       inode->i_gid = btrfs_inode_gid(leaf, inode_item);
+       i_uid_write(inode, btrfs_inode_uid(leaf, inode_item));
+       i_gid_write(inode, btrfs_inode_gid(leaf, inode_item));
        btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item));
 
        tspec = btrfs_inode_atime(inode_item);
@@ -2650,8 +2650,8 @@ static void fill_inode_item(struct btrfs_trans_handle *trans,
                            struct btrfs_inode_item *item,
                            struct inode *inode)
 {
-       btrfs_set_inode_uid(leaf, item, inode->i_uid);
-       btrfs_set_inode_gid(leaf, item, inode->i_gid);
+       btrfs_set_inode_uid(leaf, item, i_uid_read(inode));
+       btrfs_set_inode_gid(leaf, item, i_gid_read(inode));
        btrfs_set_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size);
        btrfs_set_inode_mode(leaf, item, inode->i_mode);
        btrfs_set_inode_nlink(leaf, item, inode->i_nlink);
@@ -7189,6 +7189,11 @@ static void init_once(void *foo)
 
 void btrfs_destroy_cachep(void)
 {
+       /*
+        * Make sure all delayed rcu free inodes are flushed before we
+        * destroy cache.
+        */
+       rcu_barrier();
        if (btrfs_inode_cachep)
                kmem_cache_destroy(btrfs_inode_cachep);
        if (btrfs_trans_handle_cachep)