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

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

dm space map disk: optimise sm_disk_dec_block



Don't waste time spotting blocks that have been allocated and then freed
in the same transaction.

The extra lookup is expensive, and I don't think it really gives us much.

Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
parent 41d35d25
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -140,26 +140,10 @@ static int sm_disk_inc_block(struct dm_space_map *sm, dm_block_t b)

static int sm_disk_dec_block(struct dm_space_map *sm, dm_block_t b)
{
	int r;
	uint32_t old_count;
	enum allocation_event ev;
	struct sm_disk *smd = container_of(sm, struct sm_disk, sm);

	r = sm_ll_dec(&smd->ll, b, &ev);
	if (!r && (ev == SM_FREE)) {
		/*
		 * It's only free if it's also free in the last
		 * transaction.
		 */
		r = sm_ll_lookup(&smd->old_ll, b, &old_count);
		if (r)
			return r;

		if (!old_count)
			smd->nr_allocated_this_transaction--;
	}

	return r;
	return sm_ll_dec(&smd->ll, b, &ev);
}

static int sm_disk_new_block(struct dm_space_map *sm, dm_block_t *b)