]> sourceware.org Git - lvm2.git/commitdiff
cmirrord: add test for closedir() and close()
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 19 Jun 2012 21:37:53 +0000 (23:37 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Wed, 20 Jun 2012 12:40:39 +0000 (14:40 +0200)
WHATS_NEW
daemons/cmirrord/functions.c
daemons/cmirrord/local.c

index 0158c6c6e734ffd368c925c7798e2b96c3f0a603..10fd72438b97344237d680d45dd7d9b1e3a63f2a 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.97 - 
 ===============================
+  Add tests for errors from closedir(), close() in cmirrord.
   Fix missing sync of filesystem when creating thin volume snapshot.
 
 Version 2.02.96 - 8th June 2012
index 96f7b8eb658b0e7cf0fd54b77561ecb2a22dbf1f..40b4bad7ae68e7c4143a5f2880d3d33e2b28da61 100644 (file)
@@ -337,14 +337,18 @@ static int find_disk_path(char *major_minor_str, char *path_rtn, int *unlink_pat
                    (major(statbuf.st_rdev) == major) &&
                    (minor(statbuf.st_rdev) == minor)) {
                        LOG_DBG("  %s: YES", dep->d_name);
-                       closedir(dp);
+                       if (closedir(dp))
+                               LOG_DBG("Unable to closedir /dev/mapper %s",
+                                       strerror(errno));
                        return 0;
                } else {
                        LOG_DBG("  %s: NO", dep->d_name);
                }
        }
 
-       closedir(dp);
+       if (closedir(dp))
+               LOG_DBG("Unable to closedir /dev/mapper %s",
+                       strerror(errno));
 
        /* FIXME Find out why this was here and deal with underlying problem. */
        LOG_DBG("Path not found for %d/%d", major, minor);
@@ -640,8 +644,9 @@ static int clog_dtr(struct dm_ulog_request *rq)
        LOG_DBG("[%s] Cluster log removed", SHORT_UUID(lc->uuid));
 
        dm_list_del(&lc->list);
-       if (lc->disk_fd != -1)
-               close(lc->disk_fd);
+       if (lc->disk_fd != -1 && close(lc->disk_fd))
+               LOG_ERROR("Failed to close disk log: %s",
+                         strerror(errno));
        if (lc->disk_buffer)
                free(lc->disk_buffer);
        dm_free(lc->clean_bits);
index 8601cfd2709eeaeda0a096ddd8ef95fc2bbefe0a..50711a1a4ec42f1ba141fc988e4057fb2357fd27 100644 (file)
@@ -27,7 +27,7 @@
 #define CN_VAL_DM_USERSPACE_LOG         0x1
 #endif
 
-static int cn_fd;  /* Connector (netlink) socket fd */
+static int cn_fd = -1;  /* Connector (netlink) socket fd */
 static char recv_buf[2048];
 static char send_buf[2048];
 
@@ -384,14 +384,18 @@ int init_local(void)
 
        r = bind(cn_fd, (struct sockaddr *) &addr, sizeof(addr));
        if (r < 0) {
-               close(cn_fd);
+               if (close(cn_fd))
+                       LOG_ERROR("Failed to close socket: %s",
+                                 strerror(errno));
                return EXIT_KERNEL_BIND;
        }
 
        opt = addr.nl_groups;
        r = setsockopt(cn_fd, 270, NETLINK_ADD_MEMBERSHIP, &opt, sizeof(opt));
        if (r) {
-               close(cn_fd);
+               if (close(cn_fd))
+                       LOG_ERROR("Failed to close socket: %s",
+                                 strerror(errno));
                return EXIT_KERNEL_SETSOCKOPT;
        }
 
@@ -412,5 +416,7 @@ int init_local(void)
 void cleanup_local(void)
 {
        links_unregister(cn_fd);
-       close(cn_fd);
+       if (cn_fd >= 0 && close(cn_fd))
+               LOG_ERROR("Failed to close socket: %s",
+                         strerror(errno));
 }
This page took 0.041336 seconds and 5 git commands to generate.