diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-01-02 21:16:29 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-01-02 21:16:29 +0300 |
commit | 136292522e43da46bee4c0fef80b2602f79525a2 (patch) | |
tree | 47c892c46e01fa4a3ef014f3737ecee3776969ee /fs/bcachefs/six.c | |
parent | 8ed26ab8d59111c2f7b86d200d1eb97d2a458fd1 (diff) | |
parent | 118e10cd893d57df55b3302dfd188a981b6e6d1c (diff) | |
download | linux-136292522e43da46bee4c0fef80b2602f79525a2.tar.xz |
Merge tag 'loongarch-kvm-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson into HEAD
LoongArch KVM changes for v6.8
1. Optimization for memslot hugepage checking.
2. Cleanup and fix some HW/SW timer issues.
3. Add LSX/LASX (128bit/256bit SIMD) support.
Diffstat (limited to 'fs/bcachefs/six.c')
-rw-r--r-- | fs/bcachefs/six.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/bcachefs/six.c b/fs/bcachefs/six.c index b775cf0fb7cb..97790445e67a 100644 --- a/fs/bcachefs/six.c +++ b/fs/bcachefs/six.c @@ -163,8 +163,11 @@ static int __do_six_trylock(struct six_lock *lock, enum six_lock_type type, this_cpu_sub(*lock->readers, !ret); preempt_enable(); - if (!ret && (old & SIX_LOCK_WAITING_write)) - ret = -1 - SIX_LOCK_write; + if (!ret) { + smp_mb(); + if (atomic_read(&lock->state) & SIX_LOCK_WAITING_write) + ret = -1 - SIX_LOCK_write; + } } else if (type == SIX_LOCK_write && lock->readers) { if (try) { atomic_add(SIX_LOCK_HELD_write, &lock->state); |