FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Device-mapper Development

 
 
LinkBack Thread Tools
 
Old 04-15-2010, 06:43 AM
NeilBrown
 
Default A dm-raid45 target implemented using md raid5.

Greetings Heinz, Alasdair, and all,
(Alasdair and Heinz cc:ed on this intro, but the patches are
only going to the lists).

Some months ago I posted a proof-of-concept patch which attempted to
provide RAID4/5/6 functionality to 'dm' using md/raid5.c.
While it did a least partly work it contained lots of hacks and was
very ugly.

I finally made time to do the job "properly".

The following series, when applied on top of a bunch of patches I
just submitted for linux-next, provides a 'dm-raid45' target which is
largely compatible with the one that Heinz has written (and several
distros are shipping), but which uses md/raid5.c for the core IO
processing.

I have tried to split the patch up into easy-to-handle pieces. You
will note that some changes to core-dm are required, in particular to
pass back 'congestion' information and to handle plugging (which
raid5 uses to improve throughput). I hope the approach I have taken
is suitable, but it can obviously be changed if necessary.

The create/status/message interface differs from the one in Heinz's
patch, but should be close enough to work with current 'dmraid'.

If you want to try the patches (rather than just read them) you
should probably "git pull" (please don't clone) from
git://neil.brown.name/md md-dm-raid45

so as to get all the prior refactoring patches in md.

Some advantages of this over Heinz's patch (at least as it was
when I last looked at it) are:
- raid6 support
- support for XOR-offload hardware where present
- less code duplication
- a single dm device can include multiple dm-raid45 targets.
(Heinz' code accesses dm_disk(md)->queue directly which
is a layering violations and assumes that there is no
other target in the mapped_device).

There is a lot more that could be done to this such as getting to
work with a disk based dirty-log and making the reshape options
available. But this patch set should provide all basic RAID5
functionality.

Would the dm community be interested in including this work upstream
(after suitable review and testing)?

Thanks,
NeilBrown


---

NeilBrown (12):
md: reduce dependence on sysfs.
md/raid5: factor out code for changing size of stripe cache.
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.


drivers/md/Kconfig | 8 +
drivers/md/Makefile | 1
drivers/md/dm-raid456.c | 540 +++++++++++++++++++++++++++++++++++++++++
drivers/md/dm-table.c | 19 +
drivers/md/md.c | 211 ++++++++++------
drivers/md/md.h | 43 +++
drivers/md/raid5.c | 155 +++++++-----
drivers/md/raid5.h | 6
include/linux/device-mapper.h | 13 +
9 files changed, 859 insertions(+), 137 deletions(-)
create mode 100644 drivers/md/dm-raid456.c

--


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 
Old 04-15-2010, 06:43 AM
NeilBrown
 
Default A dm-raid45 target implemented using md raid5.

(I'm not sure this got through the first time as there was an error
in the headers, so I'm sending again just in case).

Greetings Heinz, Alasdair, and all,
(Alasdair and Heinz cc:ed on this intro, but the patches are
only going to the lists).

Some months ago I posted a proof-of-concept patch which attempted to
provide RAID4/5/6 functionality to 'dm' using md/raid5.c.
While it did a least partly work it contained lots of hacks and was
very ugly.

I finally made time to do the job "properly".

The following series, when applied on top of a bunch of patches I
just submitted for linux-next, provides a 'dm-raid45' target which is
largely compatible with the one that Heinz has written (and several
distros are shipping), but which uses md/raid5.c for the core IO
processing.

I have tried to split the patch up into easy-to-handle pieces. You
will note that some changes to core-dm are required, in particular to
pass back 'congestion' information and to handle plugging (which
raid5 uses to improve throughput). I hope the approach I have taken
is suitable, but it can obviously be changed if necessary.

The create/status/message interface differs from the one in Heinz's
patch, but should be close enough to work with current 'dmraid'.

If you want to try the patches (rather than just read them) you
should probably "git pull" (please don't clone) from
git://neil.brown.name/md md-dm-raid45

so as to get all the prior refactoring patches in md.

Some advantages of this over Heinz's patch (at least as it was
when I last looked at it) are:
- raid6 support
- support for XOR-offload hardware where present
- less code duplication
- a single dm device can include multiple dm-raid45 targets.
(Heinz' code accesses dm_disk(md)->queue directly which
is a layering violations and assumes that there is no
other target in the mapped_device).

There is a lot more that could be done to this such as getting to
work with a disk based dirty-log and making the reshape options
available. But this patch set should provide all basic RAID5
functionality.

Would the dm community be interested in including this work upstream
(after suitable review and testing)?

Thanks,
NeilBrown


---

NeilBrown (12):
md: reduce dependence on sysfs.
md/raid5: factor out code for changing size of stripe cache.
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.


drivers/md/Kconfig | 8 +
drivers/md/Makefile | 1
drivers/md/dm-raid456.c | 540 +++++++++++++++++++++++++++++++++++++++++
drivers/md/dm-table.c | 19 +
drivers/md/md.c | 211 ++++++++++------
drivers/md/md.h | 43 +++
drivers/md/raid5.c | 155 +++++++-----
drivers/md/raid5.h | 6
include/linux/device-mapper.h | 13 +
9 files changed, 859 insertions(+), 137 deletions(-)
create mode 100644 drivers/md/dm-raid456.c

--


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
 

Thread Tools




All times are GMT. The time now is 02:26 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org