aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-06-01 05:37:32 -0400
committerNeilBrown <neilb@suse.de>2010-07-25 23:21:31 -0400
commit5ff5afffe6527543866a47ffab12769427283917 (patch)
treeb37cf6ad3557ffada21aa05174bb055ea8e6c173 /drivers/md
parentac2f40be46ce6ab3bec4c8c297d6923f941741ce (diff)
md/bitmap: reduce dependence on sysfs.
For dm-raid45 we will want to use bitmaps in dm-targets which don't have entries in sysfs, so cope with the mddev not living in sysfs. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/bitmap.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 67fb32d1124d..8af4d655b2d3 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1358,7 +1358,7 @@ void bitmap_endwrite(struct bitmap *bitmap, sector_t offset, unsigned long secto
1358 bitmap->events_cleared < bitmap->mddev->events) { 1358 bitmap->events_cleared < bitmap->mddev->events) {
1359 bitmap->events_cleared = bitmap->mddev->events; 1359 bitmap->events_cleared = bitmap->mddev->events;
1360 bitmap->need_sync = 1; 1360 bitmap->need_sync = 1;
1361 sysfs_notify_dirent(bitmap->sysfs_can_clear); 1361 sysfs_notify_dirent_safe(bitmap->sysfs_can_clear);
1362 } 1362 }
1363 1363
1364 if (!success && ! (*bmc & NEEDED_MASK)) 1364 if (!success && ! (*bmc & NEEDED_MASK))
@@ -1643,7 +1643,7 @@ int bitmap_create(mddev_t *mddev)
1643 struct file *file = mddev->bitmap_info.file; 1643 struct file *file = mddev->bitmap_info.file;
1644 int err; 1644 int err;
1645 sector_t start; 1645 sector_t start;
1646 struct sysfs_dirent *bm; 1646 struct sysfs_dirent *bm = NULL;
1647 1647
1648 BUILD_BUG_ON(sizeof(bitmap_super_t) != 256); 1648 BUILD_BUG_ON(sizeof(bitmap_super_t) != 256);
1649 1649
@@ -1664,7 +1664,8 @@ int bitmap_create(mddev_t *mddev)
1664 1664
1665 bitmap->mddev = mddev; 1665 bitmap->mddev = mddev;
1666 1666
1667 bm = sysfs_get_dirent(mddev->kobj.sd, NULL, "bitmap"); 1667 if (mddev->kobj.sd)
1668 bm = sysfs_get_dirent(mddev->kobj.sd, NULL, "bitmap");
1668 if (bm) { 1669 if (bm) {
1669 bitmap->sysfs_can_clear = sysfs_get_dirent(bm, NULL, "can_clear"); 1670 bitmap->sysfs_can_clear = sysfs_get_dirent(bm, NULL, "can_clear");
1670 sysfs_put(bm); 1671 sysfs_put(bm);