From bb2c0e23d891416b724dd0e72f83aa0d035849c3 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Tue, 15 Nov 2016 16:45:01 +0100 Subject: btrfs-progs: send-stream: track the read position in the stream Can be later used for more precise error reporting. Signed-off-by: David Sterba --- send-stream.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'send-stream.c') diff --git a/send-stream.c b/send-stream.c index 80bf680b..920c7420 100644 --- a/send-stream.c +++ b/send-stream.c @@ -33,6 +33,12 @@ struct btrfs_send_stream { struct btrfs_tlv_header *cmd_attrs[BTRFS_SEND_A_MAX + 1]; u32 version; + /* + * end of last successful read, equivalent to start of current + * malformated part of block + */ + size_t stream_pos; + struct btrfs_send_ops *ops; void *user; }; @@ -71,6 +77,8 @@ out_eof: if (pos < len) { error("short read from stream: expected %zu read %zu", len, pos); ret = -EIO; + } else { + sctx->stream_pos += pos; } out: @@ -478,6 +486,7 @@ int btrfs_read_and_process_send_stream(int fd, sctx.fd = fd; sctx.ops = ops; sctx.user = user; + sctx.stream_pos = 0; ret = read_buf(&sctx, (char*)&hdr, sizeof(hdr)); if (ret < 0) -- cgit v1.2.3