Changeset View
Changeset View
Standalone View
Standalone View
sys/ufs/ffs/ffs_vfsops.c
Show First 20 Lines • Show All 1,425 Lines • ▼ Show 20 Lines | if (susp) | ||||
vfs_write_resume(mp, VR_START_WRITE); | vfs_write_resume(mp, VR_START_WRITE); | ||||
if (ump->um_trim_tq != NULL) { | if (ump->um_trim_tq != NULL) { | ||||
while (ump->um_trim_inflight != 0) | while (ump->um_trim_inflight != 0) | ||||
pause("ufsutr", hz); | pause("ufsutr", hz); | ||||
taskqueue_drain_all(ump->um_trim_tq); | taskqueue_drain_all(ump->um_trim_tq); | ||||
taskqueue_free(ump->um_trim_tq); | taskqueue_free(ump->um_trim_tq); | ||||
free (ump->um_trimhash, M_TRIM); | free (ump->um_trimhash, M_TRIM); | ||||
} | } | ||||
vn_lock(ump->um_devvp, LK_EXCLUSIVE | LK_RETRY); | |||||
g_topology_lock(); | g_topology_lock(); | ||||
g_vfs_close(ump->um_cp); | g_vfs_close(ump->um_cp); | ||||
g_topology_unlock(); | g_topology_unlock(); | ||||
BO_LOCK(&ump->um_odevvp->v_bufobj); | BO_LOCK(&ump->um_odevvp->v_bufobj); | ||||
ump->um_odevvp->v_bufobj.bo_flag &= ~BO_NOBUFS; | ump->um_odevvp->v_bufobj.bo_flag &= ~BO_NOBUFS; | ||||
BO_UNLOCK(&ump->um_odevvp->v_bufobj); | BO_UNLOCK(&ump->um_odevvp->v_bufobj); | ||||
atomic_store_rel_ptr((uintptr_t *)&ump->um_dev->si_mountpt, 0); | atomic_store_rel_ptr((uintptr_t *)&ump->um_dev->si_mountpt, 0); | ||||
vn_lock(ump->um_devvp, LK_EXCLUSIVE | LK_RETRY); | |||||
mntfs_freevp(ump->um_devvp); | mntfs_freevp(ump->um_devvp); | ||||
vrele(ump->um_odevvp); | vrele(ump->um_odevvp); | ||||
dev_rel(ump->um_dev); | dev_rel(ump->um_dev); | ||||
mtx_destroy(UFS_MTX(ump)); | mtx_destroy(UFS_MTX(ump)); | ||||
sx_destroy(&ump->um_checkpath_lock); | sx_destroy(&ump->um_checkpath_lock); | ||||
if (mp->mnt_gjprovider != NULL) { | if (mp->mnt_gjprovider != NULL) { | ||||
free(mp->mnt_gjprovider, M_UFSMNT); | free(mp->mnt_gjprovider, M_UFSMNT); | ||||
mp->mnt_gjprovider = NULL; | mp->mnt_gjprovider = NULL; | ||||
▲ Show 20 Lines • Show All 1,167 Lines • Show Last 20 Lines |