On Wed, 13 Sep 2017, Patrick Wildt wrote:
> I think softraid is leaking vnodes. When taking a device offline with
> bioctl -O /dev/sd0a sd2, then wiping the disk with dd (including the
> disklabel), I cannot change sd0's disklabel as it would say "open part-
> ition would change/shrink". This is because on assembly (and rebuild)
> the device is VOP_OPEN()d, but never closed.
>
> With this diff, whenever a disk goes offline (I/O error or bioctl -O),
> we actively close the vnode. One thing I wonder is, this still works
> when the backing device has already detached (USB drive being pulled).
The logic of this idea makes sense to me, though I cannot confirm the
placement of these bits. Joel?
I will note that the exact same chunk of non-trivial code in four
different places certainly calls for a function. Indeed, if the inside of
the 'if' was a function ("sr_entry_close"?), that could be reused in
sr_chunks_unwind()...and the XXX comment there moves to this new function.
Philip Guenther