zfs recv errors (g_dev_taste: make_dev_p() failed)

Mike Tancsa mike at sentex.net
Thu Jul 18 20:24:55 UTC 2019


I have been adding zfs replication via a great app called zrepl and ran
into an error / issue I am not 100% sure what to make of.  It only
happens when replication datasets that are volumes with longish names

On the source server (RELENG11 or 12 ) if I do

zfs send -Rv zroot/volumetest at zrepl_20190718_185346_000 | nc 10.151.9.3 1000

and on the recv server I do

nc -l 1000 | zfs recv -vF zroot/12345678901234567890123456

All is fine. The volume comes in no problem.  If instead I add an extra char

nc -l 1000 | zfs recv -vF zroot/12345678901234567890123456a

I get an error / warning in dmesg

g_dev_taste: make_dev_p() failed
(gp->name=zvol/zroot/12345678901234567890123456a at zrepl_20190718_185346_000,
error=63)

It doesnt seem to be the long dataset name. Its what the entire thing
adds up to. 

With a non volume dataset, its OK no matter what giant name/path it adds
up to. 

Any ideas what I am bumping into ? I saw refs to dev name limits of 63
chars, but

/dev/zvol/zroot/12345678901234567890123456

is only 43 from the first / ?

It seems I can send a big ass zvol to a server, see the error / warning
message

0(nfs2)# zfs list -t volume
NAME                                                          USED 
AVAIL  REFER  MOUNTPOINT
zroot-nfs2/zvoltest                                          1.78G  
373G   761M  -
zroot-nfs2/zvoltest1234567890123456789012345678901234567890  1.78G  
373G   761M  -
0(nfs2)#

and I cannot see it at

0(nfs2)# ls -l /dev/zvol/zroot-nfs2/
total 1
dr-xr-xr-x  2 root  wheel     -  512 Jul 18 15:14 .
dr-xr-xr-x  3 root  wheel     -  512 Jul 18 15:14 ..
crw-r-----  1 root  operator  - 0xb8 Jul 18 15:12 zvoltest
crw-r-----  1 root  operator  - 0xbf Jul 18 15:12 zvoltest at mdttest
crw-r-----  1 root  operator  - 0xd8 Jul 18 15:12 zvoltest at mdttest2
crw-r-----  1 root  operator  - 0xd9 Jul 18 15:12 zvoltest at mdttest2p1
crw-r-----  1 root  operator  - 0xc5 Jul 18 15:12 zvoltest at mdttestp1
crw-r-----  1 root  operator  - 0xc4 Jul 18 15:12 zvoltestp1
0(nfs2)#

But if I rename it, its there just fine.

0(nfs2)# zfs rename
zroot-nfs2/zvoltest1234567890123456789012345678901234567890 
zroot-nfs2/zvoltest123
0(nfs2)# ls -l /dev/zvol/zroot-nfs2/
total 1
dr-xr-xr-x  2 root  wheel     -  512 Jul 18 15:14 .
dr-xr-xr-x  3 root  wheel     -  512 Jul 18 15:14 ..
crw-r-----  1 root  operator  - 0xb8 Jul 18 15:12 zvoltest
crw-r-----  1 root  operator  - 0xdf Jul 18 16:09 zvoltest123
crw-r-----  1 root  operator  - 0xde Jul 18 16:09 zvoltest123 at mdttest
crw-r-----  1 root  operator  - 0xdd Jul 18 16:09 zvoltest123 at mdttest2
crw-r-----  1 root  operator  - 0xe0 Jul 18 16:09 zvoltest123 at mdttest2p1
crw-r-----  1 root  operator  - 0xe1 Jul 18 16:09 zvoltest123 at mdttestp1
crw-r-----  1 root  operator  - 0xe2 Jul 18 16:09 zvoltest123p1
crw-r-----  1 root  operator  - 0xbf Jul 18 15:12 zvoltest at mdttest
crw-r-----  1 root  operator  - 0xd8 Jul 18 15:12 zvoltest at mdttest2
crw-r-----  1 root  operator  - 0xd9 Jul 18 15:12 zvoltest at mdttest2p1
crw-r-----  1 root  operator  - 0xc5 Jul 18 15:12 zvoltest at mdttestp1
crw-r-----  1 root  operator  - 0xc4 Jul 18 15:12 zvoltestp1
0(nfs2)#

and it seems to import / work just fine
0(nfs2)# mount /dev/zvol/zroot-nfs2/zvoltest123p1 /mnt

0(nfs2)# ls -l /mnt
total 580471
drwxr-xr-x   3 root  wheel     -           512 Jul 18 16:05 .
drwxr-xr-x  23 root  wheel     uarch        29 Jul 14 13:47 ..
drwxrwxr-x   2 root  operator  -           512 Jul 18 15:07 .snap
-rw-r--r--   1 root  wheel     -           206 Jul 18 16:05 md5.out
-rw-r--r--   1 root  wheel     -     192949248 Jul 18 15:08 testfile
-rw-r--r--   1 root  wheel     -      46393344 Jul 18 15:08 testfile2
-rw-r--r--   1 root  wheel     -     109791232 Jul 18 15:08 testfile23
-rw-r--r--   1 root  wheel     -     244912640 Jul 18 15:08 testfile234
0(nfs2)# cd /mnt
0(nfs2)# md5 test*
MD5 (testfile) = 0abeecb18dbecb85ca7f3b4764db6727
MD5 (testfile2) = 125adf01030dcf683ecdb14fb52e9cb1
MD5 (testfile23) = 0aea64bfd7ce25fac221e6487c5d4512
MD5 (testfile234) = ba2689eeb1cd01aaa4c6510dc501a8e2
0(nfs2)# cat md5.out
MD5 (testfile) = 0abeecb18dbecb85ca7f3b4764db6727
MD5 (testfile2) = 125adf01030dcf683ecdb14fb52e9cb1
MD5 (testfile23) = 0aea64bfd7ce25fac221e6487c5d4512
MD5 (testfile234) = ba2689eeb1cd01aaa4c6510dc501a8e2
0(nfs2)#

So apart from just the limit of not being able to access the volume
from  /dev/zvol without renaming it to something smaller, is there
anything I need to worry about ?

    ---Mike

-- 
-------------------
Mike Tancsa, tel +1 519 651 3400 x203
Sentex Communications, mike at sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   



More information about the freebsd-questions mailing list