kernel -- tmpfs: Make tmpfs_strategy MPSAFE.
authorVenkatesh Srinivas <me@endeavour.zapto.org>
Wed, 12 Jan 2011 19:43:30 +0000 (11:43 -0800)
committerVenkatesh Srinivas <me@endeavour.zapto.org>
Wed, 12 Jan 2011 19:43:30 +0000 (11:43 -0800)
tmpfs_strategy now acquires only the per-mount token directly.

sys/vfs/tmpfs/tmpfs_vfsops.c
sys/vfs/tmpfs/tmpfs_vnops.c

index f5e4778..f5af54f 100644 (file)
@@ -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;
+       mp->mnt_kern_flag |= MNTK_RD_MPSAFE | MNTK_SG_MPSAFE;
        mp->mnt_kern_flag |= MNTK_NOMSYNC;
        mp->mnt_data = (qaddr_t)tmp;
        vfs_getnewfsid(mp);
index 8c7836b..022c156 100644 (file)
@@ -675,6 +675,7 @@ tmpfs_strategy(struct vop_strategy_args *ap)
                return(0);
        }
 
+       lwkt_gettoken(&vp->v_mount->mnt_token);
        node = VP_TO_TMPFS_NODE(vp);
 
        uobj = node->tn_reg.tn_aobj;
@@ -685,6 +686,7 @@ tmpfs_strategy(struct vop_strategy_args *ap)
         */
        swap_pager_strategy(uobj, bio);
 
+       lwkt_reltoken(&vp->v_mount->mnt_token);
        return 0;
 }