mbox series

[v5,0/7] btrfs: remove buffer heads form superblock handling

Message ID 20200207072005.22867-1-johannes.thumshirn@wdc.com (mailing list archive)
Headers show
Series btrfs: remove buffer heads form superblock handling | expand

Message

Johannes Thumshirn Feb. 7, 2020, 7:19 a.m. UTC
This patch series removes the use of buffer_heads from btrfs' super block read
and write paths. It also converts the integrity-checking code to only work
with pages and BIOs.

Compared to buffer heads, this gives us a leaner call path, as the
buffer_head code wraps around getting pages from the page-cache and adding
them to BIOs to submit.

The second patch removes buffer_heads from superblock reading. The forth
removes it from super_block writing and the subsequent patches remove the
buffer_heads from the integrity check code. Patches one and three are
preparatory patches. Patch number three could be merged into patch number two,
but I decided against it to not make the diff unreadable.

It's based on misc-next from Wednesday February 5, and doesn't show any
regressions in xfstests to the baseline.

Christoph also mentioned that block device mappings are never in highmem, so
we could get rid of the kmap()/kunmap() calls for these. But as this is
unrelated to the actual removal of the buffer heads, I'll address this in a
follow up series. 

Changes to v4:
- Ressurected Nikolay's patch exporting btrfs_release_disk_super()
- Incroporated feedback from Christoph

Changes to v3:
- Incroporated feedback from Christoph

Changes to v2:
- Removed patch #1 again
- Added Reviews from Josef
- Re-visited page locking, but not changes, it retains the same locking scheme
  the buffer_heads had
- Incroptorated comments from David regarding open-coding functions
- For more details see the idividual patches.

Changes to v1:
- Added patch #1
- Converted sb reading and integrity checking to use the page cache
- Added rationale behind the conversion to the commit messages.
- For more details see the idividual patches.



Johannes Thumshirn (6):
  btrfs: use the page-cache for super block reading
  btrfs: let btrfs_read_dev_super() return a btrfs_super_block
  btrfs: use BIOs instead of buffer_heads from superblock writeout
  btrfs: remove btrfsic_submit_bh()
  btrfs: remove buffer_heads from btrfsic_process_written_block()
  btrfs: remove buffer_heads form superblock mirror integrity checking

Nikolay Borisov (1):
  btrfs: Export btrfs_release_disk_super

 fs/btrfs/check-integrity.c | 215 +++++++++++--------------------------
 fs/btrfs/check-integrity.h |   2 -
 fs/btrfs/disk-io.c         | 192 +++++++++++++++++----------------
 fs/btrfs/disk-io.h         |   6 +-
 fs/btrfs/volumes.c         |  59 +++++-----
 fs/btrfs/volumes.h         |   3 +-
 6 files changed, 194 insertions(+), 283 deletions(-)