2022-02-05 14:52:04

by Dāvis Mosāns

[permalink] [raw]
Subject: [PATCH v2] btrfs: send: in case of IO error log it

Currently if we get IO error while doing send then we abort without
logging information about which file caused issue.
So log it to help with debugging.

Signed-off-by: Dāvis Mosāns <[email protected]>
---
fs/btrfs/send.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index d8ccb62aa7d2..a1fd449a5ecc 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -5000,6 +5000,8 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
if (!PageUptodate(page)) {
unlock_page(page);
put_page(page);
+ btrfs_err(fs_info, "send: IO error at offset=%llu for inode=%llu root=%llu",
+ page_offset(page), sctx->cur_ino, sctx->send_root->root_key.objectid);
ret = -EIO;
break;
}
--
2.35.1



2022-02-09 09:55:58

by Dāvis Mosāns

[permalink] [raw]
Subject: Re: [PATCH v2] btrfs: send: in case of IO error log it

> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index d8ccb62aa7d2..a1fd449a5ecc 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -5000,6 +5000,8 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
> if (!PageUptodate(page)) {
> unlock_page(page);
> put_page(page);
> + btrfs_err(fs_info, "send: IO error at offset=%llu for inode=%llu root=%llu",
> + page_offset(page), sctx->cur_ino, sctx->send_root->root_key.objectid);

Thought more about this and I'm guessing using page after put_page is
probably wrong but it did work fine. Submitted v3.