[PATCH v3] btrfs: send: in case of IO error log it

Dāvis Mosāns posted 1 patch 4 years, 4 months ago
fs/btrfs/send.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH v3] btrfs: send: in case of IO error log it
Posted by Dāvis Mosāns 4 years, 4 months ago
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 <davispuh@gmail.com>
---
 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

Re: [PATCH v3] btrfs: send: in case of IO error log it
Posted by David Sterba 4 years, 4 months ago
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 <davispuh@gmail.com>

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.