1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Fix lv_info open_count test

When verify_udev_operations was disable, code for stacking fs operation for
lvm links was completely disable - but this code was also used for collecting
information, that a new node is being created.

Add a new flag which is set when a creation of lv symlinks is requested which
should restore old behaviour of lv_info function, that has called fs_sync()
before quere for open count on device.
This commit is contained in:
Zdenek Kabelac 2011-10-14 13:23:47 +00:00
parent 5ba3b21921
commit 7f815706ca
4 changed files with 15 additions and 3 deletions

View File

@ -1,6 +1,7 @@
Version 2.02.89 -
==================================
Simplify code for lvm worker thread in clvmd.
Fix lv_info open_count test for disabled verify_udev_operations (2.02.86).
Simplify code for lvm worker thread in clvmd.
Use pthread_barrier to synchronize clvmd threads at startup.
Limit clvmd's thread size to 128KiB.
Reduce default preallocated stack size to 64KiB.

View File

@ -1746,8 +1746,10 @@ static int _create_lv_symlinks(struct dev_manager *dm, struct dm_tree_node *root
int r = 1;
/* Nothing to do if udev fallback is disabled. */
if (!dm->cmd->current_settings.udev_fallback)
if (!dm->cmd->current_settings.udev_fallback) {
fs_set_create();
return 1;
}
while ((child = dm_tree_next_child(&handle, root, 0))) {
if (!(lvlayer = dm_tree_node_get_context(child)))

View File

@ -32,6 +32,7 @@
* Supports to wait for udev device settle only when needed.
*/
static uint32_t _fs_cookie = DM_COOKIE_AUTO_CREATE;
static int _fs_create = 0;
static int _mk_dir(const char *dev_dir, const char *vg_name)
{
@ -427,6 +428,8 @@ static void _pop_fs_ops(void)
fsp->dev, fsp->old_lv_name, fsp->check_udev);
_del_fs_op(fsp);
}
_fs_create = 0;
}
static int _fs_op(fs_op_t type, const char *dev_dir, const char *vg_name,
@ -500,7 +503,12 @@ void fs_set_cookie(uint32_t cookie)
_fs_cookie = cookie;
}
void fs_set_create(void)
{
_fs_create = 1;
}
int fs_has_non_delete_ops(void)
{
return _other_fs_ops(FS_DEL);
return _fs_create || _other_fs_ops(FS_DEL);
}

View File

@ -32,6 +32,7 @@ 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);
void fs_set_create(void);
int fs_has_non_delete_ops(void);
#endif