mbox series

[00/16] Lock extents before pages

Message ID 20221115180034.8206-1-rgoldwyn@suse.de (mailing list archive)
Headers show
Series Lock extents before pages | expand

Message

Goldwyn Rodrigues Nov. 15, 2022, 6 p.m. UTC
The main idea is that instead of handling extent locks per page, lock
the extents before handling the pages. This will help in calling iomap
functions from within extent locks, so all page/folio handling is
performed by iomap code.

I want to know if there is any sequence which should be locked but isn't,
or vice versa.

It survived xfstests/btrfs tests for a single device.

Goldwyn Rodrigues (16):
  btrfs: check for range correctness while locking or setting extent
    bits
  btrfs: qgroup flush responsibility of the caller
  btrfs: wait ordered range before locking during truncate
  btrfs: lock extents while truncating
  btrfs: No need to lock extent while performing invalidate_folio()
  btrfs: Lock extents before pages in writepages
  btrfs: Lock extents before folio for read()s
  btrfs: Lock extents before pages for buffered write()
  btrfs: lock/unlock extents while creation/end of async_chunk
  btrfs: decide early if range should be async
  btrfs: lock extents before pages - defrag
  btrfs: Perform memory faults under locked extent
  btrfs: writepage fixup lock rearrangement
  btrfs: lock extent before pages for encoded read ioctls
  btrfs: lock extent before pages in encoded write
  btrfs: btree_writepages lock extents before pages

 fs/btrfs/block-group.c    |   2 +-
 fs/btrfs/compression.c    |   9 +-
 fs/btrfs/defrag.c         |  48 ++-----
 fs/btrfs/delalloc-space.c |  17 +--
 fs/btrfs/delalloc-space.h |   5 +-
 fs/btrfs/disk-io.c        |  28 +++-
 fs/btrfs/extent-io-tree.c |   6 +
 fs/btrfs/extent_io.c      |  73 +----------
 fs/btrfs/extent_io.h      |   2 -
 fs/btrfs/file.c           | 136 ++++++++++----------
 fs/btrfs/inode.c          | 264 ++++++++++++++++++++------------------
 fs/btrfs/ordered-data.c   |   3 +
 fs/btrfs/qgroup.c         |  27 +---
 fs/btrfs/qgroup.h         |  16 +--
 fs/btrfs/relocation.c     |   3 +-
 fs/btrfs/root-tree.c      |   3 +-
 16 files changed, 277 insertions(+), 365 deletions(-)