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

libdm: add dm_hold_control_dev

Support hold of control device open.
Useful for daemons so the control device is not frequently reopenned.
This commit is contained in:
Zdenek Kabelac 2015-10-21 20:36:15 +02:00
parent 075f85dcb5
commit 09a62cca0c
4 changed files with 16 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 1.02.110 - Version 1.02.110 -
====================================== ======================================
Add dm_hold_control_dev to allow holding of control device open.
Add dm_report_compact_given_fields to remove given empty fields from report. Add dm_report_compact_given_fields to remove given empty fields from report.
Use libdm status parsing and local mem raid dmeventd plugin. Use libdm status parsing and local mem raid dmeventd plugin.
Use local mem pool and lock only lvm2 execution for mirror dmeventd plugin. Use local mem pool and lock only lvm2 execution for mirror dmeventd plugin.

View File

@ -1 +1,2 @@
dm_report_compact_given_fields dm_report_compact_given_fields
dm_hold_control_dev

View File

@ -81,6 +81,7 @@ static dm_bitset_t _dm_bitset = NULL;
static uint32_t _dm_device_major = 0; static uint32_t _dm_device_major = 0;
static int _control_fd = -1; static int _control_fd = -1;
static int _hold_control_fd_open = 0;
static int _version_checked = 0; static int _version_checked = 0;
static int _version_ok = 1; static int _version_ok = 1;
static unsigned _ioctl_buffer_double_factor = 0; static unsigned _ioctl_buffer_double_factor = 0;
@ -2079,8 +2080,17 @@ repeat_ioctl:
return 0; return 0;
} }
void dm_hold_control_dev(int hold_open)
{
_hold_control_fd_open = hold_open ? 1 : 0;
log_debug("Hold of control device is now %sset.",
_hold_control_fd_open ? "" : "un");
}
void dm_lib_release(void) void dm_lib_release(void)
{ {
if (!_hold_control_fd_open)
_close_control_fd(); _close_control_fd();
dm_timestamp_destroy(_dm_ioctl_timestamp); dm_timestamp_destroy(_dm_ioctl_timestamp);
_dm_ioctl_timestamp = NULL; _dm_ioctl_timestamp = NULL;

View File

@ -1168,6 +1168,9 @@ void dm_lib_init(void) __attribute__((constructor));
void dm_lib_release(void); void dm_lib_release(void);
void dm_lib_exit(void) __attribute__((destructor)); void dm_lib_exit(void) __attribute__((destructor));
/* An optimisation for clients making repeated calls involving dm ioctls */
void dm_hold_control_dev(int hold_open);
/* /*
* Use NULL for all devices. * Use NULL for all devices.
*/ */