|
@@ -3268,6 +3268,7 @@ static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *f
|
|
|
.rpc_resp = &res,
|
|
|
};
|
|
|
int status;
|
|
|
+ int i;
|
|
|
|
|
|
bitmask[0] = FATTR4_WORD0_SUPPORTED_ATTRS |
|
|
|
FATTR4_WORD0_FH_EXPIRE_TYPE |
|
|
@@ -3333,8 +3334,13 @@ static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *f
|
|
|
server->cache_consistency_bitmask[0] &= FATTR4_WORD0_CHANGE|FATTR4_WORD0_SIZE;
|
|
|
server->cache_consistency_bitmask[1] &= FATTR4_WORD1_TIME_METADATA|FATTR4_WORD1_TIME_MODIFY;
|
|
|
server->cache_consistency_bitmask[2] = 0;
|
|
|
+
|
|
|
+ /* Avoid a regression due to buggy server */
|
|
|
+ for (i = 0; i < ARRAY_SIZE(res.exclcreat_bitmask); i++)
|
|
|
+ res.exclcreat_bitmask[i] &= res.attr_bitmask[i];
|
|
|
memcpy(server->exclcreat_bitmask, res.exclcreat_bitmask,
|
|
|
sizeof(server->exclcreat_bitmask));
|
|
|
+
|
|
|
server->acl_bitmask = res.acl_bitmask;
|
|
|
server->fh_expire_type = res.fh_expire_type;
|
|
|
}
|