Skip to content

RFC btrfs core patches for direct I/O

jim owens linux-btrfs 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest12 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/12Btrfs: Do not limit RAID1 and DUP transfer length to one stripe.fs/btrfs/volumes.c+3 -30 replies
2/12Btrfs: __btrfs_map_block should not set length more than input length.fs/btrfs/extent-tree.c fs/btrfs/inode.c fs/btrfs/volumes.c+7 -100 replies
3/12Btrfs: Reorder __btrfs_map_block to make code more efficient.fs/btrfs/volumes.c+24 -410 replies
4/12Btrfs: btrfs_discard_extent must use WRITE with btrfs_map_block.fs/btrfs/extent-tree.c+1 -10 replies
5/12Btrfs: remove dead code for unplugging pages.fs/btrfs/disk-io.c fs/btrfs/volumes.c fs/btrfs/volumes.h+20 -1110 replies
6/12Btrfs: reduce memory use in compress/decompress workspace.fs/btrfs/zlib.c+69 -770 replies
7/12Btrfs: split btrfs_map_block into two parts for direct I/O.fs/btrfs/volumes.c fs/btrfs/volumes.h+61 -330 replies
8/12Btrfs: add direct I/O helper routines to decode em map_lookup.fs/btrfs/volumes.c fs/btrfs/volumes.h+18 -00 replies
9/12Btrfs: add direct I/O helper to process inline compressed extents.fs/btrfs/extent_io.c fs/btrfs/extent_io.h+19 -00 replies
10/12Btrfs: add direct I/O checksum option to btrfs_lookup_csums_range.fs/btrfs/ctree.h fs/btrfs/file-item.c fs/btrfs/inode.c +2 more+30 -80 replies
11/12Btrfs: add direct I/O helper btrfs_lookup_one_csum().fs/btrfs/ctree.h fs/btrfs/file-item.c+47 -01 reply
12/12Btrfs: add direct I/O helper to return mirror count from extent_map.fs/btrfs/volumes.c fs/btrfs/volumes.h+15 -80 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC 00/12] btrfs core patches for direct I/O

As if a Monday after a long holiday was not bad enough... this series has some simple patches in existing btrfs code that I want to make for btrfs directio code.

The RESEND patches 1-5 were sent to Chris in December because IMO they have value without my directio code. You need them to apply some of the subsequent patches.

IMO patch 6 is also of value independent of direct I/O, it reduces vmalloc use by 42K per worker, though we still use 268K per worker (ouch).

Patches 7 - 12 don't have value without direct I/O. I'm sending them RFC as they can be understood by themselves, and they are much simpler than the directio code that uses them. :)

Note - might as well explain this now as later when I send the big mess of dio.c for review. The existing core code for pagecache doesn't work for directio because the existing I/O routines depend on peeking inside a struct page to get the valid btrfs inode info. Sorry, no can do, we don't own that page. And rewriting the whole pagecache I/O stack to eliminate dependence on struct page would be too scary IMO.

FWIW, fsx didn't crash on this series.

jim