NetBSD-Bugs archive

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

kern/54504: -9/-current WAPBL panic: current transaction too big to flush



>Number:         54504
>Category:       kern
>Synopsis:       panic: kernel diagnostic assertion "(wapbl_transaction_len(wl) <= (wl->wl_circ_size - wl->wl_reserved_bytes))" failed: file ".../src/sys/kern/vfs_wapbl.c", line 1271 wapbl_end: current transaction too big to flush
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Aug 29 09:00:00 +0000 2019
>Originator:     Frank Kardel
>Release:        NetBSD 9.99.6
>Organization:
	
>Environment:
	
	
System: NetBSD pip.kardel.name 9.99.6 NetBSD 9.99.6 (PIPGEN) #20: Sat Aug 10 12:14:12 CEST 2019 kardel@:.../src/obj.amd64/sys/arch/amd64/compile/PIPGEN amd64
Architecture: x86_64
Machine: amd64
>Description:
	WAPBL panics when attempting to delete big files as the transaction log size is insufficient.
	On reboot the subsequent mount will also panic when attempting the re-play the log.
>How-To-Repeat:
	Create a big file like 190000000000 bytes and rm/unlink this file in a ffs file system mounted with -o log.
        watch the panic and subsequent panics when attempting to mount the file system again with -o log.
	The mount panic stack trace looks like this:
#0  0xffffffff80222bd5 in cpu_reboot ()
#1  0xffffffff80a36b16 in vpanic ()
#2  0xffffffff80e759eb in kern_assert ()
#3  0xffffffff80aa2326 in wapbl_end ()
#4  0xffffffff80983ddd in ufs_truncate_retry ()
#5  0xffffffff8098406b in ufs_inactive ()
#6  0xffffffff80aa91a1 in VOP_INACTIVE ()
#7  0xffffffff80a9ae5e in vrelel ()
#8  0xffffffff80950ede in ffs_wapbl_replay_finish ()
#9  0xffffffff80951297 in ffs_wapbl_start ()
#10 0xffffffff8094cf71 in ffs_mountfs ()
#11 0xffffffff8094d859 in ffs_mount ()
#12 0xffffffff80a8ff43 in VFS_MOUNT ()
#13 0xffffffff80a8cc41 in mount_domount ()
#14 0xffffffff80a93009 in do_sys_mount ()
#15 0xffffffff80a93677 in sys___mount50 ()
#16 0xffffffff80252ba8 in syscall ()
#17 0xffffffff802096dd in handle_syscall ()

>Fix:
	Workround (presumably): don't use WAPBL.
	Fix: Change WAPBL logic to allow truncation/deletion of big files aka avoid running into transaction size limitations.

>Unformatted:
 	
 	


Home | Main Index | Thread Index | Old Index