Here is the second version of the FITRIM patchset. For background information consult the previous [0] post. Changes since v1:
* Dropped some cleanup patches as they have been merged in the meantime. * In Patch 2 switched list iteration to list_for_each_entry_safe in btrfs_cleanup_one_transaction. (Johanness Thumshirn) * Fixed a bug in Patch 12 which leads to infinite loop. Now find_first_clear_bit returns void since it doesn't have enough context to tell whether it exhausted the search space * Fixed kerneldoc format in Patch 11 (Johaness Thumshirn) * Rebased on latest misc-next branch * Further testing of the patchset with newly enabled shared/298 test - succeeds. [0] https://lore.kernel.org/linux-btrfs/20190130145102.4708-1-nbori...@suse.com/ Jeff Mahoney (2): btrfs: combine device update operations during transaction commit btrfs: replace pending/pinned chunks lists with io tree Nikolay Borisov (10): btrfs: Honour FITRIM range constraints during free space trim btrfs: Handle pending/pinned chunks before blockgroup relocation during device shrink btrfs: Rename and export clear_btree_io_tree btrfs: Populate ->orig_block_len during read_one_chunk btrfs: Introduce new bits for device allocation tree btrfs: Remove 'trans' argument from find_free_dev_extent(_start) btrfs: Factor out in_range macro btrfs: Optimize unallocated chunks discard btrfs: Implement find_first_clear_extent_bit btrfs: Switch btrfs_trim_free_extents to find_first_clear_extent_bit fs/btrfs/ctree.h | 8 +- fs/btrfs/dev-replace.c | 2 +- fs/btrfs/disk-io.c | 18 +-- fs/btrfs/extent-tree.c | 102 +++++-------- fs/btrfs/extent_io.c | 103 +++++++++++++- fs/btrfs/extent_io.h | 19 ++- fs/btrfs/extent_map.c | 38 +++++ fs/btrfs/extent_map.h | 1 - fs/btrfs/free-space-cache.c | 4 - fs/btrfs/transaction.c | 53 ++----- fs/btrfs/transaction.h | 2 +- fs/btrfs/volumes.c | 277 ++++++++++++++---------------------- fs/btrfs/volumes.h | 23 ++- 13 files changed, 332 insertions(+), 318 deletions(-) -- 2.17.1