Commit 024d37e9 authored by Milan Broz's avatar Milan Broz Committed by Alasdair G Kergon

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 75f1dc0d
  block: check bdev_read_only() from blkdev_get()
was applied, loading such tables began to fail.  The patch
was reverted by e51900f7
  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: default avatarMilan Broz <mbroz@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 4bbba111
...@@ -543,7 +543,7 @@ static int disk_ctr(struct dm_dirty_log *log, struct dm_target *ti, ...@@ -543,7 +543,7 @@ static int disk_ctr(struct dm_dirty_log *log, struct dm_target *ti,
return -EINVAL; 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) if (r)
return r; return r;
......
...@@ -1080,7 +1080,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) ...@@ -1080,7 +1080,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
argv++; argv++;
argc--; 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) { if (r) {
ti->error = "Cannot get COW device"; ti->error = "Cannot get COW device";
goto bad_cow; goto bad_cow;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment