On Dec 30, 7:11pm, "Michael van Elst" wrote: } } This is a multi-part message in MIME format. } } --_----------=_141996666543200 } Content-Disposition: inline } Content-Transfer-Encoding: 8bit } Content-Type: text/plain; charset="US-ASCII" } } Module Name: src } Committed By: mlelstv } Date: Tue Dec 30 19:11:05 UTC 2014 } } Modified Files: } src/sys/dev: ccd.c } } Log Message: } Fix locking error. } Clear EPASSTHROUGH return value from disk_ioctl. } Add missing wedge ioctls.
Thanks. It looks like you need to do this with cgd(4) as well. I pulled the wedge stuff from there. Looks like I should have chosen a better driver to emulate. BTW, given that the wedge stuff is pretty basic and doesn't have much in the way of device specific code, why isn't it handled in a common function (i.e. disk_ioctl())? } To generate a diff of this commit: } cvs rdiff -u -r1.156 -r1.157 src/sys/dev/ccd.c } } Please note that diffs are not public domain; they are subject to the } copyright notices on the relevant files. } } } --_----------=_141996666543200 } Content-Disposition: inline } Content-Length: 3804 } Content-Transfer-Encoding: binary } Content-Type: text/x-diff; charset=us-ascii } } Modified files: } } Index: src/sys/dev/ccd.c } diff -u src/sys/dev/ccd.c:1.156 src/sys/dev/ccd.c:1.157 } --- src/sys/dev/ccd.c:1.156 Tue Dec 30 12:42:16 2014 } +++ src/sys/dev/ccd.c Tue Dec 30 19:11:05 2014 } @@ -1288,6 +1300,9 @@ ccdioctl(dev_t dev, u_long cmd, void *da } goto out; } } } } + /* Delete all of our wedges. */ } + dkwedge_delall(&cs->sc_dkdev); } + } /* Stop new I/O, wait for in-flight I/O to complete. */ } mutex_enter(cs->sc_iolock); } cs->sc_flags &= ~(CCDF_INITED|CCDF_VLABEL); } @@ -1337,7 +1352,6 @@ ccdioctl(dev_t dev, u_long cmd, void *da } aprint_normal("%s: detached\n", cs->sc_xname); } } /* Detach the disk. */ } - dkwedge_delall(&cs->sc_dkdev); } disk_detach(&cs->sc_dkdev); } bufq_free(cs->sc_bufq); } ccdput(cs); Uh, why delete the wedges prior to I/O completion? }-- End of excerpt from "Michael van Elst"