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

Commit 89ddeb8c authored by Mike Snitzer's avatar Mike Snitzer Committed by Alasdair G Kergon
Browse files

dm persistent data: use DMERR_LIMIT for errors



Nearly all of persistent-data is in the IO path so throttle error
messages with DMERR_LIMIT to limit the amount logged when
something has gone wrong.

Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent a5bd968a
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -429,17 +429,16 @@ static int dm_bm_validate_buffer(struct dm_block_manager *bm,
			return 0;
		r = v->check(v, (struct dm_block *) buf, dm_bufio_get_block_size(bm->bufio));
		if (unlikely(r)) {
			DMERR("%s validator check failed for block %llu", v->name,
			DMERR_LIMIT("%s validator check failed for block %llu", v->name,
				    (unsigned long long) dm_bufio_get_block_number(buf));
			return r;
		}
		aux->validator = v;
	} else {
		if (unlikely(aux->validator != v)) {
			DMERR("validator mismatch (old=%s vs new=%s) for block %llu",
			DMERR_LIMIT("validator mismatch (old=%s vs new=%s) for block %llu",
				    aux->validator->name, v ? v->name : "NULL",
				(unsigned long long)
					dm_bufio_get_block_number(buf));
				    (unsigned long long) dm_bufio_get_block_number(buf));
			return -EINVAL;
		}
	}
+7 −7
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ static int node_check(struct dm_block_validator *v,
	uint32_t flags;

	if (dm_block_location(b) != le64_to_cpu(h->blocknr)) {
		DMERR("node_check failed blocknr %llu wanted %llu",
		DMERR_LIMIT("node_check failed: blocknr %llu != wanted %llu",
			    le64_to_cpu(h->blocknr), dm_block_location(b));
		return -ENOTBLK;
	}
@@ -54,7 +54,7 @@ static int node_check(struct dm_block_validator *v,
					       block_size - sizeof(__le32),
					       BTREE_CSUM_XOR));
	if (csum_disk != h->csum) {
		DMERR("node_check failed csum %u wanted %u",
		DMERR_LIMIT("node_check failed: csum %u != wanted %u",
			    le32_to_cpu(csum_disk), le32_to_cpu(h->csum));
		return -EILSEQ;
	}
@@ -63,12 +63,12 @@ static int node_check(struct dm_block_validator *v,

	if (sizeof(struct node_header) +
	    (sizeof(__le64) + value_size) * le32_to_cpu(h->max_entries) > block_size) {
		DMERR("node_check failed: max_entries too large");
		DMERR_LIMIT("node_check failed: max_entries too large");
		return -EILSEQ;
	}

	if (le32_to_cpu(h->nr_entries) > le32_to_cpu(h->max_entries)) {
		DMERR("node_check failed, too many entries");
		DMERR_LIMIT("node_check failed: too many entries");
		return -EILSEQ;
	}

@@ -77,7 +77,7 @@ static int node_check(struct dm_block_validator *v,
	 */
	flags = le32_to_cpu(h->flags);
	if (!(flags & INTERNAL_NODE) && !(flags & LEAF_NODE)) {
		DMERR("node_check failed, node is neither INTERNAL or LEAF");
		DMERR_LIMIT("node_check failed: node is neither INTERNAL or LEAF");
		return -EILSEQ;
	}

+8 −8
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ static int index_check(struct dm_block_validator *v,
	__le32 csum_disk;

	if (dm_block_location(b) != le64_to_cpu(mi_le->blocknr)) {
		DMERR("index_check failed blocknr %llu wanted %llu",
		DMERR_LIMIT("index_check failed: blocknr %llu != wanted %llu",
			    le64_to_cpu(mi_le->blocknr), dm_block_location(b));
		return -ENOTBLK;
	}
@@ -48,7 +48,7 @@ static int index_check(struct dm_block_validator *v,
					       block_size - sizeof(__le32),
					       INDEX_CSUM_XOR));
	if (csum_disk != mi_le->csum) {
		DMERR("index_check failed csum %u wanted %u",
		DMERR_LIMIT("index_check failed: csum %u != wanted %u",
			    le32_to_cpu(csum_disk), le32_to_cpu(mi_le->csum));
		return -EILSEQ;
	}
@@ -89,7 +89,7 @@ static int bitmap_check(struct dm_block_validator *v,
	__le32 csum_disk;

	if (dm_block_location(b) != le64_to_cpu(disk_header->blocknr)) {
		DMERR("bitmap check failed blocknr %llu wanted %llu",
		DMERR_LIMIT("bitmap check failed: blocknr %llu != wanted %llu",
			    le64_to_cpu(disk_header->blocknr), dm_block_location(b));
		return -ENOTBLK;
	}
@@ -98,7 +98,7 @@ static int bitmap_check(struct dm_block_validator *v,
					       block_size - sizeof(__le32),
					       BITMAP_CSUM_XOR));
	if (csum_disk != disk_header->csum) {
		DMERR("bitmap check failed csum %u wanted %u",
		DMERR_LIMIT("bitmap check failed: csum %u != wanted %u",
			    le32_to_cpu(csum_disk), le32_to_cpu(disk_header->csum));
		return -EILSEQ;
	}