On Wed, 20 Nov 2024 16:06:22 +0100, Uros Bizjak wrote: > try_cmpxchg() loop with constant "new" value can be substituted > with just xchg() to atomically get and clear the location. > > The code on x86_64 improves from: > > 1e7f: 48 89 4c 24 10 mov %rcx,0x10(%rsp) > 1e84: 48 03 14 c5 00 00 00 add 0x0(,%rax,8),%rdx > 1e8b: 00 > 1e88: R_X86_64_32S __per_cpu_offset > 1e8c: 8b 02 mov (%rdx),%eax > 1e8e: 41 89 c5 mov %eax,%r13d > 1e91: 31 c9 xor %ecx,%ecx > 1e93: f0 0f b1 0a lock cmpxchg %ecx,(%rdx) > 1e97: 75 f5 jne 1e8e <xlog_cil_commit+0x84e> > 1e99: 48 8b 4c 24 10 mov 0x10(%rsp),%rcx > 1e9e: 45 01 e9 add %r13d,%r9d > > [...] Applied to for-next, thanks! [1/1] xfs: Use xchg() in xlog_cil_insert_pcp_aggregate() commit: 214093534f3c046bf5acc9affbf4e6bd9af4538b Best regards, -- Carlos Maiolino <cem@xxxxxxxxxx>