bcachefs: Make sure allocation failure errors are logged
The previous patch fixed a bug in allocation path error handling, and it would've been noticed sooner had it been logged properly. Generally speaking, errors that shouldn't happen in normal operation and are being returned up the stack should be logged: the write path was already logging IO errors, but non IO errors were missed. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
548673f8d3
commit
a7dc10ce68
@ -326,6 +326,12 @@ do { \
|
||||
bch_err(_c, "%s(): error %s", __func__, bch2_err_str(_ret));\
|
||||
} while (0)
|
||||
|
||||
#define bch_err_fn_ratelimited(_c, _ret) \
|
||||
do { \
|
||||
if (should_print_err(_ret)) \
|
||||
bch_err_ratelimited(_c, "%s(): error %s", __func__, bch2_err_str(_ret));\
|
||||
} while (0)
|
||||
|
||||
#define bch_err_msg(_c, _ret, _msg, ...) \
|
||||
do { \
|
||||
if (should_print_err(_ret)) \
|
||||
|
@ -1190,6 +1190,9 @@ bch2_btree_update_start(struct btree_trans *trans, struct btree_path *path,
|
||||
return as;
|
||||
err:
|
||||
bch2_btree_update_free(as, trans);
|
||||
if (!bch2_err_matches(ret, ENOSPC) &&
|
||||
!bch2_err_matches(ret, EROFS))
|
||||
bch_err_fn_ratelimited(c, ret);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
|
@ -418,6 +418,8 @@ static void bch2_update_unwritten_extent(struct btree_trans *trans,
|
||||
continue;
|
||||
}
|
||||
|
||||
bch_err_fn_ratelimited(c, ret);
|
||||
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
|
@ -61,7 +61,7 @@ int bch2_extent_fallocate(struct btree_trans *trans,
|
||||
*/
|
||||
ret = bch2_disk_reservation_get(c, &disk_res, sectors, new_replicas, 0);
|
||||
if (unlikely(ret))
|
||||
goto err;
|
||||
goto err_noprint;
|
||||
|
||||
bch2_bkey_buf_reassemble(&old, c, k);
|
||||
}
|
||||
@ -125,7 +125,12 @@ int bch2_extent_fallocate(struct btree_trans *trans,
|
||||
err:
|
||||
if (!ret && sectors_allocated)
|
||||
bch2_increment_clock(c, sectors_allocated, WRITE);
|
||||
|
||||
if (should_print_err(ret))
|
||||
bch_err_inum_offset_ratelimited(c,
|
||||
inum.inum,
|
||||
iter->pos.offset << 9,
|
||||
"%s(): error: %s", __func__, bch2_err_str(ret));
|
||||
err_noprint:
|
||||
bch2_open_buckets_put(c, &open_buckets);
|
||||
bch2_disk_reservation_put(c, &disk_res);
|
||||
bch2_bkey_buf_exit(&new, c);
|
||||
|
@ -1463,6 +1463,10 @@ err:
|
||||
op->flags |= BCH_WRITE_DONE;
|
||||
|
||||
if (ret < 0) {
|
||||
bch_err_inum_offset_ratelimited(c,
|
||||
op->pos.inode,
|
||||
op->pos.offset << 9,
|
||||
"%s(): error: %s", __func__, bch2_err_str(ret));
|
||||
op->error = ret;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user