On 24 Sep 2021 at 06:11, Eric Sandeen wrote: > On 9/15/21 8:46 PM, Dave Chinner wrote: >> From: Dave Chinner <dchinner@xxxxxxxxxx> > .. > >> Hence kernel code written with RCU algorithms and atomic variables >> will just slot straight into the userspace xfsprogs code without us >> having to think about whether the lockless algorithms will work in >> userspace or not. This reduces glue and hoop jumping, and gets us >> a step closer to having the entire userspace libxfs code MT safe. >> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> > > ... > >> diff --git a/m4/Makefile b/m4/Makefile >> index c6c73dc9bbee..7312053039f4 100644 >> --- a/m4/Makefile >> +++ b/m4/Makefile >> @@ -24,6 +24,7 @@ LSRCFILES = \ >> package_services.m4 \ >> package_types.m4 \ >> package_icu.m4 \ >> + package_urcu.m4 \ > > This new m4 file is missing from the patchset, I think? > urcu.h maps rcu_init()/rcu_[un]register_thread() to one of the userspace variants e.g. rcu_init() may be mapped to urcu_mb_init(). The configure script generated by autoconf does not include urcu.h in the code snippet it generates to detect availability of rcu_init(). Hence the linker complains about not finding rcu_init() causing configure script to declare that liburcu is not present on the system. After finding the root cause, I searched through configure.ac scripts of Knot DNS (https://www.knot-dns.cz/) and found that the project was using rcu_set_pointer_sym() as the function in their m4 macros. The changes can be obtained from https://github.com/chandanr/xfsprogs-dev/commit/d227e8aac894ffe1d688c6c658b445ca56a173fb -- chandan