[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] [PATCH] [RFC] switch DM tables to readonly automatically
- From: Hannes Reinecke <hare suse de>
- To: device-mapper development <dm-devel redhat com>
- Subject: [dm-devel] [PATCH] [RFC] switch DM tables to readonly automatically
- Date: Fri, 25 Apr 2008 16:32:37 +0200
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 suse de +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);
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]