mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 01:30:30 -04:00
Disable the shared locking namei() code for now. It breaks several stacking
filesystems. This is on hold until the rest of VFS Locking is reviewed and deemed safe. It can be enabled with 'options LOOKUP_SHARED'.
This commit is contained in:
parent
d93389d676
commit
0e2d6cc899
5 changed files with 12 additions and 12 deletions
|
|
@ -389,7 +389,7 @@ BLKDEV_IOSIZE opt_global.h
|
|||
DEBUG opt_global.h
|
||||
DEBUG_LOCKS opt_global.h
|
||||
DEBUG_VFS_LOCKS opt_global.h
|
||||
LOOKUP_EXCLUSIVE opt_global.h
|
||||
LOOKUP_SHARED opt_global.h
|
||||
DIAGNOSTIC opt_global.h
|
||||
ENABLE_VFS_IOOPT opt_global.h
|
||||
INVARIANT_SUPPORT opt_global.h
|
||||
|
|
|
|||
|
|
@ -566,7 +566,7 @@ vfs_cache_lookup(ap)
|
|||
|
||||
error = cache_lookup(dvp, vpp, cnp);
|
||||
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
if (!error) {
|
||||
/* We do this because the rest of the system now expects to get
|
||||
* a shared lock, which is later upgraded if LOCKSHARED is not
|
||||
|
|
@ -608,7 +608,7 @@ vfs_cache_lookup(ap)
|
|||
} else if (flags & ISDOTDOT) {
|
||||
VOP_UNLOCK(dvp, 0, td);
|
||||
cnp->cn_flags |= PDIRUNLOCK;
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
if ((flags & ISLASTCN) && (flags & LOCKSHARED))
|
||||
error = vget(vp, LK_SHARED, td);
|
||||
else
|
||||
|
|
@ -622,7 +622,7 @@ vfs_cache_lookup(ap)
|
|||
cnp->cn_flags &= ~PDIRUNLOCK;
|
||||
}
|
||||
} else {
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
if ((flags & ISLASTCN) && (flags & LOCKSHARED))
|
||||
error = vget(vp, LK_SHARED, td);
|
||||
else
|
||||
|
|
@ -654,7 +654,7 @@ vfs_cache_lookup(ap)
|
|||
return (error);
|
||||
cnp->cn_flags &= ~PDIRUNLOCK;
|
||||
}
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
error = VOP_CACHEDLOOKUP(dvp, vpp, cnp);
|
||||
|
||||
if (!error) {
|
||||
|
|
|
|||
|
|
@ -2585,7 +2585,7 @@ stat(td, uap)
|
|||
int error;
|
||||
struct nameidata nd;
|
||||
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
NDINIT(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | NOOBJ,
|
||||
UIO_USERSPACE, SCARG(uap, path), td);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -2585,7 +2585,7 @@ stat(td, uap)
|
|||
int error;
|
||||
struct nameidata nd;
|
||||
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
NDINIT(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | NOOBJ,
|
||||
UIO_USERSPACE, SCARG(uap, path), td);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ vn_open_cred(ndp, flagp, cmode, cred)
|
|||
struct vattr vat;
|
||||
struct vattr *vap = &vat;
|
||||
int mode, fmode, error;
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
int exclusive; /* The current intended lock state */
|
||||
|
||||
exclusive = 0;
|
||||
|
|
@ -149,7 +149,7 @@ restart:
|
|||
ASSERT_VOP_LOCKED(ndp->ni_vp, "create");
|
||||
fmode &= ~O_TRUNC;
|
||||
vp = ndp->ni_vp;
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
exclusive = 1;
|
||||
#endif
|
||||
} else {
|
||||
|
|
@ -167,7 +167,7 @@ restart:
|
|||
}
|
||||
} else {
|
||||
ndp->ni_cnd.cn_nameiop = LOOKUP;
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
ndp->ni_cnd.cn_flags =
|
||||
((fmode & O_NOFOLLOW) ? NOFOLLOW : FOLLOW) |
|
||||
LOCKSHARED | LOCKLEAF;
|
||||
|
|
@ -213,7 +213,7 @@ restart:
|
|||
* Make sure that a VM object is created for VMIO support.
|
||||
*/
|
||||
if (vn_canvmio(vp) == TRUE) {
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
int flock;
|
||||
|
||||
if (!exclusive && VOP_GETVOBJECT(vp, NULL) != 0)
|
||||
|
|
@ -236,7 +236,7 @@ restart:
|
|||
*flagp = fmode;
|
||||
return (error);
|
||||
}
|
||||
#ifndef LOOKUP_EXCLUSIVE
|
||||
#ifdef LOOKUP_SHARED
|
||||
flock = VOP_ISLOCKED(vp, td);
|
||||
if (!exclusive && flock == LK_EXCLUSIVE)
|
||||
VOP_LOCK(vp, LK_DOWNGRADE, td);
|
||||
|
|
|
|||
Loading…
Reference in a new issue