Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1f11aff authored by Joe Thornber's avatar Joe Thornber Committed by Mike Snitzer
Browse files

dm thin metadata: fix a race when entering fail mode



In dm_thin_find_block() the ->fail_io flag was checked outside the
metadata device's root_lock, causing dm_thin_find_block() to race with
the setting of this flag.

Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
parent fd467696
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -1390,10 +1390,11 @@ int dm_thin_find_block(struct dm_thin_device *td, dm_block_t block,
	dm_block_t keys[2] = { td->id, block };
	dm_block_t keys[2] = { td->id, block };
	struct dm_btree_info *info;
	struct dm_btree_info *info;


	if (pmd->fail_io)
		return -EINVAL;

	down_read(&pmd->root_lock);
	down_read(&pmd->root_lock);
	if (pmd->fail_io) {
		up_read(&pmd->root_lock);
		return -EINVAL;
	}


	if (can_issue_io) {
	if (can_issue_io) {
		info = &pmd->info;
		info = &pmd->info;