Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: panic: kernel diagnostic assertion VOP_ISLOCKET(vp) == LK_EXCLUSIVE



Hi,

In message <15BEBCC1-4756-46AD-A424-E5232065BE7D%mailbox.org@localhost>
	on Fri, 22 Apr 2022 19:39:35 +0200,
	"J. Hannken-Illjes" <hannken%mailbox.org@localhost> wrote:
>> #5  0xffffffff80e69314 in VOP_FDISCARD (vp=0xffff879fb253da40,
>>    pos=<optimized out>, len=<optimized out>)
>>    at /usr/src/sys/kern/vnode_if.c:845
>> #6  0xffffffff80e69314 in VOP_FDISCARD (vp=0xffff879fb2e99cc0,
>>    pos=pos@entry=5843857408, len=len@entry=2048)
>>    at /usr/src/sys/kern/vnode_if.c:845
> 
> This one is different from the previous stack trace, two VOP_FDISCARD().
> 
> Could you print the vnodes and mounts from frame #6 and #5,
> ( print *vp and print *vp->v_mount ) please?
(gdb) frame
#5  0xffffffff80e69314 in VOP_FDISCARD (vp=0xffff8380cab3d7c0, 
    pos=<optimized out>, len=<optimized out>)
    at /usr/src/sys/kern/vnode_if.c:845
845             error = (VCALL(vp, VOFFSET(vop_fdiscard), &a));
(gdb) p *vp
$4 = {v_uobj = {vmobjlock = 0xffff83874d7d4200, 
    pgops = 0xffffffff813589c0 <uvm_vnodeops>, uo_npages = 0, uo_refs = 1, 
    uo_pages = {t_root = 0x0, t_height = 0}, uo_ubc = {lh_first = 0x0}}, 
  v_size = 0, v_writesize = 0, v_cv = {cv_opaque = {0x0, 0xffffffff81491feb}}, 
  v_iflag = 0, v_uflag = 0, v_usecount = -2147483647, v_numoutput = 0, 
  v_writecount = 1, v_holdcnt = 0, v_cleanblkhd = {lh_first = 0x0}, 
  v_dirtyblkhd = {lh_first = 0x0}, v_vflag = 16, 
  v_interlock = 0xffff83874d47eec0, v_mount = 0xffff83874d498000, 
  v_op = 0xffff83874b39f400, v_un = {vu_mountedhere = 0xffff838748345a00, 
    vu_socket = 0xffff838748345a00, vu_specnode = 0xffff838748345a00, 
    vu_fifoinfo = 0xffff838748345a00, vu_ractx = 0xffff838748345a00}, 
  v_type = VBLK, v_tag = VT_NON, v_data = 0x0, v_klist = {slh_first = 0x0}, 
  v_klist_interest = 0, v_segvguard = 0x0}
(gdb) p *vp->v_mount
$5 = {mnt_vnodelock = 0xffff83874d47e200, 
  mnt_op = 0xffffffff8188f860 <dead_vfsops>, mnt_vnodecovered = 0x0, 
  mnt_lower = 0x0, mnt_transinfo = 0xffff83874c3aa1c0, mnt_data = 0x0, 
  mnt_renamelock = 0xffff83874d47e1c0, mnt_flag = 0, mnt_iflag = 256, 
  mnt_fs_bshift = 0, mnt_dev_bshift = 0, mnt_specdataref = {
    specdataref_container = 0x0, specdataref_lock = {u = {mtxa_owner = 0, s = {
          mtxs_dummy = 0 '\000', mtxs_ipl = {_ipl = 0 '\000'}, 
          mtxs_lock = 0 '\000', mtxs_unused = 0 '\000'}}}}, 
  mnt_updating = 0xffff83874d47e240, mnt_wapbl_op = 0x0, mnt_wapbl = 0x0, 
  mnt_wapbl_replay = 0x0, mnt_gen = 0, mnt_refcnt = 5, mnt_synclist_slot = 0, 
  mnt_vnodelist = {tqh_first = 0xffff8380cab3d2c0, 
    tqh_last = 0xffff8380cae9d9d8}, mnt_stat = {f_flag = 0, f_bsize = 0, 
    f_frsize = 0, f_iosize = 0, f_blocks = 0, f_bfree = 0, f_bavail = 0, 
    f_bresvd = 0, f_files = 0, f_ffree = 0, f_favail = 0, f_fresvd = 0, 
    f_syncreads = 0, f_syncwrites = 0, f_asyncreads = 0, f_asyncwrites = 0, 
    f_fsidx = {__fsid_val = {0, 0}}, f_fsid = 0, f_namemax = 0, f_owner = 0, 
    f_spare = {0, 0, 0, 0}, f_fstypename = '\000' <repeats 31 times>, 
    f_mntonname = '\000' <repeats 1023 times>, 
    f_mntfromname = '\000' <repeats 1023 times>, 
    f_mntfromlabel = '\000' <repeats 1023 times>}}
(gdb) up
#6  0xffffffff80e69314 in VOP_FDISCARD (vp=0xffff8380cc0e0cc0, 
    pos=pos@entry=3024259072, len=len@entry=2048)
    at /usr/src/sys/kern/vnode_if.c:845
