Hi all, this patch switches the device-mapper table to read-only status automatically if one underlying device returns -EROFS. Rationale: Whenever a SCSI device is switched to read-only a table reload from multipath-tools fails, without any indication about the reason. And it's actually quite tricky to detect the read-only status from userland. And quite pointless, too, as the kernel already knows about it. And we now can create tables for CD-ROMs, too, without having to use the '-r' flag to dmsetup ... Christophe, this might also fix your problem. As usual, comments etc are welcome. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg)
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index e75b143..f615e85 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -501,11 +501,19 @@ static int __table_get_device(struct dm_table *t, struct dm_target *ti, dd->mode = mode; dd->bdev = NULL; - if ((r = open_dev(dd, dev, t->md))) { + r = open_dev(dd, dev, t->md); + if (r == -EROFS) { + dd->mode &= ~FMODE_WRITE; + r = open_dev(dd, dev, t->md); + } + if (r) { kfree(dd); return r; } + if (dd->mode != mode) + t->mode = dd->mode; + format_dev_t(dd->name, dev); atomic_set(&dd->count, 0);
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel