dm-raid456 support using md/raid5.c, now with dirty-log
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest24 patches 11 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/24 | md: reduce dependence on sysfs.drivers/ drivers/ drivers/ | +62 | 0 replies | |
| 2/24 | md/raid5: factor out code for changing size of stripe cache.drivers/ | +25 | 0 replies | |
| 3/24 | md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendiskdrivers/ drivers/ | +9 | 0 replies | |
| 4/24 | md: be more careful setting MD_CHANGE_CLEANdrivers/ drivers/ | +4 | 0 replies | |
| 5/24 | md: split out md_rdev_initdrivers/ drivers/ | +20 | 0 replies | |
| 6/24 | md: export various start/stop interfacesdrivers/ drivers/ | +13 | 0 replies | |
| 7/24 | md/dm: create dm-raid456 module using md/raid5drivers/ drivers/ drivers/ | +446 | 0 replies | |
| 8/24 | dm-raid456: add support for raising events to userspace.drivers/ drivers/ drivers/ | +11 | 0 replies | |
| 9/24 | raid5: Don't set read-ahead when there is no queuedrivers/ | +17 | 0 replies | |
| 10/24 | dm-raid456: add congestion checking.drivers/ drivers/ drivers/ +2 more | +56 | 0 replies | |
| 11/24 | md/raid5: add simple plugging infrastructure.drivers/ drivers/ drivers/ +1 more | +93 | 0 replies | |
| 12/24 | md/plug: optionally use plugger to unplug an array during resync/recovery.drivers/ drivers/ drivers/ | +15 | 0 replies | |
| 13/24 | dm-raid456: support unplugdrivers/ drivers/ drivers/ +2 more | +20 | 0 replies | |
| 14/24 | dm-raid456: add support for setting IO hints.drivers/ drivers/ | +43 | 0 replies | |
| 15/24 | dm-raid456: add suspend/resume methoddrivers/ drivers/ drivers/ | +29 | 0 replies | |
| 16/24 | dm-raid456: add message handler.drivers/ drivers/ drivers/ | +29 | 0 replies | |
| 17/24 | md/bitmap: white space clean up and similar.drivers/ | +135 | 0 replies | |
| 18/24 | md/bitmap: reduce dependence on sysfs.drivers/ | +4 | 0 replies | |
| 19/24 | md/bitmap: clean up plugging calls.drivers/ drivers/ drivers/ | +3 | 0 replies | |
| 20/24 | md/bitmap: optimise scanning of empty bitmaps.drivers/ | +13 | 0 replies | |
| 21/24 | dm-dirty-log: allow log size to be different from target size.drivers/ drivers/ drivers/ +1 more | +22 | 3 replies | |
| 22/24 | md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.drivers/ drivers/ drivers/ | +99 | 0 replies | |
| 23/24 | md/bitmap: separate out loading a bitmap from initialising the structures.drivers/ drivers/ drivers/ | +60 | 0 replies | |
| 24/24 | dm-raid456: switch to use dm_dirty_log for tracking dirty regions.drivers/ drivers/ | +38 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 00/24] dm-raid456 support using md/raid5.c, now with dirty-log
Nearly two months ago I posted my first serious attempt and making md/raid5.c work as a dm target. I met with cautious approval I think, but as it didn't interact with dirty-logs yet it wasn't really read for prime time.
It has taken longer than I hoped, but here is version 2, now with dirty-log integration.
I have done a modest amount of testing, watching the bits in the log getting cleared and set just as you would expect, and watching the resync complete instantly when the dirty-log shows that all regions are clean.
There is not even a hint of cluster support yet, but that shouldn't be necessary for initial submission to mainline.
A significant difference to Heinz' dm-raid45 is that I only honour the table options that lvm actually sets. The extra ones don't really fit with md/raid5 and I don't think they need to be table options. If any are needed they might work OK as messages (???).
There are a number of changes to core-dm in here including:
- support for targets to be unplugged when the device is
- support for targets to report congestion beyond the congestion of component devices
- support for the dirty-log to cover and extent different from the size of the target (For raid5 it must be the size of the components).
I have tried to fit these to the general style of dm as best as I can.
There is certainly room for more testing and review, but I would like to see this entering -next soon with a view to seeing it merged in the next merge window.
Is this reasonable? Achievable?
Comments?
These patches can all be found on the "md-dm-raid45" branch of
git://neil.brown.name/md/
or at http://neil.brown.name/git?p=md;a=shortlog;h=refs/heads/md-dm-raid45
Thanks,
NeilBrown
---
NeilBrown (24):
md: reduce dependence on sysfs.
md/raid5: factor out code for changing size of stripe cache. md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk
md: be more careful setting MD_CHANGE_CLEAN
md: split out md_rdev_init
md: export various start/stop interfaces
md/dm: create dm-raid456 module using md/raid5
dm-raid456: add support for raising events to userspace.
raid5: Don't set read-ahead when there is no queue
dm-raid456: add congestion checking.
md/raid5: add simple plugging infrastructure.
md/plug: optionally use plugger to unplug an array during resync/recovery.
dm-raid456: support unplug
dm-raid456: add support for setting IO hints.
dm-raid456: add suspend/resume method
dm-raid456: add message handler.
md/bitmap: white space clean up and similar.
md/bitmap: reduce dependence on sysfs.
md/bitmap: clean up plugging calls.
md/bitmap: optimise scanning of empty bitmaps.
dm-dirty-log: allow log size to be different from target size. md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log. md/bitmap: separate out loading a bitmap from initialising the structures.
dm-raid456: switch to use dm_dirty_log for tracking dirty regions.
drivers/md/Kconfig | 8 + drivers/md/Makefile | 1 drivers/md/bitmap.c | 508 +++++++++++++++++--------------- drivers/md/bitmap.h | 6 drivers/md/dm-log-userspace-base.c | 11 - drivers/md/dm-log.c | 18 + drivers/md/dm-raid1.c | 4 drivers/md/dm-raid456.c | 576 ++++++++++++++++++++++++++++++++++++ drivers/md/dm-table.c | 19 + drivers/md/md.c | 234 +++++++++------ drivers/md/md.h | 51 +++ drivers/md/raid5.c | 169 ++++++----- drivers/md/raid5.h | 8 - include/linux/device-mapper.h | 13 + include/linux/dm-dirty-log.h | 3 15 files changed, 1235 insertions(+), 394 deletions(-) create mode 100644 drivers/md/dm-raid456.c