On 11.02.21 10:30, Jan Kara wrote:
*/ unsigned long t_log_start;- /* Number of buffers on the t_buffers list [j_list_lock] */+ /* Number of buffers on the t_buffers list [j_list_lock, no lock for quick racy checks] */ int t_nr_buffers;So this case is actually somewhat different now that I audited the uses. There are two types of users - commit code (fs/jbd2/commit.c) and others. Other users properly use j_list_lock to access t_nr_buffers. Commit code does not use any locks because committing transaction is fully in ownership of the jbd2 thread and all other users need to check & wait for commit to be finished before doing anything with the transaction's buffers.
Mhm I see. What about '[..., no locks needed for jbd2 thread]'? How do the others wait for the commit to be finished? - Alex -- Technische Universität Dortmund Alexander Lochmann PGP key: 0xBC3EF6FD Otto-Hahn-Str. 16 phone: +49.231.7556141 D-44227 Dortmund fax: +49.231.7556116 http://ess.cs.tu-dortmund.de/Staff/al
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature