mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-20 15:26:43 +01:00
NetApp filers return corrupt post op attrs in the wcc on NFS error responses.
This is easy to reproduce for EROFS. I am not sure if the attrs can be corrupt for other NFS error responses. For now, disabling wcc pre-op attr checks and post-op attr loads on NFS errors (sysctl'ed). Reported by: Kris Kennaway
This commit is contained in:
parent
4ed06071e6
commit
7f3a6e42c9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=165104
@ -84,6 +84,7 @@ static int nfs_realign_count;
|
|||||||
static int nfs_bufpackets = 4;
|
static int nfs_bufpackets = 4;
|
||||||
static int nfs_reconnects;
|
static int nfs_reconnects;
|
||||||
static int nfs3_jukebox_delay = 10;
|
static int nfs3_jukebox_delay = 10;
|
||||||
|
static int nfs_skip_wcc_data_onerr = 1;
|
||||||
|
|
||||||
SYSCTL_DECL(_vfs_nfs);
|
SYSCTL_DECL(_vfs_nfs);
|
||||||
|
|
||||||
@ -94,6 +95,7 @@ SYSCTL_INT(_vfs_nfs, OID_AUTO, reconnects, CTLFLAG_RD, &nfs_reconnects, 0,
|
|||||||
"number of times the nfs client has had to reconnect");
|
"number of times the nfs client has had to reconnect");
|
||||||
SYSCTL_INT(_vfs_nfs, OID_AUTO, nfs3_jukebox_delay, CTLFLAG_RW, &nfs3_jukebox_delay, 0,
|
SYSCTL_INT(_vfs_nfs, OID_AUTO, nfs3_jukebox_delay, CTLFLAG_RW, &nfs3_jukebox_delay, 0,
|
||||||
"number of seconds to delay a retry after receiving EJUKEBOX");
|
"number of seconds to delay a retry after receiving EJUKEBOX");
|
||||||
|
SYSCTL_INT(_vfs_nfs, OID_AUTO, skip_wcc_data_onerr, CTLFLAG_RW, &nfs_skip_wcc_data_onerr, 0, "");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There is a congestion window for outstanding rpcs maintained per mount
|
* There is a congestion window for outstanding rpcs maintained per mount
|
||||||
@ -1304,7 +1306,12 @@ tryagain:
|
|||||||
*/
|
*/
|
||||||
if (error == ESTALE)
|
if (error == ESTALE)
|
||||||
cache_purge(vp);
|
cache_purge(vp);
|
||||||
if (nmp->nm_flag & NFSMNT_NFSV3) {
|
/*
|
||||||
|
* Skip wcc data on NFS errors for now. NetApp filers return corrupt
|
||||||
|
* postop attrs in the wcc data for NFS err EROFS. Not sure if they
|
||||||
|
* could return corrupt postop attrs for others errors.
|
||||||
|
*/
|
||||||
|
if ((nmp->nm_flag & NFSMNT_NFSV3) && !nfs_skip_wcc_data_onerr) {
|
||||||
*mrp = mrep;
|
*mrp = mrep;
|
||||||
*mdp = md;
|
*mdp = md;
|
||||||
*dposp = dpos;
|
*dposp = dpos;
|
||||||
|
Loading…
Reference in New Issue
Block a user