Kernel panic zio.c, line: 270 FreeBSD 10.2 (or 10.3)

Andriy Gapon avg at FreeBSD.org
Fri Apr 8 13:40:50 UTC 2016


On 13/03/2016 23:02, DemIS wrote:
> #10 0xffffffff8244ef8b in dbuf_read (db=0xfffff803b1e8de00, zio=0xfffff80071def398, flags=6)
>     at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c:621
...
> #11 0xffffffff8245a777 in dmu_spill_hold_by_dnode (dn=0xfffff805c8be5000, flags=6, tag=0x0, dbp=0xfffff802f48dfa28)
>     at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:333
>         db = (dmu_buf_impl_t *) 0xfffff803b1e8de00
>         err = -512


If you still have this crash dump, then can you please do the following in kgdb?

set print pretty
fr 11
p/x *dn
fr 10
p/x *db

I suspect that the following change might be able to prevent future corruption
of your files, but it won't help with already corrupted files:
https://github.com/openzfs/openzfs/pull/81/commits/ee09d80ceafa7ff7930d1e45dddc21ca3d7a87cb

The following completely untested patch might help to avoid panics with the
corrupted files, but no promises:

diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
index 4396c01334015..94b353d62e3e6 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
@@ -329,7 +329,10 @@ dmu_spill_hold_by_dnode
 		rw_exit(&dn->dn_struct_rwlock);

 	ASSERT(db != NULL);
-	err = dbuf_read(db, NULL, flags);
+	if (db->db.db_size > 0)
+		err = dbuf_read(db, NULL, flags);
+	else
+		err = ENOENT;
 	if (err == 0)
 		*dbp = &db->db;
 	else

-- 
Andriy Gapon


More information about the freebsd-fs mailing list