Re: [PATCH 0/3] btrfs: Replace kmap() with kmap_local_page()
From: David Sterba
Date: Wed Jun 01 2022 - 09:30:19 EST
On Tue, May 31, 2022 at 04:53:32PM +0200, Fabio M. De Francesco wrote:
> This is the first series of patches aimed towards the conversion of Btrfs
> filesystem from the use of kmap() to kmap_local_page().
We've already had patches converting kmaps and you're changing the last
ones, so this is could be the last series, with two exceptions.
1) You've changed lzo.c and zlib. but the same kmap/kunmap pattern is
used in zstd.c.
2) kmap_atomic in inode.c, so that's technically not kmap but it's said
to be deprecated and also can be replaced by kmap_local_page. The
context in check_compressed_csum is atomic (in end io) so the kmap
hasn't been used there.
> tweed32:~ # btrfs check -p ~zoek/dev/btrfs.file
That won't verify if the kmap conversion is OK, it's a runtime thing
while 'check' verifies the data on device. Have you run any kind of
stress test with enabled compression before running the check?
> Opening filesystem to check...
> Checking filesystem on /home/zoek/dev/btrfs.file
> UUID: 897d65c5-1167-45b4-b811-2bfe74a320ca
> [1/7] checking root items (0:00:00 elapsed, 1774 items checked)
> [2/7] checking extents (0:00:00 elapsed, 135 items checked)
> [3/7] checking free space tree (0:00:00 elapsed, 4 items checked)
> [4/7] checking fs roots (0:00:00 elapsed, 104 items checked)
> [5/7] checking csums (without verifying data) (0:00:00 elapsed, 205 items checked)
> [6/7] checking root refs (0:00:00 elapsed, 3 items checked)
> [7/7] checking quota groups skipped (not enabled on this FS)
> found 47394816 bytes used, no error found
> total csum bytes: 44268
> total tree bytes: 2064384
> total fs tree bytes: 1720320
> total extent tree bytes: 180224
> btree space waste bytes: 465350
> file data blocks allocated: 45330432
> referenced 45330432
>
> Fabio M. De Francesco (3):
> btrfs: Replace kmap() with kmap_local_page() in inode.c
> btrfs: Replace kmap() with kmap_local_page() in lzo.c
> btrfs: Replace kmap() with kmap_local_page() in zlib.c
Please send patches converting zstd.c and the remaining kmap_atomic
usage in inode.c, otherwise the 3 patches are now in misc-next, thanks.