Hi, Great to see something addressing the write hole at last. On Tue, Aug 01, 2017 at 10:14:23AM -0600, Liu Bo wrote: > This aims to fix write hole issue on btrfs raid5/6 setup by adding a > separate disk as a journal (aka raid5/6 log), so that after unclean > shutdown we can make sure data and parity are consistent on the raid > array by replaying the journal. What's the behaviour of the FS if the log device dies during use? Hugo. > The idea and the code are similar to the write-through mode of md > raid5-cache, so ppl(partial parity log) is also feasible to implement. > (If you've been familiar with md, you may find this patch set is > boring to read...) > > Patch 1-3 are about adding a log disk, patch 5-8 are the main part of > the implementation, the rest patches are improvements and bugfixes, > eg. readahead for recovery, checksum. > > Two btrfs-progs patches are required to play with this patch set, one > is to enhance 'btrfs device add' to add a disk as raid5/6 log with the > option '-L', the other is to teach 'btrfs-show-super' to show > %journal_tail. > > This is currently based on 4.12-rc3. > > The patch set is tagged with RFC, and comments are always welcome, > thanks. > > Known limitations: > - Deleting a log device is not implemented yet. > > > Liu Bo (14): > Btrfs: raid56: add raid56 log via add_dev v2 ioctl > Btrfs: raid56: do not allocate chunk on raid56 log > Btrfs: raid56: detect raid56 log on mount > Btrfs: raid56: add verbose debug > Btrfs: raid56: add stripe log for raid5/6 > Btrfs: raid56: add reclaim support > Btrfs: raid56: load r5log > Btrfs: raid56: log recovery > Btrfs: raid56: add readahead for recovery > Btrfs: raid56: use the readahead helper to get page > Btrfs: raid56: add csum support > Btrfs: raid56: fix error handling while adding a log device > Btrfs: raid56: initialize raid5/6 log after adding it > Btrfs: raid56: maintain IO order on raid5/6 log > > fs/btrfs/ctree.h | 16 +- > fs/btrfs/disk-io.c | 16 + > fs/btrfs/ioctl.c | 48 +- > fs/btrfs/raid56.c | 1429 ++++++++++++++++++++++++++++++++++----- > fs/btrfs/raid56.h | 82 +++ > fs/btrfs/transaction.c | 2 + > fs/btrfs/volumes.c | 56 +- > fs/btrfs/volumes.h | 7 +- > include/uapi/linux/btrfs.h | 3 + > include/uapi/linux/btrfs_tree.h | 4 + > 10 files changed, 1487 insertions(+), 176 deletions(-) > -- Hugo Mills | Some days, it's just not worth gnawing through the hugo@... carfax.org.uk | straps http://carfax.org.uk/ | PGP: E2AB1DE4 |