This is a very simple patch that exposes the behind_writes counter of an
md array via a sysfs entry. This is helpful when tuning the value of
behind_writes. Knowing, for instance, the maximum value over time allows
one to set a proper upper value for an array.
Tested against 2.6.32-rc5 (and 2.6.18).
Thanks,
Paul
This is a very simple patch that exposes the behind_writes counter of an md
array via a sysfs entry. This is helpful when tuning the value of behind_writes.
Knowing, for instance, the maximum value over time allows one to set a
proper upper value for the array.
Tested against 2.6.32-rc5 (and 2.6.18).
Signed-off-by: Paul Clements <paul.clements@xxxxxxxxxxxx>
---
md.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff -pur linux-2.6.32-rc5-PRISTINE/drivers/md/md.c linux-2.6.32-rc5/drivers/md/md.c
--- linux-2.6.32-rc5-PRISTINE/drivers/md/md.c 2009-10-15 20:41:50.000000000 -0400
+++ linux-2.6.32-rc5/drivers/md/md.c 2009-10-30 11:00:24.000000000 -0400
@@ -3237,6 +3237,20 @@ static struct md_sysfs_entry md_bitmap =
__ATTR(bitmap_set_bits, S_IWUSR, null_show, bitmap_store);
static ssize_t
+behind_writes_show(mddev_t *mddev, char *page)
+{
+ if (mddev->bitmap) {
+ return sprintf(page, "%lu\n",
+ atomic_read(&mddev->bitmap->behind_writes));
+ } else {
+ return sprintf(page, "0\n");
+ }
+}
+
+static struct md_sysfs_entry md_behind_writes =
+__ATTR(behind_writes, S_IRUGO, behind_writes_show, NULL);
+
+static ssize_t
size_show(mddev_t *mddev, char *page)
{
return sprintf(page, "%llu\n",
@@ -3785,6 +3799,7 @@ static struct attribute *md_redundancy_a
&md_suspend_lo.attr,
&md_suspend_hi.attr,
&md_bitmap.attr,
+ &md_behind_writes.attr,
&md_degraded.attr,
NULL,
};