From e575e508287dfdeb2baf0e6acb1bc7010bef340d Mon Sep 17 00:00:00 2001 From: Venkatesh Srinivas Date: Wed, 19 Jan 2011 18:35:51 -0800 Subject: [PATCH] kernel -- tmpfs: MPSAFE tmpfs_getattr. Use the per-mount token to synchronize tmpfs_getattr. --- sys/vfs/tmpfs/tmpfs_vfsops.c | 2 +- sys/vfs/tmpfs/tmpfs_vnops.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/vfs/tmpfs/tmpfs_vfsops.c b/sys/vfs/tmpfs/tmpfs_vfsops.c index f5af54f255..08c1c3213c 100644 --- a/sys/vfs/tmpfs/tmpfs_vfsops.c +++ b/sys/vfs/tmpfs/tmpfs_vfsops.c @@ -269,7 +269,7 @@ tmpfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) mp->mnt_kern_flag |= MNTK_RD_MPSAFE | MNTK_WR_MPSAFE | MNTK_GA_MPSAFE | MNTK_IN_MPSAFE | MNTK_SG_MPSAFE; #endif - mp->mnt_kern_flag |= MNTK_RD_MPSAFE | MNTK_SG_MPSAFE; + mp->mnt_kern_flag |= MNTK_RD_MPSAFE | MNTK_GA_MPSAFE | MNTK_SG_MPSAFE; mp->mnt_kern_flag |= MNTK_NOMSYNC; mp->mnt_data = (qaddr_t)tmp; vfs_getnewfsid(mp); diff --git a/sys/vfs/tmpfs/tmpfs_vnops.c b/sys/vfs/tmpfs/tmpfs_vnops.c index 022c1560cf..2dd36a75e8 100644 --- a/sys/vfs/tmpfs/tmpfs_vnops.c +++ b/sys/vfs/tmpfs/tmpfs_vnops.c @@ -303,6 +303,7 @@ tmpfs_getattr(struct vop_getattr_args *v) node = VP_TO_TMPFS_NODE(vp); + lwkt_gettoken(&vp->v_mount->mnt_token); tmpfs_update(vp); vap->va_type = vp->v_type; @@ -330,6 +331,8 @@ tmpfs_getattr(struct vop_getattr_args *v) vap->va_bytes = round_page(node->tn_size); vap->va_filerev = 0; + lwkt_reltoken(&vp->v_mount->mnt_token); + return 0; } -- 2.41.0