diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -410,6 +410,12 @@ mp->mnt_flag |= mntorflags; MNT_IUNLOCK(mp); + /* + * If this is a snapshot request, take the snapshot. + */ + if (mp->mnt_flag & MNT_SNAPSHOT) + return (ffs_snapshot(mp, fspec)); + /* * Must not call namei() while owning busy ref. */ @@ -684,11 +690,6 @@ MNT_IUNLOCK(mp); } - /* - * If this is a snapshot request, take the snapshot. - */ - if (mp->mnt_flag & MNT_SNAPSHOT) - return (ffs_snapshot(mp, fspec)); } MNT_ILOCK(mp);