All of lore.kernel.org
 help / color / mirror / Atom feed
From: Neil Brown <neilb@suse.de>
To: heinzm@redhat.com
Cc: device-mapper development <dm-devel@redhat.com>
Subject: Re: [PATCH 00/24] dm-raid456 support using md/raid5.c, now with dirty-log
Date: Wed, 16 Jun 2010 09:45:18 +1000	[thread overview]
Message-ID: <20100616094518.5aa632fd@notabene.brown> (raw)
In-Reply-To: <1276608206.22425.11.camel@o>


Hi Heinz,

On Tue, 15 Jun 2010 15:23:26 +0200
Heinz Mauelshagen <heinzm@redhat.com> wrote:

> 
> Neil,
> 
> for missing devices we (re)load the table with error mapped device(s) in
> their place rather than identifying them with a special char/string.
> Did you go for the later in order to avoid some MD hassle with error
> targets being accessed by the MD personalities? If not so, we can drop
> the special '-' char support to identify missing devices.

When raid5 determines that a device has failed and so it will not write to it
again, it must be sure that the failure is record in the metadata before it
proceeds with that decision not to even try writing to the failed device.
Otherwise a crash/restart before the metadata was safely updated would result
in corruption.

This means that it must be possible for user-space to explicitly tell the
raid5 that a device is known to be faulty.
Doing that through the constructor seems the natural way to do it.

> 
> I'm thinking about adding a ctr wrapper to allow us to keep the "raid45"
> ctr interfaces semantics (ie. the arguments) and the new interface to
> "raid456" if you don't have objections. That would be implemented by 2
> targets being registered implemented in one module.

I have no strong objections, though having two targets that do almost the
same things seems rather ugly.

Is there existing published code that uses the extra arguments to raid45?

Thanks,
NeilBrown


> 
> Heinz
> 
> On Tue, 2010-06-01 at 19:56 +1000, NeilBrown wrote:
> > 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
> > 
> 

  reply	other threads:[~2010-06-15 23:45 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-01  9:56 [PATCH 00/24] dm-raid456 support using md/raid5.c, now with dirty-log NeilBrown
2010-06-01  9:56 ` [PATCH 02/24] md/raid5: factor out code for changing size of stripe cache NeilBrown
2010-06-01  9:56 ` [PATCH 01/24] md: reduce dependence on sysfs NeilBrown
2010-06-01  9:56 ` [PATCH 03/24] md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk NeilBrown
2010-06-01  9:56 ` [PATCH 13/24] dm-raid456: support unplug NeilBrown
2010-06-01  9:56 ` [PATCH 10/24] dm-raid456: add congestion checking NeilBrown
2010-06-01  9:56 ` [PATCH 04/24] md: be more careful setting MD_CHANGE_CLEAN NeilBrown
2010-06-01  9:56 ` [PATCH 12/24] md/plug: optionally use plugger to unplug an array during resync/recovery NeilBrown
2010-06-01  9:56 ` [PATCH 11/24] md/raid5: add simple plugging infrastructure NeilBrown
2010-06-01  9:56 ` [PATCH 08/24] dm-raid456: add support for raising events to userspace NeilBrown
2010-06-01  9:56 ` [PATCH 09/24] raid5: Don't set read-ahead when there is no queue NeilBrown
2010-06-01  9:56 ` [PATCH 07/24] md/dm: create dm-raid456 module using md/raid5 NeilBrown
2010-06-01  9:56 ` [PATCH 06/24] md: export various start/stop interfaces NeilBrown
2010-06-01  9:56 ` [PATCH 14/24] dm-raid456: add support for setting IO hints NeilBrown
2010-06-01  9:56 ` [PATCH 05/24] md: split out md_rdev_init NeilBrown
2010-06-01  9:56 ` [PATCH 17/24] md/bitmap: white space clean up and similar NeilBrown
2010-06-01  9:56 ` [PATCH 16/24] dm-raid456: add message handler NeilBrown
2010-06-01  9:56 ` [PATCH 19/24] md/bitmap: clean up plugging calls NeilBrown
2010-06-01  9:56 ` [PATCH 22/24] md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log NeilBrown
2010-06-01  9:56 ` [PATCH 24/24] dm-raid456: switch to use dm_dirty_log for tracking dirty regions NeilBrown
2010-06-01  9:56 ` [PATCH 20/24] md/bitmap: optimise scanning of empty bitmaps NeilBrown
2010-06-01  9:56 ` [PATCH 23/24] md/bitmap: separate out loading a bitmap from initialising the structures NeilBrown
2010-06-01  9:56 ` [PATCH 21/24] dm-dirty-log: allow log size to be different from target size NeilBrown
2010-06-02 14:57   ` Heinz Mauelshagen
2010-06-03  0:10     ` [dm-devel] " Neil Brown
2010-06-03  0:53       ` Heinz Mauelshagen
2010-06-01  9:56 ` [PATCH 18/24] md/bitmap: reduce dependence on sysfs NeilBrown
2010-06-01  9:56 ` [PATCH 15/24] dm-raid456: add suspend/resume method NeilBrown
2010-06-15 13:23 ` [PATCH 00/24] dm-raid456 support using md/raid5.c, now with dirty-log Heinz Mauelshagen
2010-06-15 23:45   ` Neil Brown [this message]
2010-06-16 11:26     ` Heinz Mauelshagen
2010-06-17  5:41       ` Neil Brown
2010-06-17 10:47         ` Heinz Mauelshagen
2010-06-18  3:52           ` Neil Brown
2010-06-18 10:42             ` Heinz Mauelshagen
2010-06-21 23:09               ` Neil Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100616094518.5aa632fd@notabene.brown \
    --to=neilb@suse.de \
    --cc=dm-devel@redhat.com \
    --cc=heinzm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.