sbin/hammer: Use last active big-block to limit recovery scan range
commite3cefcca0f8c732eefd2b64b9ab39bb8b06784b3
authorTomohiro Kusumi <kusumi.tomohiro@gmail.com>
Sat, 10 Dec 2016 05:41:43 +0000 (10 14:41 +0900)
committerTomohiro Kusumi <kusumi.tomohiro@gmail.com>
Sat, 10 Dec 2016 13:26:52 +0000 (10 22:26 +0900)
tree994452b2d89b8caab364337ade2a7b1d52e0b7e8
parenta1c3132e65339970423e3b5370f675c220975fbf
sbin/hammer: Use last active big-block to limit recovery scan range

This commit is to fix a bug mentioned in f2dd4b0c. This commit
uses offset of the last active big-block (big-block with maximum
zone-2 offset whose layer2->zone is neither 0,4,15), as an upper
limit of scan range, so it doesn't scan beyond actual consumption.

Note that this upper limit is used only if all layer1/2 entries
have correct CRC values. Otherwise the entire image is scanned
as usual (unless quick option is used).

Note that this upper limit doesn't necessarily equal a big-block
before the first unused big-block offset (i.e. layer2->zone == 0),
because reblock could locate unused big-block between used ones.

Note that using the upper limit also tries to avoid recovery of
irrelevant files from old filesystem that could exist beyond the
upper limit (if not perfect). It also speeds up recovery process.
sbin/hammer/cmd_recover.c