| 1501 | } |
| 1502 | |
| 1503 | static void |
| 1504 | dounmount_cleanup(struct mount *mp, struct vnode *coveredvp, int mntkflags) |
| 1505 | { |
| 1506 | |
| 1507 | mtx_assert(MNT_MTX(mp), MA_OWNED); |
| 1508 | mp->mnt_kern_flag &= ~mntkflags; |
| 1509 | if ((mp->mnt_kern_flag & MNTK_MWAIT) != 0) { |
| 1510 | mp->mnt_kern_flag &= ~MNTK_MWAIT; |
| 1511 | wakeup(mp); |
| 1512 | } |
| 1513 | vfs_op_exit_locked(mp); |
| 1514 | MNT_IUNLOCK(mp); |
| 1515 | if (coveredvp != NULL) { |
| 1516 | VOP_UNLOCK(coveredvp); |
| 1517 | vdrop(coveredvp); |
| 1518 | } |
| 1519 | vn_finished_write(mp); |
| 1520 | } |
| 1521 | |
| 1522 | /* |
| 1523 | * There are various reference counters associated with the mount point. |
no test coverage detected