diff options
-rw-r--r-- | fs/bcachefs/bcachefs.h | 4 | ||||
-rw-r--r-- | fs/bcachefs/fs.c | 9 | ||||
-rw-r--r-- | fs/bcachefs/inode.c | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/fs/bcachefs/bcachefs.h b/fs/bcachefs/bcachefs.h index 3b39597a677a..30b3d7b9f9dc 100644 --- a/fs/bcachefs/bcachefs.h +++ b/fs/bcachefs/bcachefs.h @@ -294,8 +294,8 @@ do { \ #define bch_err_fn(_c, _ret) \ bch_err(_c, "%s(): error %s", __func__, bch2_err_str(_ret)) -#define bch_err_msg(_c, _ret, _msg) \ - bch_err(_c, "%s(): error " _msg " %s", __func__, bch2_err_str(_ret)) +#define bch_err_msg(_c, _ret, _msg, ...) \ + bch_err(_c, "%s(): error " _msg " %s", __func__, ##__VA_ARGS__, bch2_err_str(_ret)) #define bch_verbose(c, fmt, ...) \ do { \ diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index e1824bdffdf8..695b8bc55590 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -203,7 +203,7 @@ struct inode *bch2_vfs_inode_get(struct bch_fs *c, subvol_inum inum) if (ret) { iget_failed(&inode->v); - return ERR_PTR(ret); + return ERR_PTR(bch2_err_class(ret)); } mutex_lock(&c->vfs_inodes_lock); @@ -1000,11 +1000,16 @@ static int bch2_vfs_readdir(struct file *file, struct dir_context *ctx) { struct bch_inode_info *inode = file_bch_inode(file); struct bch_fs *c = inode->v.i_sb->s_fs_info; + int ret; if (!dir_emit_dots(file, ctx)) return 0; - return bch2_readdir(c, inode_inum(inode), ctx); + ret = bch2_readdir(c, inode_inum(inode), ctx); + if (ret) + bch_err_fn(c, ret); + + return bch2_err_class(ret); } static const struct file_operations bch_file_operations = { diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c index 294966e42850..e0d416553bf0 100644 --- a/fs/bcachefs/inode.c +++ b/fs/bcachefs/inode.c @@ -348,6 +348,8 @@ int bch2_inode_peek(struct btree_trans *trans, return 0; err: bch2_trans_iter_exit(trans, iter); + if (!bch2_err_matches(ret, BCH_ERR_transaction_restart)) + bch_err_msg(trans->c, ret, "looking up inum %u:%llu:", inum.subvol, inum.inum); return ret; } |