2022-02-07 15:11:45

by Dāvis Mosāns

[permalink] [raw]
Subject: [PATCH v3] 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..b1f75fde4a19 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -4999,6 +4999,8 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
lock_page(page);
if (!PageUptodate(page)) {
unlock_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);
put_page(page);
ret = -EIO;
break;
--
2.35.1



2022-02-09 10:02:04

by David Sterba

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

On Sat, Feb 05, 2022 at 08:48:23PM +0200, Dāvis Mosāns wrote:
> 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]>

Added to misc-next, thanks.

> ---
> fs/btrfs/send.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index d8ccb62aa7d2..b1f75fde4a19 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -4999,6 +4999,8 @@ static int put_file_data(struct send_ctx *sctx, u64 offset, u32 len)
> lock_page(page);
> if (!PageUptodate(page)) {
> unlock_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);
> put_page(page);

Good point in v2, using page must be before put_page. I've slightly
reformatted the message so the lines fit to the limit.