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(-) -- 2.24.1
