From 0752a75d2e37243245dbd6dfd3e512c6f25eca8c Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Tue, 18 Mar 2014 14:34:16 +1100 Subject: discover: Increase udev monitor buffer size 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 --- discover/udev.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'discover/udev.c') diff --git a/discover/udev.c b/discover/udev.c index b1a25b3..656c5ab 100644 --- a/discover/udev.c +++ b/discover/udev.c @@ -26,6 +26,11 @@ #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; @@ -355,6 +360,12 @@ static int udev_setup_monitor(struct udev *udev, struct udev_monitor **monitor) 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); -- cgit v1.2.1