]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/home/homed-manager.c
tree-wide: use -EBADF for fd initialization
[thirdparty/systemd.git] / src / home / homed-manager.c
index 9ed1348592f91fc084bfcf49fea61352dfeb2654..2fd1d67eff219237f07f5f7f6264889d7abd1e11 100644 (file)
@@ -10,6 +10,8 @@
 #include <sys/quota.h>
 #include <sys/stat.h>
 
+#include "sd-id128.h"
+
 #include "btrfs-util.h"
 #include "bus-common-errors.h"
 #include "bus-error.h"
@@ -23,6 +25,7 @@
 #include "fileio.h"
 #include "format-util.h"
 #include "fs-util.h"
+#include "glyph-util.h"
 #include "gpt.h"
 #include "home-util.h"
 #include "homed-conf.h"
@@ -118,10 +121,9 @@ static void manager_watch_home(Manager *m) {
 
 static int on_home_inotify(sd_event_source *s, const struct inotify_event *event, void *userdata) {
         _cleanup_free_ char *j = NULL;
-        Manager *m = userdata;
+        Manager *m = ASSERT_PTR(userdata);
         const char *e, *n;
 
-        assert(m);
         assert(event);
 
         if ((event->mask & (IN_Q_OVERFLOW|IN_MOVE_SELF|IN_DELETE_SELF|IN_IGNORED|IN_UNMOUNT)) != 0) {
@@ -482,7 +484,6 @@ static int manager_enumerate_records(Manager *m) {
 static int search_quota(uid_t uid, const char *exclude_quota_path) {
         struct stat exclude_st = {};
         dev_t previous_devno = 0;
-        const char *where;
         int r;
 
         /* Checks whether the specified UID owns any files on the files system, but ignore any file system
@@ -528,7 +529,7 @@ static int search_quota(uid_t uid, const char *exclude_quota_path) {
 
                 previous_devno = st.st_dev;
 
-                r = quotactl_devno(QCMD_FIXED(Q_GETQUOTA, USRQUOTA), st.st_dev, uid, &req);
+                r = quotactl_devnum(QCMD_FIXED(Q_GETQUOTA, USRQUOTA), st.st_dev, uid, &req);
                 if (r < 0) {
                         if (ERRNO_IS_NOT_SUPPORTED(r))
                                 log_debug_errno(r, "No UID quota support on %s, ignoring.", where);
@@ -859,7 +860,7 @@ static int manager_assess_image(
 
         if (S_ISDIR(st.st_mode)) {
                 _cleanup_free_ char *n = NULL, *user_name = NULL, *realm = NULL;
-                _cleanup_close_ int fd = -1;
+                _cleanup_close_ int fd = -EBADF;
                 UserStorage storage;
 
                 if (!directory_suffix)
@@ -1040,7 +1041,7 @@ static ssize_t read_datagram(
 
         CMSG_BUFFER_TYPE(CMSG_SPACE(sizeof(struct ucred)) + CMSG_SPACE(sizeof(int))) control;
         _cleanup_free_ void *buffer = NULL;
-        _cleanup_close_ int passed_fd = -1;
+        _cleanup_close_ int passed_fd = -EBADF;
         struct ucred *sender = NULL;
         struct cmsghdr *cmsg;
         struct msghdr mh;
@@ -1118,14 +1119,13 @@ static ssize_t read_datagram(
 static int on_notify_socket(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
         _cleanup_strv_free_ char **l = NULL;
         _cleanup_free_ void *datagram = NULL;
-        _cleanup_close_ int passed_fd = -1;
+        _cleanup_close_ int passed_fd = -EBADF;
         struct ucred sender = UCRED_INVALID;
-        Manager *m = userdata;
+        Manager *m = ASSERT_PTR(userdata);
         ssize_t n;
         Home *h;
 
         assert(s);
-        assert(m);
 
         n = read_datagram(fd, &sender, &datagram, &passed_fd);
         if (n < 0) {
@@ -1154,7 +1154,7 @@ static int on_notify_socket(sd_event_source *s, int fd, uint32_t revents, void *
 }
 
 static int manager_listen_notify(Manager *m) {
-        _cleanup_close_ int fd = -1;
+        _cleanup_close_ int fd = -EBADF;
         union sockaddr_union sa = {
                 .un.sun_family = AF_UNIX,
                 .un.sun_path = "/run/systemd/home/notify",
@@ -1239,7 +1239,7 @@ static int manager_add_device(Manager *m, sd_device *d) {
                 return 0;
         if (r < 0)
                 return log_error_errno(r, "Failed to acquire ID_PART_ENTRY_TYPE device property, ignoring: %m");
-        if (id128_equal_string(parttype, GPT_USER_HOME) <= 0) {
+        if (sd_id128_string_equal(parttype, SD_GPT_USER_HOME) <= 0) {
                 log_debug("Found partition (%s) we don't care about, ignoring.", sysfs);
                 return 0;
         }
@@ -1269,10 +1269,9 @@ static int manager_add_device(Manager *m, sd_device *d) {
 }
 
 static int manager_on_device(sd_device_monitor *monitor, sd_device *d, void *userdata) {
-        Manager *m = userdata;
+        Manager *m = ASSERT_PTR(userdata);
         int r;
 
-        assert(m);
         assert(d);
 
         if (device_for_action(d, SD_DEVICE_REMOVE)) {
@@ -1696,9 +1695,7 @@ int manager_gc_images(Manager *m) {
 }
 
 static int on_deferred_rescan(sd_event_source *s, void *userdata) {
-        Manager *m = userdata;
-
-        assert(m);
+        Manager *m = ASSERT_PTR(userdata);
 
         m->deferred_rescan_event_source = sd_event_source_disable_unref(m->deferred_rescan_event_source);
 
@@ -1734,9 +1731,7 @@ int manager_enqueue_rescan(Manager *m) {
 }
 
 static int on_deferred_gc(sd_event_source *s, void *userdata) {
-        Manager *m = userdata;
-
-        assert(m);
+        Manager *m = ASSERT_PTR(userdata);
 
         m->deferred_gc_event_source = sd_event_source_disable_unref(m->deferred_gc_event_source);
 
@@ -1937,8 +1932,10 @@ static int manager_rebalance_calculate(Manager *m) {
                     (m->rebalance_state == REBALANCE_GROWING && h->rebalance_goal < h->rebalance_size))
                         h->rebalance_pending = false;
                 else {
-                        log_debug("Rebalancing home directory '%s' %s → %s.", h->user_name,
-                                  FORMAT_BYTES(h->rebalance_size), FORMAT_BYTES(h->rebalance_goal));
+                        log_debug("Rebalancing home directory '%s' %s %s %s.", h->user_name,
+                                  FORMAT_BYTES(h->rebalance_size),
+                                  special_glyph(SPECIAL_GLYPH_ARROW_RIGHT),
+                                  FORMAT_BYTES(h->rebalance_goal));
                         h->rebalance_pending = true;
                 }
 
@@ -2091,10 +2088,9 @@ finish:
 }
 
 static int on_rebalance_timer(sd_event_source *s, usec_t t, void *userdata) {
-        Manager *m = userdata;
+        Manager *m = ASSERT_PTR(userdata);
 
         assert(s);
-        assert(m);
         assert(IN_SET(m->rebalance_state, REBALANCE_WAITING, REBALANCE_PENDING, REBALANCE_SHRINKING, REBALANCE_GROWING));
 
         (void) manager_rebalance_now(m);