Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Jan 2012 21:01:08 +0100
From:      Milan Obuch <freebsd-ppc@dino.sk>
To:        freebsd-ppc@freebsd.org
Subject:   Broken nullfs on powerpc
Message-ID:  <20120117210108.28d007ec@atom.dino.sk>

next in thread | raw e-mail | index | archive | help
Hi,

some time ago I noticed nullfs does not work on powerpc. I am using it
regularly on i386 and amd64 systems for various reasons, one of them
being ability to use the same sources for multiple systems, located
in /data/src10 directory as an example, mounting it to usual /usr/src
directory for system build.

This does not work for powerpc. Today I built new freshly csupped
10-CURRENT, after booting it, I am able repeatedly invoke panic with
just

mount_nullfs /data/src10 /usr/src
csup standard-supfile

almost immediatelly. When I do only reading, with

mount_nullfs /data/src10 /usr/src
tar cvf /dev/null /usr/src

no panic occured. This makes me almost sure issue is somewhere on write
path in nullfs code.

In addition, I've got following backtrace trying csup command

lock order reversal:
 1st 0xd8744c48 bufwait (bufwait) @ /usr/src/sys/kern/vfs_bio.c:2658
 2nd 0x11744400 dirhash (dirhash)
@ /usr/src/sys/ufs/ufs/ufs_dirhash.c:284 KDB: stack backtrace:
0xe2372390: at kdb_backtrace+0x4c
0xe2372400: at _witness_debugger+0x3c
0xe2372420: at witness_checkorder+0x94c
0xe2372480: at _sx_xlock+0xa0
0xe23724b0: at ufsdirhash_acquire+0x40
0xe23724d0: at ufsdirhash_add+0x30
0xe2372500: at ufs_direnter+0x6e0
0xe2372580: at ufs_makeinode+0x4ec
0xe23726f0: at ufs_create+0x44
0xe2372710: at VOP_CREATE_APV+0xe0
0xe2372730: at VOP_CREATE_AP+0x20
0xe2372750: at null_bypass+0x12c
0xe2372810: at VOP_CREATE_APV+0xf8
0xe2372830: at vn_open_cred+0x23c
0xe2372930: at vn_open+0x24
0xe2372950: at kern_openat+0x1f0
0xe2372a50: at kern_open+0x34
0xe2372a70: at sys_open+0x28
0xe2372a90: at trap+0x388
0xe2372b60: at powerpc_interrupt+0x108
0xe2372b90: user SC trap by _end+0x41120760: srr1=0xf032
            r1=0xff8f7d60 cr=0x48000042 xer=0x20000000 ctr=0x418e5630
panic: mtx_lock() of spin mutex (null)
@ /usr/src/sys/kern/vfs_subr.c:2670 cpuid = 0
KDB: enter: panic

but I have no idea where to go from this. As debugger prompt is
available at this stage, I could look for some additional information,
but need an advice what to look for.

Most probably there is some endianness or 32/64-bit issue here,
however, as amd64 version works for me just fine, I suspect the
former - after all, my test was made on Mac mini, which is G4, 32 bit
big endian processor... I will try to repeat it on G5 PowerMac with
both 32 and 64 bit OS version, but it takes some time to do this.

If anybody has any idea, patch to test, etc. I am ready to work with
as I would really like to have this issue resolved.

Regards,
Milan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120117210108.28d007ec>