845             error = (VCALL(vp, VOFFSET(vop_fdiscard), &a));
(gdb) p *vp
$6 = {v_uobj = {vmobjlock = 0xffff8380cb4a9e40, 
    pgops = 0xffffffff813589c0 <uvm_vnodeops>, uo_npages = 0, uo_refs = 1, 
    uo_pages = {t_root = 0x0, t_height = 0}, uo_ubc = {lh_first = 0x0}}, 
  v_size = 0, v_writesize = 0, v_cv = {cv_opaque = {0x0, 0xffffffff81491feb}}, 
  v_iflag = 16384, v_uflag = 0, v_usecount = -1073741810, v_numoutput = 0, 
  v_writecount = 0, v_holdcnt = 8, v_cleanblkhd = {
    lh_first = 0xffff8380cd540a88}, v_dirtyblkhd = {
    lh_first = 0xffff8380cd540cb8}, v_vflag = 16, 
  v_interlock = 0xffff8380cb4d8340, v_mount = 0xffff8380cad11000, 
  v_op = 0xffff838748392600, v_un = {vu_mountedhere = 0xffff8380cad1e6c0, 
    vu_socket = 0xffff8380cad1e6c0, vu_specnode = 0xffff8380cad1e6c0, 
    vu_fifoinfo = 0xffff8380cad1e6c0, vu_ractx = 0xffff8380cad1e6c0}, 
  v_type = VBLK, v_tag = VT_UFS, v_data = 0xffff8380cb787b90, v_klist = {
    slh_first = 0x0}, v_klist_interest = 0, v_segvguard = 0x0}
(gdb) p *vp->v_mount
$7 = {mnt_vnodelock = 0xffff83874d47ef00, 
  mnt_op = 0xffffffff81885180 <ffs_vfsops>, mnt_vnodecovered = 0x0, 
  mnt_lower = 0x0, mnt_transinfo = 0xffff8380cad1e040, 
  mnt_data = 0xffff8380cace87c0, mnt_renamelock = 0xffff83874d47ef40, 
  mnt_flag = 8409088, mnt_iflag = 2016, mnt_fs_bshift = 14, 
  mnt_dev_bshift = 9, mnt_specdataref = {specdataref_container = 0x0, 
    specdataref_lock = {u = {mtxa_owner = 0, s = {mtxs_dummy = 0 '\000', 
          mtxs_ipl = {_ipl = 0 '\000'}, mtxs_lock = 0 '\000', 
          mtxs_unused = 0 '\000'}}}}, mnt_updating = 0xffff83874d47ef80, 
  mnt_wapbl_op = 0x0, mnt_wapbl = 0x0, mnt_wapbl_replay = 0x0, mnt_gen = 2, 
  mnt_refcnt = 3069, mnt_synclist_slot = 16, mnt_vnodelist = {
    tqh_first = 0xffff8380cab3da40, tqh_last = 0xffff8380cc8a3c18}, 
  mnt_stat = {f_flag = 0, f_bsize = 16384, f_frsize = 2048, f_iosize = 16384, 
    f_blocks = 508263, f_bfree = 382265, f_bavail = 356852, f_bresvd = 25413, 
    f_files = 127102, f_ffree = 119915, f_favail = 119915, f_fresvd = 0, 
    f_syncreads = 6653, f_syncwrites = 10, f_asyncreads = 0, 
    f_asyncwrites = 37, f_fsidx = {__fsid_val = {43012, 1931}}, 
    f_fsid = 43012, f_namemax = 255, f_owner = 0, f_spare = {0, 0, 0, 0}, 
    f_fstypename = "ffs", '\000' <repeats 28 times>, 
    f_mntonname = "/", '\000' <repeats 1022 times>, 
    f_mntfromname = "/dev/dk4", '\000' <repeats 1015 times>, 
    f_mntfromlabel = "root", '\000' <repeats 1019 times>}}


> What is mounted ( /etc/fstab and mount )?
It is a great hint for me!

I completely forgot that I added "discard" option.

After removing it, no more panic() without patch to ffs_alloc.c.

# cat /etc/fstab
/dev/dk0        /efi            msdos   rw,noauto               0 0
/dev/dk4        /               ffs     rw,discard              1 1
/dev/dk9        none            swap    sw                      0 0
/dev/dk5        /var            ffs     rw,discard              1 2
/dev/dk6        /usr            ffs     rw,discard              1 3
/dev/dk7        /data           ffs     rw,discard              1 4
/dev/dk8        /home           ffs     rw,discard              1 5
tmpfs           /tmp            tmpfs   rw                      0 0
tmpfs           /var/run        tmpfs   rw,-sram%25             0 0
tmpfs           /var/shm        tmpfs   rw,-m1777,-sram%25      0 0
none            /proc           procfs  rw,linux                0 0
ptyfs           /dev/pts        ptyfs   rw                      0 0

Best regards.

-- 
Takahiro Kambe <taca%back-street.net@localhost>


Home | Main Index | Thread Index | Old Index