diff options
Diffstat (limited to 'btrfs-list.c')
-rw-r--r-- | btrfs-list.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/btrfs-list.c b/btrfs-list.c index ef621f03..ed280210 100644 --- a/btrfs-list.c +++ b/btrfs-list.c @@ -737,7 +737,8 @@ again: } else if (get_gen && sh->type == BTRFS_ROOT_ITEM_KEY) { ri = (struct btrfs_root_item *)(args.buf + off); gen = btrfs_root_generation(ri); - if(ri->generation == ri->generation_v2) { + if(sh->len > + sizeof(struct btrfs_root_item_v0)) { t = ri->otime.sec; memcpy(uuid, ri->uuid, BTRFS_UUID_SIZE); } else { @@ -844,9 +845,11 @@ static int __list_snapshot_search(int fd, struct root_lookup *root_lookup) off += sizeof(*sh); if (sh->type == BTRFS_ROOT_ITEM_KEY && sh->offset) { item = (struct btrfs_root_item *)(args.buf + off); - if(item->generation == item->generation_v2) { + if(sh->len > + sizeof(struct btrfs_root_item_v0)) { t = item->otime.sec; - memcpy(uuid, item->uuid, BTRFS_UUID_SIZE); + memcpy(uuid, item->uuid, + BTRFS_UUID_SIZE); } else { t = 0; memset(uuid, 0, BTRFS_UUID_SIZE); |