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 <dsterba@suse.com>
master
David Sterba 2016-11-15 16:45:01 +01:00
parent 691d1ac8fa
commit bb2c0e23d8
1 changed files with 9 additions and 0 deletions

View File

@ -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)