Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Nov 2019 15:18:24 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Jonathan Anderson <jonathan.anderson@mun.ca>
Cc:        "freebsd-fs@FreeBSD.org" <freebsd-fs@FreeBSD.org>
Subject:   Re: Broken ZFS boot on upgrade
Message-ID:  <cb1a3643-b477-67bf-eddd-b7b21c08b4b9@FreeBSD.org>
In-Reply-To: <20191111131021.GC70914@bagstock.jonandchrissy.ca>
References:  <CAP8WKbJWSHzhFCKijRVxydKEwgD_4NX2gmA-QVEVZPuotFCGvQ@mail.gmail.com> <1cb4895b-c84d-6204-18fa-53eac7195ad6@FreeBSD.org> <20191111131021.GC70914@bagstock.jonandchrissy.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11/11/2019 15:10, Jonathan Anderson wrote:
> On 11/11, Andriy Gapon wrote:
>> Could it be that you have 2TB+ disk(s) and a relatively old BIOS ?
> 
> The first two vdevs use 1 TiB disks, but the third vdev has 3 TiB disks, so that
> sounds like a possible explanation... perhaps the contents of /boot previously
> resided on one of the 1 TiB vdevs but the new /boot lives on the new vdev
> post-upgrade. Is there a zfs admin command to ask which vdev(s) a file or
> directory's blocks reside on?

You need to find out the inode number first (ls -i or stat -s).
Then you can use zdb -ddddd <zfs dataset> <inum>
For example:
$ zdb -ddddd rpool/ROOT/20171102 4557
...
               0 L1  0:16e1304000:2000 20000L/2000P F=102 B=26531456/26531456
               0  L0 0:2d155d000:20000 20000L/20000P F=1 B=26531456/26531456
           20000  L0 0:2d1c91000:20000 20000L/20000P F=1 B=26531456/26531456
           40000  L0 0:2d1cb1000:20000 20000L/20000P F=1 B=26531456/26531456
           60000  L0 0:129eeef000:20000 20000L/20000P F=1 B=26531456/26531456
           80000  L0 0:129f138000:20000 20000L/20000P F=1 B=26531456/26531456
           a0000  L0 0:129ef0f000:20000 20000L/20000P F=1 B=26531456/26531456
           c0000  L0 0:129f1c3000:20000 20000L/20000P F=1 B=26531456/26531456
           e0000  L0 0:129f2c6000:20000 20000L/20000P F=1 B=26531456/26531456
[... lots of ouput ...]
0:129f2c6000:20000 is a block pointer.
0 is a vdev number, typically it's n-th device zpool status output.
129f2c6000 is a hexadecimal offset within a vdev, in bytes.
20000 is a hexadecimal block size.

> My BIOS is from 2016, so not "old", but possibly old enough?

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cb1a3643-b477-67bf-eddd-b7b21c08b4b9>