On Fri, Jul 08, 2022 at 11:55:54AM +1000, Dave Chinner wrote: > + /* > + * If there are no callbacks on this iclog, we can mark it clean > + * immediately and return. Otherwise we need to run the > + * callbacks. > + */ > + if (list_empty(&iclog->ic_callbacks)) { > + xlog_state_clean_iclog(log, iclog); > + return false; > + } > + trace_xlog_iclog_callback(iclog, _RET_IP_); > + iclog->ic_state = XLOG_STATE_CALLBACK; Can you split the optimization of skipping the XLOG_STATE_CALLBACK state out? It seems unrelated to the rest and really confused me when trying to understand this patch. > +static inline void > +xfs_ail_assign_tail_lsn( > + struct xfs_ail *ailp) > +{ > + > + spin_lock(&ailp->ail_lock); > + xfs_ail_update_tail_lsn(ailp); > + spin_unlock(&ailp->ail_lock); > +} This naming scheme seems a lot more confusing than the old _locked suffix or the __ prefix.