bcachefs: Don't underflow c->sectors_available
This rarely used error path should've been checking for underflow - oops. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
This commit is contained in:
parent
953ee28a3e
commit
290448ed2e
@ -1437,7 +1437,14 @@ void bch2_trans_fs_usage_apply(struct btree_trans *trans,
|
||||
*/
|
||||
should_not_have_added = added - (s64) disk_res_sectors;
|
||||
if (unlikely(should_not_have_added > 0)) {
|
||||
atomic64_sub(should_not_have_added, &c->sectors_available);
|
||||
u64 old, new, v = atomic64_read(&c->sectors_available);
|
||||
|
||||
do {
|
||||
old = v;
|
||||
new = max_t(s64, 0, old - should_not_have_added);
|
||||
} while ((v = atomic64_cmpxchg(&c->sectors_available,
|
||||
old, new)) != old);
|
||||
|
||||
added -= should_not_have_added;
|
||||
warn = true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user