On 3/11/20 3:44 PM, Xu, Yanfei wrote: > > On 3/11/20 12:14 PM, He Zhe wrote: >> >> On 3/10/20 2:50 PM, Xu, Yanfei wrote: >>> From: Yanfei Xu <[email protected]> >>> >>> Fix build failure. >>> >>> Even though owner member is now made a permanent member of the >>> rw_semaphore. The rw_semaphore in rwsem-rt.h doesn't have owner >>> field still. >>> >>> ---------------------Error messages--------------------- >>> | >>> /buildarea1/nightly/WRLINUX_MASTER_WR/build_dir/OVP/GIT_202003/lxbuilds/intel-x86-64-preempt-rt-ovp-kvm/wrlinux/build_linux/tmp-glibc/work-shared/intel-x86-64/kernel-source/fs/aufs/i_op.c: >>> In function 'au_pin_hdir_set_owner': >>> | >>> /buildarea1/nightly/WRLINUX_MASTER_WR/build_dir/OVP/GIT_202003/lxbuilds/intel-x86-64-preempt-rt-ovp-kvm/wrlinux/build_linux/tmp-glibc/work-shared/intel-x86-64/kernel-source/fs/aufs/i_op.c:643:45: >>> error: 'struct rw_semaphore' has no member named 'owner' >>> | 643 | atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, >>> (long)task); >>> | | ^ >>> | CC fs/btrfs/zstd.o >>> | AR fs/kernfs/built-in.a >>> | CC arch/x86/kernel/io_delay.o >>> | CC net/ipv6/udplite.o >>> | make[3]: *** >>> [/buildarea1/nightly/WRLINUX_MASTER_WR/build_dir/OVP/GIT_202003/lxbuilds/intel-x86-64-preempt-rt-ovp-kvm/wrlinux/build_linux/tmp-glibc/work-shared/intel-x86-64/kernel-source/scripts/Makefile.build:265: >>> fs/aufs/i_op.o] Error 1 >>> | make[3]: *** Waiting for unfinished jobs.... >>> ------------------------------------------------------ >>> >>> Signed-off-by: Yanfei Xu <[email protected]> >>> --- >>> fs/aufs/i_op.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/fs/aufs/i_op.c b/fs/aufs/i_op.c >>> index ef1e08c7ca10..b6b316b12144 100644 >>> --- a/fs/aufs/i_op.c >>> +++ b/fs/aufs/i_op.c >>> @@ -640,7 +640,9 @@ int au_pin_hdir_relock(struct au_pin *p) >>> static void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct >>> *task) >>> { >>> +#if !defined(CONFIG_PREEMPT_RT) >>> atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, (long)task); >>> +#endif >> This doesn't seem to work as it gives a no-op for RT kernel. >> >> The following diff should work, since rwsem in RT kernel had been >> implemented with rt_mutex. >> But I haven't validated it. >> >> diff --git a/fs/aufs/i_op.c b/fs/aufs/i_op.c >> index ef1e08c7ca10..37b535d19060 100644 >> --- a/fs/aufs/i_op.c >> +++ b/fs/aufs/i_op.c >> @@ -640,7 +640,7 @@ int au_pin_hdir_relock(struct au_pin *p) >> static void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct >> *task) >> { >> - atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, (long)task); >> + p->hdir->hi_inode->i_rwsem.rtmutex.owner = task; >> } > > Good suggestion, and I think "#if !defined(CONFIG_PREEMPT_RT)" should be > reserved to avoid compile > > failure if someone compiles a kernel without CONFIG_PREEMPT_RT with > preempt_rt branchs.
The #if does not make much sense, since people wanting standard kernel should use standard branches. That's enforced by linux-yocto-*.bb. > > I will send a v2 patch soon. Some smoke test needs to be done to make sure the change works well for aufs. Zhe > > // Yanfei > > > >> void au_pin_hdir_acquire_nest(struct au_pin *p) >> >> >> Zhe >> >>> } >>> void au_pin_hdir_acquire_nest(struct au_pin *p) >>> >>> >>
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#8467): https://lists.yoctoproject.org/g/linux-yocto/message/8467 Mute This Topic: https://lists.yoctoproject.org/mt/71852365/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
