Hi, On Mon, Jan 16, 2023 at 5:36 AM Steven Whitehouse <swhit...@redhat.com> wrote: > > Hi, > > On Fri, 2023-01-13 at 17:43 -0500, Alexander Aring wrote: > > When I did test with dlm_locktorture module I got several log > > messages > > about: > > > > uevent message has 3 args: add@/module/dlm_locktorture > > uevent message has 3 args: remove@/module/dlm_locktorture > > > > which are not expected and not able to parse by dlm_controld > > process_uevent() function, because mismatch of argument counts. > > Debugging it more, I figured out that those uevents are for > > loading/unloading the dlm_locktorture module and there are uevents > > for > > loading and unloading modules which have nothing todo with dlm > > lockspace > > uevent handling. > > > > The current filter works as: > > > > if (!strstr(buf, "dlm")) > > > I think that is the problem. If you want to filter out all events > except those sent by the DLM module, then you need to look at the > variables sent along with the request. Otherwise whatever string you > look for here might appear in some other random request from a > different subsystem. The event variables are much easier to parse than > the actual event string... > > See a similar example in decode_uevent(), etc here: > > https://github.com/andyprice/gfs2-utils/blob/91c3e9a69ed70d3d522f5b47015da5e5868722ec/group/gfs_controld/main.c > > There are probably nicer ways of doing that, than what I did there, but > it makes it is easier to get at the variables that are passed with the > notification, than to try and parse the first line of the response,
This requires us to switch to the kernel uevent trigger function call from kobject_uevent() [0] to kobject_uevent_env() [1], because we don't have those envs like SUBSYSTEM being sent right now. I was curious because I was sure that I printed out the "raw string" from udev netlink socket and didn't see those envs, otherwise I probably would use it if I saw those. Now I figured out we need to have a UAPI change for that. Unfortunately, for me it looks like older dlm_controld versions cannot handle such change. - Alex [0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/dlm/lockspace.c?h=v6.2-rc4#n200 [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/kobject_uevent.c?h=v6.2-rc4#n447