Merge branch 'drm-intel-next' of ssh://master.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / fs / btrfs / compression.c
index bfe42b0..8ec5d86 100644 (file)
@@ -338,6 +338,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
        u64 first_byte = disk_start;
        struct block_device *bdev;
        int ret;
+       int skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM;
 
        WARN_ON(start & ((u64)PAGE_CACHE_SIZE - 1));
        cb = kmalloc(compressed_bio_size(root, compressed_len), GFP_NOFS);
@@ -392,8 +393,11 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
                        ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0);
                        BUG_ON(ret);
 
-                       ret = btrfs_csum_one_bio(root, inode, bio, start, 1);
-                       BUG_ON(ret);
+                       if (!skip_sum) {
+                               ret = btrfs_csum_one_bio(root, inode, bio,
+                                                        start, 1);
+                               BUG_ON(ret);
+                       }
 
                        ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
                        BUG_ON(ret);
@@ -418,8 +422,10 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
        ret = btrfs_bio_wq_end_io(root->fs_info, bio, 0);
        BUG_ON(ret);
 
-       ret = btrfs_csum_one_bio(root, inode, bio, start, 1);
-       BUG_ON(ret);
+       if (!skip_sum) {
+               ret = btrfs_csum_one_bio(root, inode, bio, start, 1);
+               BUG_ON(ret);
+       }
 
        ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
        BUG_ON(ret);