From 68a582901d42eebf9fb3528fd7fb0a8cfc641776 Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Sun, 12 Dec 2004 21:47:14 +0000 Subject: [PATCH] Reopen RO file descriptor RW if necessary. --- lib/device/dev-io.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c index ba68e0974..f6ce6f62b 100644 --- a/lib/device/dev-io.c +++ b/lib/device/dev-io.c @@ -294,12 +294,17 @@ int dev_open_flags(struct device *dev, int flags, int direct, int quiet) const char *name; if (dev->fd >= 0) { - if (!(dev->flags & DEV_OPENED_RW) && - ((flags & O_ACCMODE) == O_RDWR)) + if ((dev->flags & DEV_OPENED_RW) || + ((flags & O_ACCMODE) != O_RDWR)) { + dev->open_count++; + return 1; + } + + if (dev->open_count) log_debug("WARNING: %s already opened read-only", dev_name(dev)); - dev->open_count++; - return 1; + else + dev_close_immediate(dev); } if (memlock())