mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +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
aaf717039e
commit
735a00a152
@ -1,5 +1,6 @@
|
||||
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_lib_init to automatically initialise device-mapper library on load.
|
||||
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 */
|
||||
uint32_t *header = alloca(size);
|
||||
char *buf = (char *)header;
|
||||
struct stat fstatbuf;
|
||||
|
||||
while (bytes < size) {
|
||||
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");
|
||||
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) {
|
||||
log_error("Unable to read from event server.");
|
||||
|
Loading…
Reference in New Issue
Block a user