Module Name: src Committed By: bouyer Date: Sun May 25 19:23:49 UTC 2014
Modified Files: src/sys/arch/xen/xen: xbd_xenbus.c src/sys/dev: cgd.c dksubr.c dkvar.h Log Message: As proposed in https://mail-index.netbsd.org/tech-kern/2014/05/21/msg017098.html remove dk_start() and dk_iodone() from dksubr.c and move the related code to the underlying driver. This increase complexity only marginally: the underlying drivers have to do the while() loop themselves, but this can now be done properly with bufq_peek()/bufq_get(), removing the buffer from the queue at the right time. This handle both the recursion and reordering issues (the reordering issue is described here: https://mail-index.netbsd.org/tech-kern/2014/05/19/msg017089.html the recursion isssue is PR #25240). Difference with the patch posted to tech-kern@: KASSERT() that the buffer we remove with bufq_get() is the same as the one we bufq_peek()'d just before. Hopefully this will allow more disk drivers to use dksubr.c To generate a diff of this commit: cvs rdiff -u -r1.62 -r1.63 src/sys/arch/xen/xen/xbd_xenbus.c cvs rdiff -u -r1.86 -r1.87 src/sys/dev/cgd.c cvs rdiff -u -r1.49 -r1.50 src/sys/dev/dksubr.c cvs rdiff -u -r1.18 -r1.19 src/sys/dev/dkvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.