mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Synchronize with udev for lv_info
In case the open_count is requested via lv_info - check if there are any udev operations in-progress - and wait for them before checking for lv_info
This commit is contained in:
parent
c221ae8cdb
commit
56cab8cc03
@ -460,6 +460,18 @@ int lv_info(struct cmd_context *cmd, const struct logical_volume *lv, unsigned o
|
||||
|
||||
if (!activation())
|
||||
return 0;
|
||||
/*
|
||||
* If open_count info is requested and we have to be sure our own udev
|
||||
* transactions are finished
|
||||
* For non-clustered locking type we are only interested for non-delete operation
|
||||
* in progress - as only those could lead to opened files
|
||||
*/
|
||||
if (with_open_count) {
|
||||
if (locking_is_clustered())
|
||||
sync_local_dev_names(cmd); /* Wait to have udev in sync */
|
||||
else if (fs_has_non_delete_ops())
|
||||
fs_unlock(); /* For non clustered - wait if there are non-delete ops */
|
||||
}
|
||||
|
||||
if (!dev_manager_info(lv->vg->cmd->mem, lv, origin_only ? "real" : NULL, with_open_count,
|
||||
with_read_ahead, &dminfo, &info->read_ahead))
|
||||
|
@ -422,3 +422,8 @@ void fs_set_cookie(uint32_t cookie)
|
||||
{
|
||||
_fs_cookie = cookie;
|
||||
}
|
||||
|
||||
int fs_has_non_delete_ops(void)
|
||||
{
|
||||
return _other_fs_ops(FS_DEL);
|
||||
}
|
||||
|
@ -32,5 +32,6 @@ int fs_rename_lv(struct logical_volume *lv, const char *dev,
|
||||
/* void fs_unlock(void); moved to activate.h */
|
||||
uint32_t fs_get_cookie(void);
|
||||
void fs_set_cookie(uint32_t cookie);
|
||||
int fs_has_non_delete_ops(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user