On Tue, 6 Sep 2016, Michael van Elst wrote:
paul%whooppee.com@localhost (Paul Goyette) writes:Basically, I cloned the hard drive of my other machine using dd, and then put the copy in the new machine, and booted. It comes up fine in single-user mode. However, shortly after typing ^D to the single-user shell, it fails a KASSERT at sys/kern/vfs_wapbl.c line 1088. The following is manually transcribed:Does this make a difference? --- vfs_wapbl.c 19 May 2016 18:32:29 -0000 1.78 +++ vfs_wapbl.c 6 Sep 2016 10:27:37 -0000 @@ -1096,9 +1096,9 @@ bp->b_bcount)); } LIST_INSERT_HEAD(&wl->wl_bufs, bp, b_wapbllist); - mutex_exit(&wl->wl_mtx); bp->b_flags |= B_LOCKED; + mutex_exit(&wl->wl_mtx); } static void
Hard to tell if it makes a difference, since the problem is no longer present. Building with the above change was done on one of the four wapbl file systems, so perhaps the changes have now hidden the bug?
In any case, if the bp->b_flags access needs to be protected by the mutex, a cursory grep shows that there are some other places that might need similar treatment, in wapbl_do_io(), wapbl_resize_buf(), and wapbl_write_blocks().
+------------------+--------------------------+------------------------+ | Paul Goyette | PGP Key fingerprint: | E-mail addresses: | | (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com | | Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org | +------------------+--------------------------+------------------------+