Bug #3102

vdev_uberblock_load() and vdev_validate() may read the wrong label

Added by Christopher Siden almost 5 years ago. Updated almost 5 years ago.

Status:ResolvedStart date:2012-08-20
Priority:NormalDue date:
Assignee:Christopher Siden% Done:

90%

Category:zfs - Zettabyte File System
Target version:-
Difficulty:Medium Tags:needs-triage

Description

While running 'ztest' we occasionally hit failures that look like this:

Executing zdb -bccsv -U /tank/fs/ztest/zpool.cache ztest
zdb: can't open 'ztest': No such device or address
ztest: '/net/illumos/data/gwilson/dlpx-reguid/proto/root_i386/usr/sbin/i86/zdb
-bccsv -U /tank/fs/ztest/zpool.cache ztest' exit code 1

This happens when we find the best uberblock is on label 0 (updated in txg - 2) but the config associated with label 0 was updated in txg - 1. So the config is newer than the uberblock which should make it invalid but instead we end up using it, causing strange failure conditions.

History

#1 Updated by Eric Schrock almost 5 years ago

  • Status changed from In Progress to Resolved

changeset: 13777:b1e53580146d
user: George Wilson <>
date: Wed Aug 22 08:03:38 2012 -0700
description:
3090 vdev_reopen() during reguid causes vdev to be treated as corrupt
3102 vdev_uberblock_load() and vdev_validate() may read the wrong label
Reviewed by: Matthew Ahrens <>
Reviewed by: Christopher Siden <>
Reviewed by: Garrett D'Amore <>
Approved by: Eric Schrock <>

Also available in: Atom