mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
libdm: do not fail if GETVAL semctl fails for udev sync inc and dec
While performing udev sync semaphore's inc/dec operation, we use the result from GETVAL semctl just to print a debug message with current value of that sempahore, nothing else. If the GETVAL fails for whetever reason while the actual inc/dec completes successfully, just log a warning message about the GETVAL (and print the debug messages without the actual semaphore value) and return success for the inc/dec operation as a whole.
This commit is contained in:
parent
f7f08ba881
commit
1e48599193
@ -2443,14 +2443,14 @@ static int _udev_notify_sem_inc(uint32_t cookie, int semid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
||||||
log_error("cookie inc: semid %d: sem_ctl GETVAL failed for "
|
log_warn("cookie inc: semid %d: sem_ctl GETVAL failed for "
|
||||||
"cookie 0x%" PRIx32 ": %s",
|
"cookie 0x%" PRIx32 ": %s",
|
||||||
semid, cookie, strerror(errno));
|
semid, cookie, strerror(errno));
|
||||||
return 0;
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented.",
|
||||||
}
|
cookie, semid);
|
||||||
|
} else
|
||||||
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d",
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d",
|
||||||
cookie, semid, val);
|
cookie, semid, val);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -2460,12 +2460,10 @@ static int _udev_notify_sem_dec(uint32_t cookie, int semid)
|
|||||||
struct sembuf sb = {0, -1, IPC_NOWAIT};
|
struct sembuf sb = {0, -1, IPC_NOWAIT};
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
if ((val = semctl(semid, 0, GETVAL)) < 0)
|
||||||
log_error("cookie dec: semid %d: sem_ctl GETVAL failed for "
|
log_warn("cookie dec: semid %d: sem_ctl GETVAL failed for "
|
||||||
"cookie 0x%" PRIx32 ": %s",
|
"cookie 0x%" PRIx32 ": %s",
|
||||||
semid, cookie, strerror(errno));
|
semid, cookie, strerror(errno));
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (semop(semid, &sb, 1) < 0) {
|
if (semop(semid, &sb, 1) < 0) {
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
@ -2484,9 +2482,12 @@ static int _udev_notify_sem_dec(uint32_t cookie, int semid)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented to %d",
|
if (val < 0)
|
||||||
cookie, semid, val - 1);
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented.",
|
||||||
|
cookie, semid);
|
||||||
|
else
|
||||||
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented to %d",
|
||||||
|
cookie, semid, val - 1);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2442,14 +2442,14 @@ static int _udev_notify_sem_inc(uint32_t cookie, int semid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
||||||
log_error("cookie inc: semid %d: sem_ctl GETVAL failed for "
|
log_warn("cookie inc: semid %d: sem_ctl GETVAL failed for "
|
||||||
"cookie 0x%" PRIx32 ": %s",
|
"cookie 0x%" PRIx32 ": %s",
|
||||||
semid, cookie, strerror(errno));
|
semid, cookie, strerror(errno));
|
||||||
return 0;
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented.",
|
||||||
}
|
cookie, semid);
|
||||||
|
} else
|
||||||
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d",
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d",
|
||||||
cookie, semid, val);
|
cookie, semid, val);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -2459,12 +2459,10 @@ static int _udev_notify_sem_dec(uint32_t cookie, int semid)
|
|||||||
struct sembuf sb = {0, -1, IPC_NOWAIT};
|
struct sembuf sb = {0, -1, IPC_NOWAIT};
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
if ((val = semctl(semid, 0, GETVAL)) < 0) {
|
if ((val = semctl(semid, 0, GETVAL)) < 0)
|
||||||
log_error("cookie dec: semid %d: sem_ctl GETVAL failed for "
|
log_warn("cookie dec: semid %d: sem_ctl GETVAL failed for "
|
||||||
"cookie 0x%" PRIx32 ": %s",
|
"cookie 0x%" PRIx32 ": %s",
|
||||||
semid, cookie, strerror(errno));
|
semid, cookie, strerror(errno));
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (semop(semid, &sb, 1) < 0) {
|
if (semop(semid, &sb, 1) < 0) {
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
@ -2483,9 +2481,12 @@ static int _udev_notify_sem_dec(uint32_t cookie, int semid)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented to %d",
|
if (val < 0)
|
||||||
cookie, semid, val - 1);
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented.",
|
||||||
|
cookie, semid);
|
||||||
|
else
|
||||||
|
log_debug_activation("Udev cookie 0x%" PRIx32 " (semid %d) decremented to %d",
|
||||||
|
cookie, semid, val - 1);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user