[PATCH] md: Allow raid 'layout' to be read and set via sysfs

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
NeilBrown 2006-06-26 00:27:59 -07:00 committed by Linus Torvalds
parent 45dc2de1e5
commit d4dbd0250e
2 changed files with 32 additions and 0 deletions

View File

@ -200,6 +200,11 @@ All md devices contain:
This can be written only while the array is being assembled, not This can be written only while the array is being assembled, not
after it is started. after it is started.
layout
The "layout" for the array for the particular level. This is
simply a number that is interpretted differently by different
levels. It can be written while assembling an array.
new_dev new_dev
This file can be written but not read. The value written should This file can be written but not read. The value written should
be a block device number as major:minor. e.g. 8:0 be a block device number as major:minor. e.g. 8:0

View File

@ -2155,6 +2155,32 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
static struct md_sysfs_entry md_level = static struct md_sysfs_entry md_level =
__ATTR(level, 0644, level_show, level_store); __ATTR(level, 0644, level_show, level_store);
static ssize_t
layout_show(mddev_t *mddev, char *page)
{
/* just a number, not meaningful for all levels */
return sprintf(page, "%d\n", mddev->layout);
}
static ssize_t
layout_store(mddev_t *mddev, const char *buf, size_t len)
{
char *e;
unsigned long n = simple_strtoul(buf, &e, 10);
if (mddev->pers)
return -EBUSY;
if (!*buf || (*e && *e != '\n'))
return -EINVAL;
mddev->layout = n;
return len;
}
static struct md_sysfs_entry md_layout =
__ATTR(layout, 0655, layout_show, layout_store);
static ssize_t static ssize_t
raid_disks_show(mddev_t *mddev, char *page) raid_disks_show(mddev_t *mddev, char *page)
{ {
@ -2741,6 +2767,7 @@ __ATTR(suspend_hi, S_IRUGO|S_IWUSR, suspend_hi_show, suspend_hi_store);
static struct attribute *md_default_attrs[] = { static struct attribute *md_default_attrs[] = {
&md_level.attr, &md_level.attr,
&md_layout.attr,
&md_raid_disks.attr, &md_raid_disks.attr,
&md_chunk_size.attr, &md_chunk_size.attr,
&md_size.attr, &md_size.attr,