diff options
author | Milan Broz <mbroz@redhat.com> | 2011-03-24 13:52:14 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2011-03-24 13:52:14 +0000 |
commit | 024d37e95ec4a7ccc256973ab2feab01f4fbdd2d (patch) | |
tree | f81ce3ac56c911577942b8404ed45a980c321621 /drivers | |
parent | 4bbba111d94781d34081c37856bbc5eb33f6c72a (diff) | |
download | op-kernel-dev-024d37e95ec4a7ccc256973ab2feab01f4fbdd2d.zip op-kernel-dev-024d37e95ec4a7ccc256973ab2feab01f4fbdd2d.tar.gz |
dm: fix opening log and cow devices for read only tables
If a table is read-only, also open any log and cow devices it uses read-only.
Previously, even read-only devices were opened read-write internally.
After patch 75f1dc0d076d1c1168f2115f1941ea627d38bd5a
block: check bdev_read_only() from blkdev_get()
was applied, loading such tables began to fail. The patch
was reverted by e51900f7d38cbcfb481d84567fd92540e7e1d23a
block: revert block_dev read-only check
but this patch fixes this part of the code to work with the original patch.
Signed-off-by: Milan Broz <mbroz@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/dm-log.c | 2 | ||||
-rw-r--r-- | drivers/md/dm-snap.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c index 6951536..8e8a868 100644 --- a/drivers/md/dm-log.c +++ b/drivers/md/dm-log.c @@ -543,7 +543,7 @@ static int disk_ctr(struct dm_dirty_log *log, struct dm_target *ti, return -EINVAL; } - r = dm_get_device(ti, argv[0], FMODE_READ | FMODE_WRITE, &dev); + r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &dev); if (r) return r; diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index fdde53c..a2d3309 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c @@ -1080,7 +1080,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) argv++; argc--; - r = dm_get_device(ti, cow_path, FMODE_READ | FMODE_WRITE, &s->cow); + r = dm_get_device(ti, cow_path, dm_table_get_mode(ti->table), &s->cow); if (r) { ti->error = "Cannot get COW device"; goto bad_cow; |