Message ID | 1418244708-7087-13-git-send-email-mwilck@arcor.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
-------- Original Message -------- Subject: [PATCH 12/18] btrfs restore: check progress of file restoration From: <mwilck@arcor.de> To: <linux-btrfs@vger.kernel.org> Date: 2014?12?11? 04:51 > From: Martin Wilck <mwilck@arcor.de> > > extents should be ordered by file offset. Expect no overlaps, > and report holes. > > Signed-off-by: Martin Wilck <mwilck@arcor.de> > --- > cmds-restore.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/cmds-restore.c b/cmds-restore.c > index 004c82e..80081b8 100644 > --- a/cmds-restore.c > +++ b/cmds-restore.c > @@ -739,6 +739,14 @@ static int copy_file(struct btrfs_root *root, int fd, struct btrfs_key *key, > ret = -1; > goto set_size; > } > + if (found_key.offset < next_pos) { > + fprintf(stderr, "extent overlap, %llu < %llu\n", > + found_key.offset, next_pos); > + ret = -1; > + goto set_size; Would it be better to continue recovery? Even overlap, later extents may still be OK. What about just skip to next extent? Thanks, Qu > + } else if (found_key.offset > next_pos) > + fprintf(stderr, "hole at %llu (%llu bytes)\n", > + next_pos, found_key.offset - next_pos); > > bytes_written = 0ULL; > if (extent_type == BTRFS_FILE_EXTENT_PREALLOC) -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/cmds-restore.c b/cmds-restore.c index 004c82e..80081b8 100644 --- a/cmds-restore.c +++ b/cmds-restore.c @@ -739,6 +739,14 @@ static int copy_file(struct btrfs_root *root, int fd, struct btrfs_key *key, ret = -1; goto set_size; } + if (found_key.offset < next_pos) { + fprintf(stderr, "extent overlap, %llu < %llu\n", + found_key.offset, next_pos); + ret = -1; + goto set_size; + } else if (found_key.offset > next_pos) + fprintf(stderr, "hole at %llu (%llu bytes)\n", + next_pos, found_key.offset - next_pos); bytes_written = 0ULL; if (extent_type == BTRFS_FILE_EXTENT_PREALLOC)