1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 18:55:19 +03:00

cleanup: clvmd zombie removal loop

Simplier code to start scan from the next node,
and remove matching pipe client.
This commit is contained in:
Zdenek Kabelac 2014-03-21 12:56:35 +01:00
parent 5740c00f3b
commit 9196274c1e

View File

@ -1179,29 +1179,20 @@ static int cleanup_zombie(struct local_client *thisfd)
/* Remove the pipe client */
if (thisfd->bits.localsock.pipe_client) {
struct local_client *newfd;
struct local_client *lastfd = NULL;
struct local_client *free_fd = NULL;
struct local_client *delfd;
struct local_client *lastfd;
(void) close(thisfd->bits.localsock.pipe_client->fd); /* Close pipe */
(void) close(thisfd->bits.localsock.pipe);
/* Remove pipe client */
for (newfd = &local_client_head; newfd != NULL;
newfd = newfd->next) {
if (thisfd->bits.localsock.
pipe_client == newfd) {
thisfd->bits.localsock.
pipe_client = NULL;
lastfd->next = newfd->next;
free_fd = newfd;
newfd->next = lastfd;
dm_free(free_fd);
for (lastfd = &local_client_head; (delfd = lastfd->next); lastfd = delfd)
if (thisfd->bits.localsock.pipe_client == delfd) {
thisfd->bits.localsock.pipe_client = NULL;
lastfd->next = delfd->next;
dm_free(delfd);
break;
}
lastfd = newfd;
}
}
}