Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/udf/udf_vfsops.c
Show First 20 Lines • Show All 328 Lines • ▼ Show 20 Lines | udf_mountfs(struct vnode *devvp, struct mount *mp) | ||||
dev_ref(dev); | dev_ref(dev); | ||||
g_topology_lock(); | g_topology_lock(); | ||||
error = g_vfs_open(devvp, &cp, "udf", 0); | error = g_vfs_open(devvp, &cp, "udf", 0); | ||||
g_topology_unlock(); | g_topology_unlock(); | ||||
VOP_UNLOCK(devvp); | VOP_UNLOCK(devvp); | ||||
if (error) | if (error) | ||||
goto bail; | goto bail; | ||||
bo = &devvp->v_bufobj; | bo = vp2bo(devvp); | ||||
if (devvp->v_rdev->si_iosize_max != 0) | if (devvp->v_rdev->si_iosize_max != 0) | ||||
mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max; | mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max; | ||||
if (mp->mnt_iosize_max > maxphys) | if (mp->mnt_iosize_max > maxphys) | ||||
mp->mnt_iosize_max = maxphys; | mp->mnt_iosize_max = maxphys; | ||||
/* XXX: should be M_WAITOK */ | /* XXX: should be M_WAITOK */ | ||||
udfmp = malloc(sizeof(struct udf_mnt), M_UDFMOUNT, | udfmp = malloc(sizeof(struct udf_mnt), M_UDFMOUNT, | ||||
M_NOWAIT | M_ZERO); | M_NOWAIT | M_ZERO); | ||||
if (udfmp == NULL) { | if (udfmp == NULL) { | ||||
printf("Cannot allocate UDF mount struct\n"); | printf("Cannot allocate UDF mount struct\n"); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
goto bail; | goto bail; | ||||
} | } | ||||
mp->mnt_data = udfmp; | mp->mnt_data = udfmp; | ||||
mp->mnt_stat.f_fsid.val[0] = dev2udev(devvp->v_rdev); | mp->mnt_stat.f_fsid.val[0] = dev2udev(devvp->v_rdev); | ||||
mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum; | mp->mnt_stat.f_fsid.val[1] = mp->mnt_vfc->vfc_typenum; | ||||
MNT_ILOCK(mp); | MNT_ILOCK(mp); | ||||
mp->mnt_flag |= MNT_LOCAL; | mp->mnt_flag |= MNT_LOCAL; | ||||
mp->mnt_kern_flag |= MNTK_LOOKUP_SHARED | MNTK_EXTENDED_SHARED; | mp->mnt_kern_flag |= MNTK_LOOKUP_SHARED | MNTK_EXTENDED_SHARED | | ||||
MNTK_USES_BCACHE; | |||||
MNT_IUNLOCK(mp); | MNT_IUNLOCK(mp); | ||||
udfmp->im_mountp = mp; | udfmp->im_mountp = mp; | ||||
udfmp->im_dev = dev; | udfmp->im_dev = dev; | ||||
udfmp->im_devvp = devvp; | udfmp->im_devvp = devvp; | ||||
udfmp->im_d2l = NULL; | udfmp->im_d2l = NULL; | ||||
udfmp->im_cp = cp; | udfmp->im_cp = cp; | ||||
udfmp->im_bo = bo; | udfmp->im_bo = bo; | ||||
▲ Show 20 Lines • Show All 472 Lines • Show Last 20 Lines |