Module Name: src Committed By: riastradh Date: Mon Mar 28 12:36:51 UTC 2022
Modified Files: src/sys/miscfs/specfs: spec_vnops.c specdev.h Log Message: specfs: Drain all I/O operations after last .d_close call. New kind of I/O reference on specdevs, sd_iocnt. This could be done with psref instead; I chose a reference count instead for now because we already have to take a per-object lock anyway, v_interlock, for vdead_check, so another atomic is not likely to hurt much more. We can always change the mechanism inside spec_io_enter/exit/drain later on. Make sure every access to vp->v_rdev or vp->v_specnode and every call to a devsw operation is protected either: - by the vnode lock (with vdead_check if we unlocked/relocked), - by positive sd_opencnt, - by spec_io_enter/exit, or - by sd_opencnt management in open/close. To generate a diff of this commit: cvs rdiff -u -r1.201 -r1.202 src/sys/miscfs/specfs/spec_vnops.c cvs rdiff -u -r1.48 -r1.49 src/sys/miscfs/specfs/specdev.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.