public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] btrfs: make subpage reader/writer counter to be sector aware
@ 2024-02-17  6:29 Qu Wenruo
  2024-02-17  6:29 ` [PATCH v2 1/3] btrfs: unexport btrfs_subpage_start_writer() and btrfs_subpage_end_and_test_writer() Qu Wenruo
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Qu Wenruo @ 2024-02-17  6:29 UTC (permalink / raw)
  To: linux-btrfs

[CHANGELOG]
v2:
- Add btrfs_subpage_dump_bitmap() support for locked bitmap

- Add spinlock to protect the bitmap and locked bitmap operation
  In theory, this opeartion should always be single threaded, since the
  page is locked.
  But to keep the behavior consistent, use spin lock to protect bitmap
  and atomic reader/write updates.

This can be fetched from github, and the branch would be utilized for
all newer subpage delalloc update to support full sector sized
compression and zoned:
https://github.com/adam900710/linux/tree/subpage_delalloc

Currently we just trace subpage reader/writer counter using an atomic.

It's fine for the current subpage usage, but for the future, we want to
be aware of which subpage sector is locked inside a page, for proper
compression (we only support full page compression for now) and zoned support.

So here we introduce a new bitmap, called locked bitmap, to trace which
sector is locked for read/write.

And since reader/writer are both exclusive (to each other and to the same
type of lock), we can safely use the same bitmap for both reader and
writer.

In theory we can use the bitmap (the weight of the locked bitmap) to
indicate how many bytes are under reader/write lock, but it's not
possible yet:

- No weight support for bitmap range
  The bitmap API only provides bitmap_weight(), which always starts at
  bit 0.

- Need to distinguish read/write lock

Thus we still keep the reader/writer atomic counter.

Qu Wenruo (3):
  btrfs: unexport btrfs_subpage_start_writer() and
    btrfs_subpage_end_and_test_writer()
  btrfs: subpage: make reader lock to utilize bitmap
  btrfs: subpage: make writer lock to utilize bitmap

 fs/btrfs/subpage.c | 77 ++++++++++++++++++++++++++++++++++++----------
 fs/btrfs/subpage.h | 16 +++++++---
 2 files changed, 72 insertions(+), 21 deletions(-)

-- 
2.43.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-02-22 20:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-17  6:29 [PATCH v2 0/3] btrfs: make subpage reader/writer counter to be sector aware Qu Wenruo
2024-02-17  6:29 ` [PATCH v2 1/3] btrfs: unexport btrfs_subpage_start_writer() and btrfs_subpage_end_and_test_writer() Qu Wenruo
2024-02-17  6:29 ` [PATCH v2 2/3] btrfs: subpage: make reader lock to utilize bitmap Qu Wenruo
2024-02-17  6:29 ` [PATCH v2 3/3] btrfs: subpage: make writer " Qu Wenruo
2024-02-22 11:54 ` [PATCH v2 0/3] btrfs: make subpage reader/writer counter to be sector aware David Sterba
2024-02-22 20:34   ` Qu Wenruo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox