Re: fsck -C -p: NO WRITE ACCESS

2022-02-21 Thread Andriy Gapon

On 18/02/2022 04:08, John-Mark Gurney wrote:

Andriy Gapon wrote this message on Tue, Feb 15, 2022 at 08:44 +0200:

On 15/02/2022 01:17, John-Mark Gurney wrote:

Andriy Gapon wrote this message on Mon, Feb 07, 2022 at 14:15 +0200:

I've got a problem where fsck behaves differently from my expectations.
The problem happens with a filesystem on a GELI encrypted ZVOL.
The volume has 4K block size and that's the GELI's sector size as well.
FreeBSD is stable/13 from mid January.


Did you put a ffs filesystem that was formatted on a 512 byte sector disk
onto this geli device?


As far as I can recall, no.  I created it with newsfs on the geli device.


Looks like it's a bug in newfs, as I just reproduced this myself:
fsbtodb   int32_t  0x0003

and manually specifying a sector size of 4096 to newfs does not fix the
issue.

This is the issue:
https://cgit.freebsd.org/src/blame/sbin/newfs/newfs.c#n399

It changes the sectorsize back down to 512 from whatever it should
be, which means that the calculation in mkfs.c becomes off.  I'd file
a bug report and get someone who knows FFS to look at it.  I tried to
change mkfs.c to use realsectorsize isntead, so fsbtodb is set to 0, but
then it break ffsinfo, because it's calculations are likely wrong.


Thank you very much for looking into this.
I'll try to draw Kirk's attention to this issue (he is also in this thread, but 
a different sub-thread).



fsck calculates the sector size via (/sbin/fsck_ffs/setup.c):
dev_bsize = sblock.fs_fsize / fsbtodb(&sblock, 1);

and fsbtodb:
../../sys/ufs/ffs/fs.h:#define  fsbtodb(fs, b)  ((daddr_t)(b) << 
(fs)->fs_fsbtodb)


fsize   4096shift   12  mask0xf000
frag8   shift   3   fsbtodb 3


fsize / (1 << 3) == 4096 / 8 == 512.

so, likely updating fsbtodb to be 0 instead of 3 would fix this.  I'm not
sure how to do this though, as tunefs and fsdb don't seem to have options
to do this, and likely you'll want to update all the superblocks w/ this
new value.





--
Andriy Gapon



/dev/diskid

2022-02-21 Thread Andy Farkas



Why do some physical disks not show up in /dev/diskid/ ?

My home server has 6 physical spinning-rust disks in it:

# camcontrol devlist
    at scbus0 target 7 lun 0 (pass0,da0)
    at scbus0 target 8 lun 0 (pass1,da1)
    at scbus0 target 9 lun 0 (pass2,da2)
    at scbus0 target 10 lun 0 (pass3,da3)
   at scbus1 target 0 lun 0 (ada0,pass4)
   at scbus3 target 0 lun 0 (ada1,pass5)
   at scbus7 target 0 lun 0 (ses0,pass6)
#

Their serial numbers are:

# grep Serial /var/run/dmesg.boot
ada0: Serial Number WD-WCASYD150975
ada1: Serial Number WD-WCASYD147962
da2: Serial Number WFN035TQ
da1: Serial Number Z300CYLN
da3: Serial Number WFN02KHJ
da0: Serial Number Z300CGFH
#

If I look in /dev/diskid/ I only see:

# ls -laF /dev/diskid/
total 1
dr-xr-xr-x   2 root  wheel  512 Feb 20 09:06 ./
dr-xr-xr-x  13 root  wheel  512 Feb 20 09:06 ../
crw-r-   1 root  operator  0x93 Feb 20 09:06 DISK-WFN02KHJ
crw-r-   1 root  operator  0x91 Feb 20 09:06 DISK-Z300CYLN
#


I'm on FreeBSD 12.3-STABLE #0 r371270.


Follow up question - what happened to freebsd-zfs@ ?  Because I am having
extensive problems with my zraid1 pool:

    NAME    STATE READ WRITE CKSUM
    z   DEGRADED 0 0 0
  raidz1-0  DEGRADED 0 0 0
    diskid/DISK-WFN02KHJ    ONLINE   0 0 0 block 
size: 512B configured, 4096B native
    da2 ONLINE   0 0 0 block 
size: 512B configured, 4096B native
    diskid/DISK-Z300CYLN    ONLINE   0 0 0 block 
size: 512B configured, 4096B native

    replacing-3 OFFLINE  0 0 0
  15831259317918491414  OFFLINE  0 0 0 was 
/dev/diskid/DISK-Z300C2CK
  17843536951104768459  OFFLINE  0 0 0 was 
/dev/diskid/DISK-Z300CGFH


What would be the best list to ask for ZFS help?

-andyf