On Tue, Oct 24, 2017 at 01:29:48AM +0300, Timofey Titovets wrote: > We need to call extent_range_clear_dirty_for_io() > on compression range to prevent application from changing > page content, while pages compressing. > > extent_range_clear_dirty_for_io() run on each loop iteration, > "(end - start)" can be much (up to 1024 times) bigger > then compression range (BTRFS_MAX_UNCOMPRESSED). > > That produce extra calls to page managment code. > > Fix that behaviour by call extent_range_clear_dirty_for_io() > only once. > > v1 -> v2: > - Make that more obviously and more safeprone > > v2 -> v3: > - Rebased on: > Btrfs: compress_file_range() remove dead variable num_bytes > - Update change log > - Add comments > > v3 -> v4: > - Rebased on: kdave for-next > - To avoid dirty bit clear/set behaviour change > call clear_bit once, istead of per compression range
This version looks safe to me. There's no functional difference if we redirty the pages repeatedly, but there's probably a noticeable runtime difference if we do it just once. Reviewed-by: David Sterba <dste...@suse.com> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html