]> git.ozlabs.org Git - petitboot/commitdiff
discover: Increase udev monitor buffer size
authorJeremy Kerr <jk@ozlabs.org>
Tue, 18 Mar 2014 03:34:16 +0000 (14:34 +1100)
committerJeremy Kerr <jk@ozlabs.org>
Tue, 18 Mar 2014 04:33:56 +0000 (15:33 +1100)
Since we may be enumerating devices after enabling the udev monitor, we
may miss udev events that occur during this process.

This change increases the default udev buffer size.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
discover/udev.c

index b1a25b3e639925ee753b53ad4830c9db75e2a7ba..656c5ab7faa3cacb294f329bdea474f50e526c07 100644 (file)
 #include "device-handler.h"
 #include "cdrom.h"
 
 #include "device-handler.h"
 #include "cdrom.h"
 
+/* We set a default monitor buffer size, as we may not process monitor
+ * events while performing device discvoery. systemd uses a 128M buffer, so
+ * we'll do the same here */
+static const int monitor_bufsize = 128 * 1024 * 1024;
+
 struct pb_udev {
        struct udev *udev;
        struct udev_monitor *monitor;
 struct pb_udev {
        struct udev *udev;
        struct udev_monitor *monitor;
@@ -355,6 +360,12 @@ static int udev_setup_monitor(struct udev *udev, struct udev_monitor **monitor)
                goto out_err;
        }
 
                goto out_err;
        }
 
+       result = udev_monitor_set_receive_buffer_size(m, monitor_bufsize);
+       if (result) {
+               pb_log("udev_monitor_set_rx_bufsize(%d) failed\n",
+                       monitor_bufsize);
+       }
+
        result = udev_monitor_filter_add_match_subsystem_devtype(m, "block",
                NULL);
 
        result = udev_monitor_filter_add_match_subsystem_devtype(m, "block",
                NULL);