On Fri, 13 Feb 2015 19:47:59 +0100 heinzm@xxxxxxxxxx wrote: > From: Heinz Mauelshagen <heinzm@xxxxxxxxxx> > > I'm enhancing the device mapper raid target (dm-raid) to take > advantage of so far unused md raid kernel funtionality: > takeover, reshape, resize, addition and removal of devices to/from raid sets. > > This series of patches remove constraints doing so. > > > Patch #1: > add 2 API functions to allow dm-raid to access the raid takeover > and resize functionality (namely md_takeover() and md_resize()); > reshape APIs are not needed in lieu of the existing personalilty ones > > Patch #2: > because device mapper core manages a request queue per mapped device > utilizing the md make_request API to pass on bios via the dm-raid target, > no md instance underneath it needs to manage a request queue of its own. > Thus dm-raid can't use the md raid0 personality as is, because the latter > accesses the request queue unconditionally in 3 places via mddev->queue > which this patch addresses. > > Patch #3: > when dm-raid processes a down takeover to raid0, it needs to destroy > any existing bitmap, because raid0 does not require one. The patch > exports the bitmap_destroy() API to allow dm-raid to remove bitmaps. > > > Heinz Mauelshagen (3): > md core: add 2 API functions for takeover and resize to support dm-raid > md raid0: access mddev->queue (request queue member) conditionally > because it is not set when accessed from dm-raid > md bitmap: export bitmap_destroy() to support dm-raid down takover to raid0 > > drivers/md/bitmap.c | 1 + > drivers/md/md.c | 39 ++++++++++++++++++++++++++++++--------- > drivers/md/md.h | 3 +++ > drivers/md/raid0.c | 48 +++++++++++++++++++++++++++--------------------- > 4 files changed, 61 insertions(+), 30 deletions(-) > Hi Heinz, I don't object to these patches if you will find the exported functionality useful, but I am a little surprised by them. I would expect that dm-raid wouldn't ask md to 'takeover' from one level to another, but instead would - suspend the dm device - dismantle the array using the old level - assemble the array using the new level - resume the dm device The reason md needs 'takeover' is because it doesn't have the same device/target separation that dm does. I was particularly surprised that you wanted to use md/raid0.c It is no better than dm/dm-stripe.c and managing two different stripe engines under LVM doesn't see like a good idea. Is there some reason that I have missed which makes it easier to use 'takeover' rather than suspend/resume? Thanks, NeilBrown
Attachment:
pgpQpZ8GVU6wd.pgp
Description: OpenPGP digital signature
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel