aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/md.txt5
-rw-r--r--drivers/md/md.c27
2 files changed, 32 insertions, 0 deletions
diff --git a/Documentation/md.txt b/Documentation/md.txt
index 4cf5972821a9..80f158745ca5 100644
--- a/Documentation/md.txt
+++ b/Documentation/md.txt
@@ -200,6 +200,11 @@ All md devices contain:
200 This can be written only while the array is being assembled, not 200 This can be written only while the array is being assembled, not
201 after it is started. 201 after it is started.
202 202
203 layout
204 The "layout" for the array for the particular level. This is
205 simply a number that is interpretted differently by different
206 levels. It can be written while assembling an array.
207
203 new_dev 208 new_dev
204 This file can be written but not read. The value written should 209 This file can be written but not read. The value written should
205 be a block device number as major:minor. e.g. 8:0 210 be a block device number as major:minor. e.g. 8:0
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 4b74c77213c3..e3261c438a65 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2155,6 +2155,32 @@ level_store(mddev_t *mddev, const char *buf, size_t len)
2155static struct md_sysfs_entry md_level = 2155static struct md_sysfs_entry md_level =
2156__ATTR(level, 0644, level_show, level_store); 2156__ATTR(level, 0644, level_show, level_store);
2157 2157
2158
2159static ssize_t
2160layout_show(mddev_t *mddev, char *page)
2161{
2162 /* just a number, not meaningful for all levels */
2163 return sprintf(page, "%d\n", mddev->layout);
2164}
2165
2166static ssize_t
2167layout_store(mddev_t *mddev, const char *buf, size_t len)
2168{
2169 char *e;
2170 unsigned long n = simple_strtoul(buf, &e, 10);
2171 if (mddev->pers)
2172 return -EBUSY;
2173
2174 if (!*buf || (*e && *e != '\n'))
2175 return -EINVAL;
2176
2177 mddev->layout = n;
2178 return len;
2179}
2180static struct md_sysfs_entry md_layout =
2181__ATTR(layout, 0655, layout_show, layout_store);
2182
2183
2158static ssize_t 2184static ssize_t
2159raid_disks_show(mddev_t *mddev, char *page) 2185raid_disks_show(mddev_t *mddev, char *page)
2160{ 2186{
@@ -2741,6 +2767,7 @@ __ATTR(suspend_hi, S_IRUGO|S_IWUSR, suspend_hi_show, suspend_hi_store);
2741 2767
2742static struct attribute *md_default_attrs[] = { 2768static struct attribute *md_default_attrs[] = {
2743 &md_level.attr, 2769 &md_level.attr,
2770 &md_layout.attr,
2744 &md_raid_disks.attr, 2771 &md_raid_disks.attr,
2745 &md_chunk_size.attr, 2772 &md_chunk_size.attr,
2746 &md_size.attr, 2773 &md_size.attr,