Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Jul 2014 12:00:55 +0200
From:      Fabian Keil <freebsd-listen@fabiankeil.de>
To:        FreeBSD-fs <freebsd-fs@freebsd.org>
Subject:   zfs receive abort(): internal error: File too large
Message-ID:  <132a24ce.33d69bdc@fabiankeil.de>

next in thread | raw e-mail | index | archive | help
--Sig_/O9WPSDW0WHp2oOZEwz6yLQd
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Receiving a certain differential snapshot reproducible triggers
an assertion in zfs(8) on my system (currently 11-CURRENT r268660,
but I'll rebuild with HEAD over the weekend):

| fk@r500 ~ $zogftw sync
| [...]
| receiving incremental stream of tank/usr/local@2014-06-23_22:33 into inte=
nso1/backup/r500/tank/usr/local@2014-06-23_22:33
| in @ 29.4 MiB/s, out @  0.0 KiB/s, 4674 MiB total, buffer 100% fullintern=
al error: File too large
| mbuffer: error: outputThread: error writing to <stdout> at offset 0x1241c=
0000: Broken pipe
| summary: 4674 MiByte in  3 min 45.9 sec - average of 20.7 MiB/s
| mbuffer: warning: error during output to <stdout>: Broken pipe

| fk@r500 ~ $gdb-core zfs.core=20
| [...]
| Reading symbols from /sbin/zfs...done.
| [New process 101713]
| [New Thread 803006400 (LWP 101713)]
| Core was generated by `zfs'.
| Program terminated with signal 6, Aborted.
| #0  kill () at kill.S:3
| 3	RSYSCALL(kill)
| (gdb) where
| #0  kill () at kill.S:3
| #1  0x00000008019fa016 in __raise (s=3D6) at /usr/src/lib/libc/gen/raise.=
c:45
| #2  0x00000008019f8849 in abort () at /usr/src/lib/libc/stdlib/abort.c:65
| #3  0x000000080168ba92 in zfs_verror (hdl=3D<optimized out>, error=3D<opt=
imized out>, fmt=3D<optimized out>, ap=3D<optimized out>, hdl=3D<optimized =
out>,=20
|     error=3D<optimized out>, fmt=3D<optimized out>, ap=3D<optimized out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_util.c:277
| #4  zfs_standard_error_fmt (hdl=3D<optimized out>, error=3D<optimized out=
>, fmt=3D<optimized out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_util.c:403
| #5  0x000000080168b485 in zfs_standard_error (hdl=3D0x3022, warning: Unma=
pped DWARF Register #-2 encountered.
| error=3D<error reading variable: Unable to access DWARF register number 0=
xfffffffe>,=20
|     msg=3D0x8019fa10a <getpid+10> "\017\202\214\031") at /usr/src/cddl/li=
b/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c:=
341
| #6  0x0000000801681b9a in zfs_receive_one (hdl=3D<optimized out>, infd=3D=
<optimized out>, tosnap=3D<optimized out>, flags=3D<optimized out>, drr=3D0=
x0,=20
|     drr_noswap=3D0x0, sendfs=3D<optimized out>, stream_nv=3D<optimized ou=
t>, stream_avl=3D<optimized out>, cleanup_fd=3D<optimized out>,=20
|     action_handlep=3D<optimized out>, top_zfs=3D<optimized out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_sendrecv.c:3109
| #7  zfs_receive_impl (hdl=3D0x80301a200, tosnap=3D<optimized out>, flags=
=3D0x7fffffffde90, infd=3D<optimized out>, sendfs=3D<optimized out>,=20
|     stream_nv=3D<optimized out>, stream_avl=3D<optimized out>, top_zfs=3D=
<optimized out>, cleanup_fd=3D<optimized out>, action_handlep=3D<optimized =
out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_sendrecv.c:3275
| #8  0x0000000801681395 in zfs_receive_package (destname=3D<optimized out>=
, flags=3D<optimized out>, drr=3D0x0, zc=3D0x3001777c1, top_zfs=3D<optimize=
d out>,=20
|     cleanup_fd=3D<optimized out>, action_handlep=3D<optimized out>, hdl=
=3D<optimized out>, fd=3D<optimized out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_sendrecv.c:2501
| #9  zfs_receive_impl (hdl=3D0x80301a200, tosnap=3D0x7fffffffeae5 "intenso=
1/backup/r500/tank/usr/local", flags=3D0x7fffffffde90, infd=3D0,=20
|     sendfs=3D<optimized out>, stream_nv=3D<optimized out>, stream_avl=3D<=
optimized out>, top_zfs=3D<optimized out>, cleanup_fd=3D<optimized out>,=20
|     action_handlep=3D<optimized out>) at /usr/src/cddl/lib/libzfs/../../.=
./cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c:3281
| #10 0x000000080167fe71 in zfs_receive (hdl=3D0x80301a200, tosnap=3D0x7fff=
ffffeae5 "intenso1/backup/r500/tank/usr/local", flags=3D0x7fffffffde90, inf=
d=3D0,=20
|     stream_avl=3D0x0) at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/o=
pensolaris/lib/libzfs/common/libzfs_sendrecv.c:3304
| #11 0x00000000004099a1 in zfs_do_receive (argc=3D<optimized out>, argv=3D=
0x7fffffffe7a0)
|     at /usr/src/cddl/sbin/zfs/../../../cddl/contrib/opensolaris/cmd/zfs/z=
fs_main.c:3950
| #12 0x000000000040572f in main (argc=3D<optimized out>, argv=3D<optimized=
 out>)
|     at /usr/src/cddl/sbin/zfs/../../../cddl/contrib/opensolaris/cmd/zfs/z=
fs_main.c:6953
| (gdb) f 3
| #3  0x000000080168ba92 in zfs_verror (hdl=3D<optimized out>, error=3D<opt=
imized out>, fmt=3D<optimized out>, ap=3D<optimized out>, hdl=3D<optimized =
out>,=20
|     error=3D<optimized out>, fmt=3D<optimized out>, ap=3D<optimized out>)
|     at /usr/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/lib=
zfs/common/libzfs_util.c:277
| 277				abort();
| (gdb) l
| 272=09
| 273		if (hdl->libzfs_printerr) {
| 274			if (error =3D=3D EZFS_UNKNOWN) {
| 275				(void) fprintf(stderr, dgettext(TEXT_DOMAIN, "internal "
| 276				    "error: %s\n"), libzfs_error_description(hdl));
| 277				abort();
| 278			}
| 279=09
| 280			(void) fprintf(stderr, "%s: %s\n", hdl->libzfs_action,
| 281			    libzfs_error_description(hdl));

What zogftw does is:

|    0   4640   3703 sudo -c - zfs send -I @2013-12-22_11:27 tank/usr/local=
@2014-06-23_22:33
| 1001   4641   3703 mbuffer -m 100M
|    0   4642   3703 sudo -c - zfs receive -v -u -F intenso1/backup/r500/ta=
nk/usr/local
|    0   4643   4640 zfs send -I @2013-12-22_11:27 tank/usr/local@2014-06-2=
3_22:33
|    0   4644   4642 zfs receive -v -u -F intenso1/backup/r500/tank/usr/loc=
al

It happens when receiving to other pools as well,
mbuffer always gets to 67.1 MiB.

zstreamdump doesn't seem to consider the stream objectionable:

| fk@r500 ~ $sudo zfs send -I @2013-12-22_11:27 tank/usr/local@2014-06-23_2=
2:33 | zstreamdump
| BEGIN record
| 	hdrtype =3D 2
| 	features =3D 4
| 	magic =3D 2f5bacbac
| 	creation_time =3D 0
| 	type =3D 0
| 	flags =3D 0x0
| 	toguid =3D 0
| 	fromguid =3D 0
| 	toname =3D tank/usr/local@2014-06-23_22:33
| END checksum =3D 2fb1374c0/c59b43b4b2/1a3f6af4955b/262293c445759
| BEGIN record
| 	hdrtype =3D 1
| 	features =3D 4
| 	magic =3D 2f5bacbac
| 	creation_time =3D 53a88f1e
| 	type =3D 2
| 	flags =3D 0x0
| 	toguid =3D f2e0cfa41ab80745
| 	fromguid =3D f1f10991be60bd7d
| 	toname =3D tank/usr/local@2014-06-23_22:33
| END checksum =3D 1bdac72d140ea8d1/9e56d965e806168a/ed215fadf1a47e7f/a99aa=
9cca7be2746
| END checksum =3D 0/0/0/0
| SUMMARY:
| 	Total DRR_BEGIN records =3D 2
| 	Total DRR_END records =3D 3
| 	Total DRR_OBJECT records =3D 98837
| 	Total DRR_FREEOBJECTS records =3D 796
| 	Total DRR_WRITE records =3D 140583
| 	Total DRR_WRITE_BYREF records =3D 0
| 	Total DRR_WRITE_EMBEDDED records =3D 0
| 	Total DRR_FREE records =3D 103847
| 	Total DRR_SPILL records =3D 0
| 	Total records =3D 344068
| 	Total write size =3D 7722947584 (0x1cc52d400)

Receiving tank/usr/local@2014-06-23_22:33 non-incrementally works
as expected, receiving additional incremental snapshots works too.

The zpools:

| fk@r500 ~ $zpool status
|   pool: intenso1
|  state: ONLINE
|   scan: scrub repaired 0 in 0h8m with 0 errors on Fri Jul 18 17:42:59 2014
| config:
|=20
| 	NAME                  STATE     READ WRITE CKSUM
| 	intenso1              ONLINE       0     0     0
| 	  label/intenso1.eli  ONLINE       0     0     0
|=20
| errors: No known data errors
|=20
|   pool: tank
|  state: ONLINE
| status: Some supported features are not enabled on the pool. The pool can
| 	still be used, but some features are unavailable.
| action: Enable all features using 'zpool upgrade'. Once this is done,
| 	the pool may no longer be accessible by software that does not support
| 	the features. See zpool-features(7) for details.
|   scan: scrub repaired 0 in 4h11m with 0 errors on Sat Mar 22 18:25:01 20=
14
| config:
|=20
| 	NAME           STATE     READ WRITE CKSUM
| 	tank           ONLINE       0     0     0
| 	  ada0s1d.eli  ONLINE       0     0     0
|=20
| errors: No known data errors

| fk@r500 ~ $zpool upgrade
| This system supports ZFS pool feature flags.
|=20
| All pools are formatted using feature flags.
|=20
|=20
| Some supported features are not enabled on the following pools. Once a
| feature is enabled the pool may become incompatible with software
| that does not support the feature. See zpool-features(7) for details.
|=20
| POOL  FEATURE
| ---------------
| tank
|       embedded_data
=20
| fk@r500 ~ $zpool list
| NAME       SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
| intenso1  2.72T  13.3G  2.71T     0%  1.00x  ONLINE  -
| tank       228G   193G  35.2G    84%  1.00x  ONLINE  -

According to my logs, I first saw the problem with r267067
(using a different receiving pool), but as the dataset hasn't
been zfs-sent for about 6 months, the problem could be quite
a bit older.

Fabian

--Sig_/O9WPSDW0WHp2oOZEwz6yLQd
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEARECAAYFAlPKQdYACgkQBYqIVf93VJ1LxACgmtDdAjJ4jw6G0ISUeyD5Xadx
rl0AnRn3lE+r0h2K+8HF6uQlnb995fLM
=Uie7
-----END PGP SIGNATURE-----

--Sig_/O9WPSDW0WHp2oOZEwz6yLQd--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?132a24ce.33d69bdc>