mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
dm thin: use DMERR_LIMIT for errors
Throttle all errors logged from the IO path by dm thin. Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
This commit is contained in:
parent
89ddeb8cb1
commit
c397741c76
@ -567,7 +567,7 @@ static void process_prepared_mapping(struct dm_thin_new_mapping *m)
|
||||
*/
|
||||
r = dm_thin_insert_block(tc->td, m->virt_block, m->data_block);
|
||||
if (r) {
|
||||
DMERR("dm_thin_insert_block() failed");
|
||||
DMERR_LIMIT("dm_thin_insert_block() failed");
|
||||
dm_cell_error(m->cell);
|
||||
goto out;
|
||||
}
|
||||
@ -622,7 +622,7 @@ static void process_prepared_discard(struct dm_thin_new_mapping *m)
|
||||
|
||||
r = dm_thin_remove_block(tc->td, m->virt_block);
|
||||
if (r)
|
||||
DMERR("dm_thin_remove_block() failed");
|
||||
DMERR_LIMIT("dm_thin_remove_block() failed");
|
||||
|
||||
process_prepared_discard_passdown(m);
|
||||
}
|
||||
@ -736,7 +736,7 @@ static void schedule_copy(struct thin_c *tc, dm_block_t virt_block,
|
||||
0, copy_complete, m);
|
||||
if (r < 0) {
|
||||
mempool_free(m, pool->mapping_pool);
|
||||
DMERR("dm_kcopyd_copy() failed");
|
||||
DMERR_LIMIT("dm_kcopyd_copy() failed");
|
||||
dm_cell_error(cell);
|
||||
}
|
||||
}
|
||||
@ -802,7 +802,7 @@ static void schedule_zero(struct thin_c *tc, dm_block_t virt_block,
|
||||
r = dm_kcopyd_zero(pool->copier, 1, &to, 0, copy_complete, m);
|
||||
if (r < 0) {
|
||||
mempool_free(m, pool->mapping_pool);
|
||||
DMERR("dm_kcopyd_zero() failed");
|
||||
DMERR_LIMIT("dm_kcopyd_zero() failed");
|
||||
dm_cell_error(cell);
|
||||
}
|
||||
}
|
||||
@ -814,7 +814,7 @@ static int commit(struct pool *pool)
|
||||
|
||||
r = dm_pool_commit_metadata(pool->pmd);
|
||||
if (r)
|
||||
DMERR("commit failed, error = %d", r);
|
||||
DMERR_LIMIT("commit failed: error = %d", r);
|
||||
|
||||
return r;
|
||||
}
|
||||
@ -997,7 +997,8 @@ static void process_discard(struct thin_c *tc, struct bio *bio)
|
||||
break;
|
||||
|
||||
default:
|
||||
DMERR("discard: find block unexpectedly returned %d", r);
|
||||
DMERR_LIMIT("%s: dm_thin_find_block() failed: error = %d",
|
||||
__func__, r);
|
||||
cell_defer_no_holder(tc, cell);
|
||||
bio_io_error(bio);
|
||||
break;
|
||||
@ -1024,7 +1025,8 @@ static void break_sharing(struct thin_c *tc, struct bio *bio, dm_block_t block,
|
||||
break;
|
||||
|
||||
default:
|
||||
DMERR("%s: alloc_data_block() failed, error = %d", __func__, r);
|
||||
DMERR_LIMIT("%s: alloc_data_block() failed: error = %d",
|
||||
__func__, r);
|
||||
dm_cell_error(cell);
|
||||
break;
|
||||
}
|
||||
@ -1100,7 +1102,8 @@ static void provision_block(struct thin_c *tc, struct bio *bio, dm_block_t block
|
||||
break;
|
||||
|
||||
default:
|
||||
DMERR("%s: alloc_data_block() failed, error = %d", __func__, r);
|
||||
DMERR_LIMIT("%s: alloc_data_block() failed: error = %d",
|
||||
__func__, r);
|
||||
set_pool_mode(tc->pool, PM_READ_ONLY);
|
||||
dm_cell_error(cell);
|
||||
break;
|
||||
@ -1148,7 +1151,8 @@ static void process_bio(struct thin_c *tc, struct bio *bio)
|
||||
break;
|
||||
|
||||
default:
|
||||
DMERR("dm_thin_find_block() failed, error = %d", r);
|
||||
DMERR_LIMIT("%s: dm_thin_find_block() failed: error = %d",
|
||||
__func__, r);
|
||||
cell_defer_no_holder(tc, cell);
|
||||
bio_io_error(bio);
|
||||
break;
|
||||
@ -1190,7 +1194,8 @@ static void process_bio_read_only(struct thin_c *tc, struct bio *bio)
|
||||
break;
|
||||
|
||||
default:
|
||||
DMERR("dm_thin_find_block() failed, error = %d", r);
|
||||
DMERR_LIMIT("%s: dm_thin_find_block() failed: error = %d",
|
||||
__func__, r);
|
||||
bio_io_error(bio);
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user