[lvm-devel] master - cleanup: clvmd zombie removal loop
Zdenek Kabelac
zkabelac at fedoraproject.org
Fri Mar 21 21:32:07 UTC 2014
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=9196274c1efb16731ec4ce53adb46366411b7c14
Commit: 9196274c1efb16731ec4ce53adb46366411b7c14
Parent: 5740c00f3b6160147a5bb72217dae9ce5359a525
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Fri Mar 21 12:56:35 2014 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Mar 21 22:29:27 2014 +0100
cleanup: clvmd zombie removal loop
Simplier code to start scan from the next node,
and remove matching pipe client.
---
daemons/clvmd/clvmd.c | 23 +++++++----------------
1 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c
index 3d7d072..9e58fd0 100644
--- a/daemons/clvmd/clvmd.c
+++ b/daemons/clvmd/clvmd.c
@@ -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;
- }
}
}
More information about the lvm-devel
mailing list