Skip to content

Commit

Permalink
[PATCH] md: Allow raid 'layout' to be read and set via sysfs
Browse files Browse the repository at this point in the history
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
NeilBrown authored and Linus Torvalds committed Jun 26, 2006
1 parent 45dc2de commit d4dbd02
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Documentation/md.txt
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,11 @@ All md devices contain:
This can be written only while the array is being assembled, not
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
This file can be written but not read. The value written should
be a block device number as major:minor. e.g. 8:0
Expand Down
27 changes: 27 additions & 0 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -2155,6 +2155,32 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
static struct md_sysfs_entry md_level =
__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
raid_disks_show(mddev_t *mddev, char *page)
{
Expand Down Expand Up @@ -2741,6 +2767,7 @@ __ATTR(suspend_hi, S_IRUGO|S_IWUSR, suspend_hi_show, suspend_hi_store);

static struct attribute *md_default_attrs[] = {
&md_level.attr,
&md_layout.attr,
&md_raid_disks.attr,
&md_chunk_size.attr,
&md_size.attr,
Expand Down

0 comments on commit d4dbd02

Please sign in to comment.