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

Commit 40db5a53 authored by Joe Thornber's avatar Joe Thornber Committed by Alasdair G Kergon
Browse files

dm thin metadata: add dm_thin_changed_this_transaction



Introduce dm_thin_changed_this_transaction to dm-thin-metadata to publish a
useful bit of information we're already tracking.  This will help dm thin
decide when to commit.

Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 66b1edc0
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -1375,10 +1375,9 @@ static int __insert(struct dm_thin_device *td, dm_block_t block,
	if (r)
		return r;

	if (inserted) {
		td->mapped_blocks++;
	td->changed = 1;
	}
	if (inserted)
		td->mapped_blocks++;

	return 0;
}
@@ -1422,6 +1421,17 @@ int dm_thin_remove_block(struct dm_thin_device *td, dm_block_t block)
	return r;
}

bool dm_thin_changed_this_transaction(struct dm_thin_device *td)
{
	int r;

	down_read(&td->pmd->root_lock);
	r = td->changed;
	up_read(&td->pmd->root_lock);

	return r;
}

int dm_pool_alloc_data_block(struct dm_pool_metadata *pmd, dm_block_t *result)
{
	int r;
+2 −0
Original line number Diff line number Diff line
@@ -148,6 +148,8 @@ int dm_thin_remove_block(struct dm_thin_device *td, dm_block_t block);
/*
 * Queries.
 */
bool dm_thin_changed_this_transaction(struct dm_thin_device *td);

int dm_thin_get_highest_mapped_block(struct dm_thin_device *td,
				     dm_block_t *highest_mapped);