From f749f17fe1a2bc56a8129f5579e5cf5009f12d95 Mon Sep 17 00:00:00 2001 From: Ben Kaduk Date: Wed, 7 Nov 2012 10:08:33 -0500 Subject: [PATCH] Catch up to FreeBSD non-MPSAFE deorbit All filesystems must have their own locking now. We have been MPSAFE for quite some time, but the preprocessor macro "MPSAFE" has been removed and we must catch up in order to compile. The MNTK_MPSAFE macro has not yet been removed, but it is toothless now, so we can preemptively stop using it. Change-Id: I9d9090fd1afc020670a0cf874baacf483fd34915 Reviewed-on: http://gerrit.openafs.org/8366 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afs/FBSD/osi_misc.c | 4 ++++ src/afs/FBSD/osi_vfsops.c | 2 ++ src/afs/FBSD/osi_vnodeops.c | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/afs/FBSD/osi_misc.c b/src/afs/FBSD/osi_misc.c index debc35474..9dd1e1155 100644 --- a/src/afs/FBSD/osi_misc.c +++ b/src/afs/FBSD/osi_misc.c @@ -31,7 +31,11 @@ osi_lookupname(char *aname, enum uio_seg seg, int followlink, if (glocked) AFS_GUNLOCK(); +#if __FreeBSD_version >= 1000021 /* MPSAFE is gone for good! */ + flags = LOCKLEAF; +#else flags = LOCKLEAF | MPSAFE; /* namei must take Giant if needed */ +#endif if (followlink) flags |= FOLLOW; else diff --git a/src/afs/FBSD/osi_vfsops.c b/src/afs/FBSD/osi_vfsops.c index c2662632b..a1b546367 100644 --- a/src/afs/FBSD/osi_vfsops.c +++ b/src/afs/FBSD/osi_vfsops.c @@ -135,7 +135,9 @@ afs_omount(struct mount *mp, char *path, caddr_t data, struct nameidata *ndp, #if defined(AFS_FBSD61_ENV) && !defined(AFS_FBSD62_ENV) MNT_ILOCK(mp); #endif +#if __FreeBSD_version < 1000021 mp->mnt_kern_flag |= MNTK_MPSAFE; /* solid steel */ +#endif #ifndef AFS_FBSD61_ENV MNT_ILOCK(mp); #endif diff --git a/src/afs/FBSD/osi_vnodeops.c b/src/afs/FBSD/osi_vnodeops.c index a9be0c32d..124f711fa 100644 --- a/src/afs/FBSD/osi_vnodeops.c +++ b/src/afs/FBSD/osi_vnodeops.c @@ -501,7 +501,9 @@ afs_vop_lookup(ap) lockparent = flags & LOCKPARENT; wantparent = flags & (LOCKPARENT | WANTPARENT); +#if __FreeBSD_version < 1000021 cnp->cn_flags |= MPSAFE; /* steel */ +#endif if (flags & ISDOTDOT) MA_VOP_UNLOCK(dvp, 0, p); -- 2.39.5