[PATCH v2] 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 v2] 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..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

Re: [PATCH v2] btrfs: send: in case of IO error log it
Posted by Dāvis Mosāns 4 years, 4 months ago
> 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.