83b3bdbc8a
- Implement real draining for vfs consumers by not relying on the mnt_lock and using instead a refcount in order to keep track of lock requesters. - Due to the change above, remove the mnt_lock lockmgr because it is now useless. - Due to the change above, vfs_busy() is no more linked to a lockmgr. Change so its KPI by removing the interlock argument and defining 2 new flags for it: MBF_NOWAIT which basically replaces the LK_NOWAIT of the old version (which was unlinked from the lockmgr alredy) and MBF_MNTLSTLOCK which provides the ability to drop the mountlist_mtx once the mnt interlock is held (ability still desired by most consumers). - The stub used into vfs_mount_destroy(), that allows to override the mnt_ref if running for more than 3 seconds, make it totally useless. Remove it as it was thought to work into older versions. If a problem of "refcount held never going away" should appear, we will need to fix properly instead than trust on such hackish solution. - Fix a bug where returning (with an error) from dounmount() was still leaving the MNTK_MWAIT flag on even if it the waiters were actually woken up. Just a place in vfs_mount_destroy() is left because it is going to recycle the structure in any case, so it doesn't matter. - Remove the markercnt refcount as it is useless. This patch modifies VFS ABI and breaks KPI for vfs_busy() so manpages and __FreeBSD_version will be modified accordingly. Discussed with: kib Tested by: pho |
||
---|---|---|
.. | ||
bde | ||
cache | ||
concat | ||
eli | ||
gate | ||
journal | ||
label | ||
linux_lvm | ||
mirror | ||
multipath | ||
nop | ||
part | ||
raid3 | ||
shsec | ||
stripe | ||
uzip | ||
vinum | ||
virstor | ||
zero | ||
geom_aes.c | ||
geom_bsd_enc.c | ||
geom_bsd.c | ||
geom_ccd.c | ||
geom_ctl.c | ||
geom_ctl.h | ||
geom_dev.c | ||
geom_disk.c | ||
geom_disk.h | ||
geom_dump.c | ||
geom_event.c | ||
geom_fox.c | ||
geom_int.h | ||
geom_io.c | ||
geom_kern.c | ||
geom_mbr_enc.c | ||
geom_mbr.c | ||
geom_pc98_enc.c | ||
geom_pc98.c | ||
geom_slice.c | ||
geom_slice.h | ||
geom_subr.c | ||
geom_sunlabel_enc.c | ||
geom_sunlabel.c | ||
geom_vfs.c | ||
geom_vfs.h | ||
geom_vol_ffs.c | ||
geom.h | ||
notes |