mirror of https://gitee.com/openkylin/linux.git
Btrfs: fix off by one while setting block groups readonly
When we read in block groups, we'll set non-redundant groups readonly if we find a raid1, DUP or raid10 group. But the ro code has an off by one bug in the math around testing to make sure out accounting doesn't go wrong. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
83a50de97f
commit
65e5341b9a
|
@ -7971,13 +7971,14 @@ static int set_block_group_ro(struct btrfs_block_group_cache *cache)
|
|||
|
||||
if (sinfo->bytes_used + sinfo->bytes_reserved + sinfo->bytes_pinned +
|
||||
sinfo->bytes_may_use + sinfo->bytes_readonly +
|
||||
cache->reserved_pinned + num_bytes < sinfo->total_bytes) {
|
||||
cache->reserved_pinned + num_bytes <= sinfo->total_bytes) {
|
||||
sinfo->bytes_readonly += num_bytes;
|
||||
sinfo->bytes_reserved += cache->reserved_pinned;
|
||||
cache->reserved_pinned = 0;
|
||||
cache->ro = 1;
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
spin_unlock(&cache->lock);
|
||||
spin_unlock(&sinfo->lock);
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue