Btrfs: fix number of transaction units required to create symlink
authorFilipe Manana <fdmanana@suse.com>
Thu, 31 Dec 2015 18:16:29 +0000 (18:16 +0000)
committerFilipe Manana <fdmanana@suse.com>
Thu, 31 Dec 2015 18:18:40 +0000 (18:18 +0000)
We weren't accounting for the insertion of an inline extent item for the
symlink inode nor that we need to update the parent inode item (through
the call to btrfs_add_nondir()). So fix this by including two more
transaction units.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
fs/btrfs/inode.c

index 2ea2e0edc956921e03e5cfe4d764390e9ed19a80..5dbc07a7c2201de94da7e2b46a8b80fd731433c2 100644 (file)
@@ -9660,9 +9660,11 @@ static int btrfs_symlink(struct inode *dir, struct dentry *dentry,
        /*
         * 2 items for inode item and ref
         * 2 items for dir items
+        * 1 item for updating parent inode item
+        * 1 item for the inline extent item
         * 1 item for xattr if selinux is on
         */
-       trans = btrfs_start_transaction(root, 5);
+       trans = btrfs_start_transaction(root, 7);
        if (IS_ERR(trans))
                return PTR_ERR(trans);