[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:
parent
45dc2de1e5
commit
d4dbd0250e
|
@ -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)
|
||||||
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,
|
||||||
|
|
Loading…
Reference in New Issue