Lines 3043-3049
nfsrvd_open(struct nfsrv_descript *nd, __unused int is
Link Here
|
3043 |
if (!nd->nd_repstat) { |
3043 |
if (!nd->nd_repstat) { |
3044 |
nd->nd_repstat = nfsvno_namei(nd, &named, dp, 0, exp, |
3044 |
nd->nd_repstat = nfsvno_namei(nd, &named, dp, 0, exp, |
3045 |
&dirp); |
3045 |
&dirp); |
3046 |
done_namei = true; |
|
|
3047 |
} else { |
3046 |
} else { |
3048 |
vrele(dp); |
3047 |
vrele(dp); |
3049 |
nfsvno_relpathbuf(&named); |
3048 |
nfsvno_relpathbuf(&named); |
Lines 3051-3057
nfsrvd_open(struct nfsrv_descript *nd, __unused int is
Link Here
|
3051 |
if (create == NFSV4OPEN_CREATE) { |
3050 |
if (create == NFSV4OPEN_CREATE) { |
3052 |
switch (how) { |
3051 |
switch (how) { |
3053 |
case NFSCREATE_UNCHECKED: |
3052 |
case NFSCREATE_UNCHECKED: |
3054 |
if (done_namei && named.ni_vp != NULL) { |
3053 |
if (named.ni_vp) { |
3055 |
/* |
3054 |
/* |
3056 |
* Clear the setable attribute bits, except |
3055 |
* Clear the setable attribute bits, except |
3057 |
* for Size, if it is being truncated. |
3056 |
* for Size, if it is being truncated. |
Lines 3063-3075
nfsrvd_open(struct nfsrv_descript *nd, __unused int is
Link Here
|
3063 |
} |
3062 |
} |
3064 |
break; |
3063 |
break; |
3065 |
case NFSCREATE_GUARDED: |
3064 |
case NFSCREATE_GUARDED: |
3066 |
if (done_namei && named.ni_vp != NULL && |
3065 |
if (named.ni_vp && !nd->nd_repstat) { |
3067 |
nd->nd_repstat == 0) |
|
|
3068 |
nd->nd_repstat = EEXIST; |
3066 |
nd->nd_repstat = EEXIST; |
|
|
3067 |
done_namei = true; |
3068 |
} |
3069 |
break; |
3069 |
break; |
3070 |
case NFSCREATE_EXCLUSIVE: |
3070 |
case NFSCREATE_EXCLUSIVE: |
3071 |
exclusive_flag = 1; |
3071 |
exclusive_flag = 1; |
3072 |
if (done_namei && named.ni_vp == NULL) |
3072 |
if (!named.ni_vp) |
3073 |
nva.na_mode = 0; |
3073 |
nva.na_mode = 0; |
3074 |
break; |
3074 |
break; |
3075 |
case NFSCREATE_EXCLUSIVE41: |
3075 |
case NFSCREATE_EXCLUSIVE41: |