[PATCH] md: export rdev->data_offset 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
014236d2b8
commit
93c8cad03f
|
@ -244,6 +244,12 @@ Each directory contains:
|
||||||
it currently fills. This can only be set while assembling an
|
it currently fills. This can only be set while assembling an
|
||||||
array. A device for which this is set is assumed to be working.
|
array. A device for which this is set is assumed to be working.
|
||||||
|
|
||||||
|
offset
|
||||||
|
This gives the location in the device (in sectors from the
|
||||||
|
start) where data from the array will be stored. Any part of
|
||||||
|
the device before this offset us not touched, unless it is
|
||||||
|
used for storing metadata (Formats 1.1 and 1.2).
|
||||||
|
|
||||||
|
|
||||||
An active md device will also contain and entry for each active device
|
An active md device will also contain and entry for each active device
|
||||||
in the array. These are named
|
in the array. These are named
|
||||||
|
|
|
@ -1664,11 +1664,34 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len)
|
||||||
static struct rdev_sysfs_entry rdev_slot =
|
static struct rdev_sysfs_entry rdev_slot =
|
||||||
__ATTR(slot, 0644, slot_show, slot_store);
|
__ATTR(slot, 0644, slot_show, slot_store);
|
||||||
|
|
||||||
|
static ssize_t
|
||||||
|
offset_show(mdk_rdev_t *rdev, char *page)
|
||||||
|
{
|
||||||
|
return sprintf(page, "%llu\n", rdev->data_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ssize_t
|
||||||
|
offset_store(mdk_rdev_t *rdev, const char *buf, size_t len)
|
||||||
|
{
|
||||||
|
char *e;
|
||||||
|
unsigned long long offset = simple_strtoull(buf, &e, 10);
|
||||||
|
if (e==buf || (*e && *e != '\n'))
|
||||||
|
return -EINVAL;
|
||||||
|
if (rdev->mddev->pers)
|
||||||
|
return -EBUSY;
|
||||||
|
rdev->data_offset = offset;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct rdev_sysfs_entry rdev_offset =
|
||||||
|
__ATTR(offset, 0644, offset_show, offset_store);
|
||||||
|
|
||||||
static struct attribute *rdev_default_attrs[] = {
|
static struct attribute *rdev_default_attrs[] = {
|
||||||
&rdev_state.attr,
|
&rdev_state.attr,
|
||||||
&rdev_super.attr,
|
&rdev_super.attr,
|
||||||
&rdev_errors.attr,
|
&rdev_errors.attr,
|
||||||
&rdev_slot.attr,
|
&rdev_slot.attr,
|
||||||
|
&rdev_offset.attr,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
static ssize_t
|
static ssize_t
|
||||||
|
|
Loading…
Reference in New Issue