mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
Fix dm_udev_wait calls in dmsetup to occur before readahead display not after.
Include an implicit dm_task_update_nodes() within dm_udev_wait().
This commit is contained in:
parent
5993dc5b48
commit
9a45e3dbbb
@ -1,5 +1,7 @@
|
||||
Version 1.02.64 -
|
||||
===================================
|
||||
Fix dm_udev_wait calls in dmsetup to occur before readahead display not after.
|
||||
Include an implicit dm_task_update_nodes() within dm_udev_wait().
|
||||
Fix _create_and_load_v4 not to lose the --addnodeoncreate setting (1.02.62).
|
||||
Add inactive table query support for kernel driver >= 4.11.6 (RHEL 5.7).
|
||||
Log debug open_count in _node_has_closed_parents().
|
||||
|
@ -2025,7 +2025,8 @@ static struct dm_ioctl *_do_dm_ioctl(struct dm_task *dmt, unsigned command,
|
||||
}
|
||||
}
|
||||
|
||||
if (ioctl_with_uevent && !_check_uevent_generated(dmi)) {
|
||||
if (ioctl_with_uevent && dm_udev_get_sync_support() &&
|
||||
!_check_uevent_generated(dmi)) {
|
||||
log_debug("Uevent not generated! Calling udev_complete "
|
||||
"internally to avoid process lock-up.");
|
||||
_udev_complete(dmt);
|
||||
|
@ -1044,6 +1044,8 @@ int dm_udev_complete(uint32_t cookie)
|
||||
|
||||
int dm_udev_wait(uint32_t cookie)
|
||||
{
|
||||
update_devs();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1380,7 +1382,7 @@ int dm_udev_complete(uint32_t cookie)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int dm_udev_wait(uint32_t cookie)
|
||||
static int _udev_wait(uint32_t cookie)
|
||||
{
|
||||
int semid;
|
||||
struct sembuf sb = {0, 0, 0};
|
||||
@ -1420,4 +1422,11 @@ repeat_wait:
|
||||
return _udev_notify_sem_destroy(cookie, semid);
|
||||
}
|
||||
|
||||
int dm_udev_wait(uint32_t cookie)
|
||||
{
|
||||
int r = _udev_wait(cookie);
|
||||
|
||||
update_devs();
|
||||
}
|
||||
|
||||
#endif /* UDEV_SYNC_SUPPORT */
|
||||
|
@ -1922,7 +1922,6 @@ int dm_tree_preload_children(struct dm_tree_node *dnode,
|
||||
if (!dm_udev_wait(dm_tree_get_cookie(dnode)))
|
||||
stack;
|
||||
dm_tree_set_cookie(dnode, 0);
|
||||
dm_task_update_nodes();
|
||||
}
|
||||
|
||||
return r;
|
||||
|
@ -658,19 +658,13 @@ static int _create(int argc, char **argv, void *data __attribute__((unused)))
|
||||
|
||||
r = 1;
|
||||
|
||||
if (!_udev_cookie)
|
||||
(void) dm_udev_wait(cookie);
|
||||
|
||||
if (_switches[VERBOSE_ARG])
|
||||
r = _display_info(dmt);
|
||||
|
||||
dm_task_destroy(dmt);
|
||||
|
||||
return r;
|
||||
|
||||
out:
|
||||
if (!_udev_cookie)
|
||||
(void) dm_udev_wait(cookie);
|
||||
|
||||
if (r && _switches[VERBOSE_ARG])
|
||||
r = _display_info(dmt);
|
||||
|
||||
dm_task_destroy(dmt);
|
||||
|
||||
return r;
|
||||
@ -721,6 +715,7 @@ static int _rename(int argc, char **argv, void *data __attribute__((unused)))
|
||||
out:
|
||||
if (!_udev_cookie)
|
||||
(void) dm_udev_wait(cookie);
|
||||
|
||||
dm_task_destroy(dmt);
|
||||
|
||||
return r;
|
||||
@ -1242,14 +1237,15 @@ static int _simple(int task, const char *name, uint32_t event_nr, int display)
|
||||
|
||||
r = dm_task_run(dmt);
|
||||
|
||||
if (r && display && _switches[VERBOSE_ARG])
|
||||
r = _display_info(dmt);
|
||||
|
||||
out:
|
||||
if (!_udev_cookie && udev_wait_flag)
|
||||
(void) dm_udev_wait(cookie);
|
||||
|
||||
if (r && display && _switches[VERBOSE_ARG])
|
||||
r = _display_info(dmt);
|
||||
|
||||
dm_task_destroy(dmt);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user