[PATCH] md: allow available size of component devices to be set via sysfs
Signed-off-by: Neil Brown <neilb@suse.de> Acked-by: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
6961ece46c
commit
83303b613d
2 changed files with 32 additions and 0 deletions
|
@ -250,6 +250,13 @@ Each directory contains:
|
|||
the device before this offset us not touched, unless it is
|
||||
used for storing metadata (Formats 1.1 and 1.2).
|
||||
|
||||
size
|
||||
The amount of the device, after the offset, that can be used
|
||||
for storage of data. This will normally be the same as the
|
||||
component_size. This can be written while assembling an
|
||||
array. If a value less than the current component_size is
|
||||
written, component_size will be reduced to this value.
|
||||
|
||||
|
||||
An active md device will also contain and entry for each active device
|
||||
in the array. These are named
|
||||
|
|
|
@ -1686,12 +1686,37 @@ offset_store(mdk_rdev_t *rdev, const char *buf, size_t len)
|
|||
static struct rdev_sysfs_entry rdev_offset =
|
||||
__ATTR(offset, 0644, offset_show, offset_store);
|
||||
|
||||
static ssize_t
|
||||
rdev_size_show(mdk_rdev_t *rdev, char *page)
|
||||
{
|
||||
return sprintf(page, "%llu\n", (unsigned long long)rdev->size);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
rdev_size_store(mdk_rdev_t *rdev, const char *buf, size_t len)
|
||||
{
|
||||
char *e;
|
||||
unsigned long long size = simple_strtoull(buf, &e, 10);
|
||||
if (e==buf || (*e && *e != '\n'))
|
||||
return -EINVAL;
|
||||
if (rdev->mddev->pers)
|
||||
return -EBUSY;
|
||||
rdev->size = size;
|
||||
if (size < rdev->mddev->size || rdev->mddev->size == 0)
|
||||
rdev->mddev->size = size;
|
||||
return len;
|
||||
}
|
||||
|
||||
static struct rdev_sysfs_entry rdev_size =
|
||||
__ATTR(size, 0644, rdev_size_show, rdev_size_store);
|
||||
|
||||
static struct attribute *rdev_default_attrs[] = {
|
||||
&rdev_state.attr,
|
||||
&rdev_super.attr,
|
||||
&rdev_errors.attr,
|
||||
&rdev_slot.attr,
|
||||
&rdev_offset.attr,
|
||||
&rdev_size.attr,
|
||||
NULL,
|
||||
};
|
||||
static ssize_t
|
||||
|
|
Loading…
Reference in a new issue