]> sourceware.org Git - lvm2.git/commitdiff
libdm: unlink checks for ENOENT
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 7 May 2024 20:34:17 +0000 (22:34 +0200)
committerZdenek Kabelac <zkabelac@redhat.com>
Tue, 7 May 2024 23:55:21 +0000 (01:55 +0200)
device_mapper/ioctl/libdm-iface.c
device_mapper/libdm-common.c
libdm/ioctl/libdm-iface.c
libdm/libdm-common.c

index ba5ad382c6319623ef8d6fa476546643b2491287..dc7abb389280df6ade76e23ea94b11f4652f9870 100644 (file)
@@ -247,6 +247,16 @@ static int _control_device_number(uint32_t *major, uint32_t *minor)
        return 1;
 }
 
+static int _control_unlink(const char *control)
+{
+       if (unlink(control) && (errno != ENOENT)) {
+               log_sys_error("unlink", control);
+               return -1;
+       }
+
+       return 0;
+}
+
 /*
  * Returns 1 if it exists on returning; 0 if it doesn't; -1 if it's wrong.
  */
@@ -262,10 +272,7 @@ static int _control_exists(const char *control, uint32_t major, uint32_t minor)
 
        if (!S_ISCHR(buf.st_mode)) {
                log_verbose("%s: Wrong inode type", control);
-               if (!unlink(control))
-                       return 0;
-               log_sys_error("unlink", control);
-               return -1;
+               return _control_unlink(control);
        }
 
        if (major && buf.st_rdev != MKDEV(major, minor)) {
@@ -273,10 +280,7 @@ static int _control_exists(const char *control, uint32_t major, uint32_t minor)
                            "(%u, %u)", control,
                            MAJOR(buf.st_mode), MINOR(buf.st_mode),
                            major, minor);
-               if (!unlink(control))
-                       return 0;
-               log_sys_error("unlink", control);
-               return -1;
+               return _control_unlink(control);
        }
 
        return 1;
index 9d672e8337072e165b3fbba15336b28534c0d73f..de63eb424535e453ca53bd436ee03b521db8b309 100644 (file)
@@ -1060,9 +1060,8 @@ static int _add_dev_node(const char *dev_name, uint32_t major, uint32_t minor,
                if (info.st_rdev == dev)
                        return 1;
 
-               if (unlink(path) < 0) {
-                       log_error("Unable to unlink device node for '%s'",
-                                 dev_name);
+               if (unlink(path) && (errno != ENOENT)) {
+                       log_sys_error("unlink", path);
                        return 0;
                }
        } else if (_warn_if_op_needed(warn_if_udev_failed))
@@ -1106,8 +1105,8 @@ static int _rm_dev_node(const char *dev_name, int warn_if_udev_failed)
                         "Falling back to direct node removal.", path);
 
        /* udev may already have deleted the node. Ignore ENOENT. */
-       if (unlink(path) < 0 && errno != ENOENT) {
-               log_error("Unable to unlink device node for '%s'", dev_name);
+       if (unlink(path) && (errno != ENOENT)) {
+               log_sys_error("unlink", path);
                return 0;
        }
 
index d9ba0849a3418c9af588677671303b2c45895228..5bb385366c9f35a8d1b93779ce733773d12d3b5e 100644 (file)
@@ -246,6 +246,16 @@ static int _control_device_number(uint32_t *major, uint32_t *minor)
        return 1;
 }
 
+static int _control_unlink(const char *control)
+{
+       if (unlink(control) && (errno != ENOENT)) {
+               log_sys_error("unlink", control);
+               return -1;
+       }
+
+       return 0;
+}
+
 /*
  * Returns 1 if it exists on returning; 0 if it doesn't; -1 if it's wrong.
  */
@@ -261,10 +271,7 @@ static int _control_exists(const char *control, uint32_t major, uint32_t minor)
 
        if (!S_ISCHR(buf.st_mode)) {
                log_verbose("%s: Wrong inode type", control);
-               if (!unlink(control))
-                       return 0;
-               log_sys_error("unlink", control);
-               return -1;
+               return _control_unlink(control);
        }
 
        if (major && buf.st_rdev != MKDEV(major, minor)) {
@@ -272,10 +279,7 @@ static int _control_exists(const char *control, uint32_t major, uint32_t minor)
                            "(%u, %u)", control,
                            MAJOR(buf.st_mode), MINOR(buf.st_mode),
                            major, minor);
-               if (!unlink(control))
-                       return 0;
-               log_sys_error("unlink", control);
-               return -1;
+               return _control_unlink(control);
        }
 
        return 1;
index 363358802729b9a4eef8dc9d4b5dee82dc5c6c5d..d0e4c995de3edf2184263e1faf0be4499272a071 100644 (file)
@@ -1058,9 +1058,8 @@ static int _add_dev_node(const char *dev_name, uint32_t major, uint32_t minor,
                if (info.st_rdev == dev)
                        return 1;
 
-               if (unlink(path) < 0) {
-                       log_error("Unable to unlink device node for '%s'",
-                                 dev_name);
+               if (unlink(path) && (errno != ENOENT)) {
+                       log_sys_error("unlink", path);
                        return 0;
                }
        } else if (_warn_if_op_needed(warn_if_udev_failed))
@@ -1104,8 +1103,8 @@ static int _rm_dev_node(const char *dev_name, int warn_if_udev_failed)
                         "Falling back to direct node removal.", path);
 
        /* udev may already have deleted the node. Ignore ENOENT. */
-       if (unlink(path) < 0 && errno != ENOENT) {
-               log_error("Unable to unlink device node for '%s'", dev_name);
+       if (unlink(path) && (errno != ENOENT)) {
+               log_sys_error("unlink", path);
                return 0;
        }
 
This page took 0.049879 seconds and 5 git commands to generate.