Commit d4dbd025 authored by NeilBrown's avatar NeilBrown Committed by Linus Torvalds

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

Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 45dc2de1
...@@ -200,6 +200,11 @@ All md devices contain: ...@@ -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
......
...@@ -2155,6 +2155,32 @@ level_store(mddev_t *mddev, const char *buf, size_t len) ...@@ -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); ...@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment