1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

Initialise clvmd locks before lvm context to avoid open descriptor leaks.

(At least /dev/mapper/control is open after lvm context init.)
This commit is contained in:
Milan Broz 2011-08-10 11:00:32 +00:00
parent 13db59839c
commit 5ddda8cd56
2 changed files with 8 additions and 5 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.87 -
===============================
Initialise clvmd locks before lvm context to avoid open descriptor leaks.
Remove obsoleted GULM clvmd cluster locking support.
Suppress low-level locking errors and warnings while using --sysinit.
Remove unused inconsistent_seqno variable in _vg_read().

View File

@ -721,7 +721,7 @@ static int was_ex_lock(char *uuid, char **argv)
* but this may not be the case...
* I suppose this also comes in handy if clvmd crashes, not that it would!
*/
static void *get_initial_state(char **argv)
static int get_initial_state(char **argv)
{
int lock_mode;
char lv[64], vg[64], flags[25], vg_flags[25];
@ -733,7 +733,7 @@ static void *get_initial_state(char **argv)
"r");
if (!lvs)
return NULL;
return 1;
while (fgets(line, sizeof(line), lvs)) {
if (sscanf(line, "%s %s %s %s\n", vg, lv, flags, vg_flags) == 4) {
@ -773,7 +773,7 @@ static void *get_initial_state(char **argv)
}
if (fclose(lvs))
DEBUGLOG("lvs fclose failed: %s\n", strerror(errno));
return NULL;
return 0;
}
static void lvm2_log_fn(int level, const char *file, int line, int dm_errno,
@ -886,6 +886,10 @@ int init_clvm(char **argv)
init_syslog(LOG_DAEMON);
openlog("clvmd", LOG_PID, LOG_DAEMON);
/* Initialise already held locks */
if (get_initial_state(argv))
log_error("Cannot load initial lock states.");
if (!(cmd = create_toolcontext(1, NULL, 0))) {
log_error("Failed to allocate command context");
return 0;
@ -902,8 +906,6 @@ int init_clvm(char **argv)
check_config();
init_ignore_suspended_devices(1);
get_initial_state(argv);
/* Trap log messages so we can pass them back to the user */
init_log_fn(lvm2_log_fn);
memlock_inc_daemon(cmd);