mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-31 14:50:37 +03:00
Synchronize "remove" dm task while reverting unsuccessful "create" dm task
(with table provided). This remove ioctl generates udev events like any other hence it needs to be synchronized properly as well. Also, add dm task type in debug log when setting a cookie (for better debugging).
This commit is contained in:
parent
4bde7fc926
commit
93c1312901
@ -1546,6 +1546,7 @@ static int _create_and_load_v4(struct dm_task *dmt)
|
||||
{
|
||||
struct dm_task *task;
|
||||
int r;
|
||||
uint32_t cookie;
|
||||
|
||||
/* Use new task struct to create the device */
|
||||
if (!(task = dm_task_create(DM_DEVICE_CREATE))) {
|
||||
@ -1625,7 +1626,18 @@ static int _create_and_load_v4(struct dm_task *dmt)
|
||||
dmt->type = DM_DEVICE_REMOVE;
|
||||
dm_free(dmt->uuid);
|
||||
dmt->uuid = NULL;
|
||||
dmt->cookie_set = 0;
|
||||
|
||||
/*
|
||||
* Also udev-synchronize "remove" dm task that is a part of this revert!
|
||||
* But only if the original dm task was supposed to be synchronized.
|
||||
*/
|
||||
if (dmt->cookie_set) {
|
||||
cookie = (dmt->event_nr & ~DM_UDEV_FLAGS_MASK) |
|
||||
(DM_COOKIE_MAGIC << DM_UDEV_FLAGS_SHIFT);
|
||||
dm_task_set_cookie(dmt, &cookie,
|
||||
(dmt->event_nr & DM_UDEV_FLAGS_MASK) >>
|
||||
DM_UDEV_FLAGS_SHIFT);
|
||||
}
|
||||
|
||||
if (!dm_task_run(dmt))
|
||||
log_error("Failed to revert device creation.");
|
||||
|
@ -1192,7 +1192,7 @@ int dm_task_set_cookie(struct dm_task *dmt, uint32_t *cookie, uint16_t flags)
|
||||
dmt->cookie_set = 1;
|
||||
|
||||
log_debug("Udev cookie 0x%" PRIx32 " (semid %d) assigned to dm_task "
|
||||
"with flags 0x%" PRIx16, *cookie, semid, flags);
|
||||
"type %d with flags 0x%" PRIx16, *cookie, semid, dmt->type, flags);
|
||||
|
||||
return 1;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user