]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device-monitor: unconditionally increase buffer size by sd_device_monitor_new() 29872/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 6 Nov 2023 11:39:46 +0000 (20:39 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 6 Nov 2023 11:39:51 +0000 (20:39 +0900)
As suggested at https://github.com/systemd/systemd/pull/29872#discussion_r1382932633:
> socket memory is these days accounted to the process that owns a socket,
> hence we shouldn't be too concerned that this might waste memory.

src/core/device.c
src/libsystemd/sd-device/device-monitor.c
src/network/networkd-manager.c
src/udev/udev-manager.c
src/udev/udevadm-monitor.c
src/udev/udevadm-trigger.c
src/udev/udevadm-wait.c

index ffe85bdb298b3b99450766ed5de558c8b837d482..659e52bf795af51f044d67262cc06b6211f0a50f 100644 (file)
@@ -1028,11 +1028,6 @@ static void device_enumerate(Manager *m) {
                         goto fail;
                 }
 
-                /* This will fail if we are unprivileged, but that
-                 * should not matter much, as user instances won't run
-                 * during boot. */
-                (void) sd_device_monitor_set_receive_buffer_size(m->device_monitor, 128*1024*1024);
-
                 r = sd_device_monitor_filter_add_match_tag(m->device_monitor, "systemd");
                 if (r < 0) {
                         log_error_errno(r, "Failed to add udev tag match: %m");
index 15cb8d0774a04d982df1ef6c501d65e08bbfb3ba..bb4f9bd513e222e71a6308557598ac4ba1e99c9d 100644 (file)
@@ -215,6 +215,15 @@ int device_monitor_new_full(sd_device_monitor **ret, MonitorNetlinkGroup group,
                 }
         }
 
+        /* Let's bump the receive buffer size, but only if we are not called via socket activation, as in
+         * that case the service manager sets the receive buffer size for us, and the value in the .socket
+         * unit should take full effect. */
+        if (fd < 0) {
+                r = sd_device_monitor_set_receive_buffer_size(m, 128*1024*1024);
+                if (r < 0)
+                        log_monitor_errno(m, r, "Failed to increase receive buffer size, ignoring: %m");
+        }
+
         *ret = TAKE_PTR(m);
         return 0;
 
index e02d0992b410d6c0e0262fd4ce93b9d531a6f903..1ca1d7abe5eaa2dffc4ba248be53889b3cd7c777 100644 (file)
@@ -205,10 +205,6 @@ static int manager_connect_udev(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to initialize device monitor: %m");
 
-        r = sd_device_monitor_set_receive_buffer_size(m->device_monitor, RCVBUF_SIZE);
-        if (r < 0)
-                log_warning_errno(r, "Failed to increase buffer size for device monitor, ignoring: %m");
-
         r = sd_device_monitor_filter_add_match_subsystem_devtype(m->device_monitor, "net", NULL);
         if (r < 0)
                 return log_error_errno(r, "Could not add device monitor filter for net subsystem: %m");
index aca241c0c9659b8aea96d705ec2fa372e411f127..9d86845b5f97cd50ef62af46fe2c862e21140f78 100644 (file)
@@ -1225,15 +1225,6 @@ int manager_init(Manager *manager, int fd_ctrl, int fd_uevent) {
         if (r < 0)
                 return log_error_errno(r, "Failed to initialize device monitor: %m");
 
-        /* Bump receiver buffer, but only if we are not called via socket activation, as in that
-         * case systemd sets the receive buffer size for us, and the value in the .socket unit
-         * should take full effect. */
-        if (fd_uevent < 0) {
-                r = sd_device_monitor_set_receive_buffer_size(manager->monitor, 128 * 1024 * 1024);
-                if (r < 0)
-                        log_warning_errno(r, "Failed to set receive buffer size for device monitor, ignoring: %m");
-        }
-
         (void) sd_device_monitor_set_description(manager->monitor, "manager");
 
         r = device_monitor_enable_receiving(manager->monitor);
index dbe13a8d3b7ab57f58c44bae2b5028f3b5ae6636..138b4be1fd7d923836d1f5e00db7ced0985fdee4 100644 (file)
@@ -66,8 +66,6 @@ static int setup_monitor(MonitorNetlinkGroup sender, sd_event *event, sd_device_
         if (r < 0)
                 return log_error_errno(r, "Failed to create netlink socket: %m");
 
-        (void) sd_device_monitor_set_receive_buffer_size(monitor, 128*1024*1024);
-
         r = sd_device_monitor_attach_event(monitor, event);
         if (r < 0)
                 return log_error_errno(r, "Failed to attach event: %m");
index 20dee175d15a67d5d9f5e5e4a709d9e39c764b3b..e0f487de07328a249267923fda6ff59e3f096f62 100644 (file)
@@ -526,8 +526,6 @@ int trigger_main(int argc, char *argv[], void *userdata) {
                 if (r < 0)
                         return log_error_errno(r, "Failed to create device monitor object: %m");
 
-                (void) sd_device_monitor_set_receive_buffer_size(m, 128*1024*1024);
-
                 r = sd_device_monitor_attach_event(m, event);
                 if (r < 0)
                         return log_error_errno(r, "Failed to attach event to device monitor: %m");
index 7fa9b862634a05b954c6ce2dd0aec05a85472658..e6620c25dd1e571031434c8992f3e7c23c74541f 100644 (file)
@@ -184,8 +184,6 @@ static int setup_monitor(sd_event *event, MonitorNetlinkGroup group, const char
         if (r < 0)
                 return r;
 
-        (void) sd_device_monitor_set_receive_buffer_size(monitor, 128*1024*1024);
-
         r = sd_device_monitor_attach_event(monitor, event);
         if (r < 0)
                 return r;