All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Revert unsuccessful table load preparation in combined "create, load and resume" scenario
@ 2010-07-28 10:12 Peter Rajnoha
  0 siblings, 0 replies; only message in thread
From: Peter Rajnoha @ 2010-07-28 10:12 UTC (permalink / raw)
  To: lvm-devel

Per discussion with Zdenek, there's missing "revert" call in
_create_and_load_v4 fn while the preparation for table load ends
up with failure in create/load/resume sequence. Otherwise we could
end up with a device being created, but not table-loaded nor
resumed.

Even though the table is not loaded and the device is not resumed
at this stage, we still need to synchronize with udev when calling
the revert "remove" ioctl - there's still a remove uevent generated!
Current "revert" code does exactly that.

Peter
---
 libdm/ioctl/libdm-iface.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c
index 5f71098..50cdec8 100644
--- a/libdm/ioctl/libdm-iface.c
+++ b/libdm/ioctl/libdm-iface.c
@@ -1655,14 +1655,16 @@ static int _create_and_load_v4(struct dm_task *dmt)
 	if (!(task = dm_task_create(DM_DEVICE_RELOAD))) {
 		log_error("Failed to create device-mapper task struct");
 		_udev_complete(dmt);
-		return 0;
+		r = 0;
+		goto revert;
 	}
 
 	/* Copy across relevant fields */
 	if (dmt->dev_name && !dm_task_set_name(task, dmt->dev_name)) {
 		dm_task_destroy(task);
 		_udev_complete(dmt);
-		return 0;
+		r = 0;
+		goto revert;
 	}
 
 	task->read_only = dmt->read_only;



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-07-28 10:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-28 10:12 [PATCH] Revert unsuccessful table load preparation in combined "create, load and resume" scenario Peter Rajnoha

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.