mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-17 06:04:23 +03:00
Detect failing fifo
If the fifo died because of dmeventd restart - do not wait for 20s in select - it will not get better and return error immediately.
This commit is contained in:
parent
5b29e2ac60
commit
80202ecd98
@ -1,5 +1,6 @@
|
|||||||
Version 1.02.71 -
|
Version 1.02.71 -
|
||||||
====================================
|
====================================
|
||||||
|
Detect failing fifo and skip 20s retry communication period.
|
||||||
Add DM_DEFAULT_NAME_MANGLING_MODE env. variable to override configured value.
|
Add DM_DEFAULT_NAME_MANGLING_MODE env. variable to override configured value.
|
||||||
Add dm_lib_init to automatically initialise device-mapper library on load.
|
Add dm_lib_init to automatically initialise device-mapper library on load.
|
||||||
Replace any '\' char with '\\' in table specification on input.
|
Replace any '\' char with '\\' in table specification on input.
|
||||||
|
@ -232,6 +232,7 @@ static int _daemon_read(struct dm_event_fifos *fifos,
|
|||||||
size_t size = 2 * sizeof(uint32_t); /* status + size */
|
size_t size = 2 * sizeof(uint32_t); /* status + size */
|
||||||
uint32_t *header = alloca(size);
|
uint32_t *header = alloca(size);
|
||||||
char *buf = (char *)header;
|
char *buf = (char *)header;
|
||||||
|
struct stat fstatbuf;
|
||||||
|
|
||||||
while (bytes < size) {
|
while (bytes < size) {
|
||||||
for (i = 0, ret = 0; (i < 20) && (ret < 1); i++) {
|
for (i = 0, ret = 0; (i < 20) && (ret < 1); i++) {
|
||||||
@ -245,6 +246,13 @@ static int _daemon_read(struct dm_event_fifos *fifos,
|
|||||||
log_error("Unable to read from event server");
|
log_error("Unable to read from event server");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* Check whether fifo is still alive */
|
||||||
|
if ((ret == 0) &&
|
||||||
|
fstat(fifos->server + 1, &fstatbuf) &&
|
||||||
|
(errno == EBADF)) {
|
||||||
|
log_error("Fifo fd is bad for event server.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ret < 1) {
|
if (ret < 1) {
|
||||||
log_error("Unable to read from event server.");
|
log_error("Unable to read from event server.");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user