summaryrefslogtreecommitdiff
path: root/block/blk-stat.c
diff options
context:
space:
mode:
authorAlan Huang <mmpgouride@gmail.com>2024-08-27 23:14:48 +0800
committerKent Overstreet <kent.overstreet@linux.dev>2024-09-27 22:32:23 -0400
commite057a290ef715d2765560778625e1660b7352994 (patch)
treea4bad53c297e41293809b9b685de8bc2111c5a92 /block/blk-stat.c
parentd50d7a5fa4df3190b6b6c6d6551b631fda4a4ed2 (diff)
bcachefs: Fix lost wake up
If the reader acquires the read lock and then the writer enters the slow path, while the reader proceeds to the unlock path, the following scenario can occur without the change: writer: pcpu_read_count(lock) return 1 (so __do_six_trylock will return 0) reader: this_cpu_dec(*lock->readers) reader: smp_mb() reader: state = atomic_read(&lock->state) (there is no waiting flag set) writer: six_set_bitmask() then the writer will sleep forever. Signed-off-by: Alan Huang <mmpgouride@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'block/blk-stat.c')
0 files changed, 0 insertions, 0 deletions