From 5a5084b837ca2625033cc9520f4c82c03aff8079 Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Thu, 27 Oct 2005 17:44:55 +0000 Subject: [PATCH] Only keep devices open if known to belong to a locked VG now. --- lib/device/dev-io.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c index 749ab95ed..11db26e7e 100644 --- a/lib/device/dev-io.c +++ b/lib/device/dev-io.c @@ -493,6 +493,8 @@ static void _close(struct device *dev) static int _dev_close(struct device *dev, int immediate) { + struct lvmcache_info *info; + if (dev->fd < 0) { log_error("Attempt to close device '%s' " "which is not open.", dev_name(dev)); @@ -513,8 +515,12 @@ static int _dev_close(struct device *dev, int immediate) dev->open_count = 0; } - /* FIXME lookup device in cache to get vgname and see if it's locked? */ - if (immediate || (dev->open_count < 1 && !vgs_locked())) + /* Close unless device is known to belong to a locked VG */ + if (immediate || + (dev->open_count < 1 && + (!(info = info_from_pvid(dev->pvid)) || + !info->vginfo || + !vgname_is_locked(info->vginfo->vgname)))) _close(dev); return 1;