btrfs: add BTRFS_IOC_ENCODED_WRITE
[platform/kernel/linux-starfive.git] / fs / btrfs / ordered-data.c
index 2ce7a4b..1957b14 100644 (file)
@@ -522,9 +522,15 @@ void btrfs_remove_ordered_extent(struct btrfs_inode *btrfs_inode,
        spin_lock(&btrfs_inode->lock);
        btrfs_mod_outstanding_extents(btrfs_inode, -1);
        spin_unlock(&btrfs_inode->lock);
-       if (root != fs_info->tree_root)
-               btrfs_delalloc_release_metadata(btrfs_inode, entry->num_bytes,
-                                               false);
+       if (root != fs_info->tree_root) {
+               u64 release;
+
+               if (test_bit(BTRFS_ORDERED_ENCODED, &entry->flags))
+                       release = entry->disk_num_bytes;
+               else
+                       release = entry->num_bytes;
+               btrfs_delalloc_release_metadata(btrfs_inode, release, false);
+       }
 
        percpu_counter_add_batch(&fs_info->ordered_bytes, -entry->num_bytes,
                                 fs_info->delalloc_batch);