bool freespace_inode;
bool truncated = false;
bool clear_reserved_extent = true;
- unsigned int clear_bits = EXTENT_DEFRAG;
+ unsigned int clear_bits = 0;
start = ordered_extent->file_offset;
end = start + ordered_extent->num_bytes - 1;
!test_bit(BTRFS_ORDERED_ENCODED, &ordered_extent->flags))
clear_bits |= EXTENT_DELALLOC_NEW;
+ if (!test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags))
+ clear_bits |= EXTENT_DEFRAG;
+
freespace_inode = btrfs_is_free_space_inode(inode);
if (!freespace_inode)
btrfs_lockdep_acquire(fs_info, btrfs_ordered_extent);
goto out;
}
out:
- btrfs_clear_extent_bit(&inode->io_tree, start, end, clear_bits,
- &cached_state);
+ if (clear_bits)
+ btrfs_clear_extent_bit(&inode->io_tree, start, end, clear_bits,
+ &cached_state);
if (trans)
btrfs_end_transaction(trans);