36dc99adac
deadlock in VOP_FSYNC() if the unreferenced vnode picked for reclamation happened to be stacked on top of a vnode the process already had locked. This could happen if the same filesystem was accessed both through a union mount and directly; it seemed to happen most frequently when the direct access was through NFS. Avoid this deadlock by changing vinvalbuf to pass a new FSYNC_RECLAIM flag bit to VOP_FSYNC() to indicate that a reclaim is in progress and only a `shallow' fsync is necessary. Do nothing in *_fsync() in umapfs, nullfs, and unionfs when FSYNC_RECLAIM is set; the underlying vnodes will shortly be released in *_reclaim and may be reclaimed (and fsync'ed) later. |
||
---|---|---|
.. | ||
deadfs | ||
fdesc | ||
fifofs | ||
genfs | ||
kernfs | ||
nullfs | ||
portal | ||
procfs | ||
specfs | ||
umapfs | ||
union | ||
Makefile |