diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-16 16:14:56 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-16 16:14:56 -0500 |
commit | 673fdfe3f0630b03f3854d0361b1232f2e5ef7fb (patch) | |
tree | 5f1c1374f786c9a9d47bde36387dea8757725238 /fs | |
parent | 73d75ba99e3bdd627275afd3fe48cc933723084b (diff) | |
parent | 8c2fabc6542d9d0f8b16bd1045c2eda59bdcde13 (diff) |
Merge tag 'nfs-for-3.13-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client bugfixes:
- Stable fix for data corruption when retransmitting O_DIRECT writes
- Stable fix for a deep recursion/stack overflow bug in rpc_release_client
- Stable fix for infinite looping when mounting a NFSv4.x volume
- Fix a typo in the nfs mount option parser
- Allow pNFS layouts to be compiled into the kernel when NFSv4.1 is
* tag 'nfs-for-3.13-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
nfs: fix pnfs Kconfig defaults
NFS: correctly report misuse of "migration" mount option.
nfs: don't retry detect_trunking with RPC_AUTH_UNIX more than once
SUNRPC: Avoid deep recursion in rpc_release_client
SUNRPC: Fix a data corruption issue when retransmitting RPC calls
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/Kconfig | 6 | ||||
-rw-r--r-- | fs/nfs/nfs4state.c | 7 | ||||
-rw-r--r-- | fs/nfs/super.c | 2 |
3 files changed, 10 insertions, 5 deletions
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig index 38c1768b4142..3dece03f2fc8 100644 --- a/fs/nfs/Kconfig +++ b/fs/nfs/Kconfig | |||
@@ -116,17 +116,17 @@ config NFS_V4_2 | |||
116 | config PNFS_FILE_LAYOUT | 116 | config PNFS_FILE_LAYOUT |
117 | tristate | 117 | tristate |
118 | depends on NFS_V4_1 | 118 | depends on NFS_V4_1 |
119 | default m | 119 | default NFS_V4 |
120 | 120 | ||
121 | config PNFS_BLOCK | 121 | config PNFS_BLOCK |
122 | tristate | 122 | tristate |
123 | depends on NFS_V4_1 && BLK_DEV_DM | 123 | depends on NFS_V4_1 && BLK_DEV_DM |
124 | default m | 124 | default NFS_V4 |
125 | 125 | ||
126 | config PNFS_OBJLAYOUT | 126 | config PNFS_OBJLAYOUT |
127 | tristate | 127 | tristate |
128 | depends on NFS_V4_1 && SCSI_OSD_ULD | 128 | depends on NFS_V4_1 && SCSI_OSD_ULD |
129 | default m | 129 | default NFS_V4 |
130 | 130 | ||
131 | config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN | 131 | config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN |
132 | string "NFSv4.1 Implementation ID Domain" | 132 | string "NFSv4.1 Implementation ID Domain" |
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 74a7e12e10df..059c01b67a71 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -2093,10 +2093,15 @@ again: | |||
2093 | nfs4_root_machine_cred(clp); | 2093 | nfs4_root_machine_cred(clp); |
2094 | goto again; | 2094 | goto again; |
2095 | } | 2095 | } |
2096 | if (i > 2) | 2096 | if (clnt->cl_auth->au_flavor == RPC_AUTH_UNIX) |
2097 | break; | 2097 | break; |
2098 | case -NFS4ERR_CLID_INUSE: | 2098 | case -NFS4ERR_CLID_INUSE: |
2099 | case -NFS4ERR_WRONGSEC: | 2099 | case -NFS4ERR_WRONGSEC: |
2100 | /* No point in retrying if we already used RPC_AUTH_UNIX */ | ||
2101 | if (clnt->cl_auth->au_flavor == RPC_AUTH_UNIX) { | ||
2102 | status = -EPERM; | ||
2103 | break; | ||
2104 | } | ||
2100 | clnt = rpc_clone_client_set_auth(clnt, RPC_AUTH_UNIX); | 2105 | clnt = rpc_clone_client_set_auth(clnt, RPC_AUTH_UNIX); |
2101 | if (IS_ERR(clnt)) { | 2106 | if (IS_ERR(clnt)) { |
2102 | status = PTR_ERR(clnt); | 2107 | status = PTR_ERR(clnt); |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 317d6fc2160e..910ed906eb82 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -1614,7 +1614,7 @@ static int nfs_parse_mount_options(char *raw, | |||
1614 | goto out_minorversion_mismatch; | 1614 | goto out_minorversion_mismatch; |
1615 | 1615 | ||
1616 | if (mnt->options & NFS_OPTION_MIGRATION && | 1616 | if (mnt->options & NFS_OPTION_MIGRATION && |
1617 | mnt->version != 4 && mnt->minorversion != 0) | 1617 | (mnt->version != 4 || mnt->minorversion != 0)) |
1618 | goto out_migration_misuse; | 1618 | goto out_migration_misuse; |
1619 | 1619 | ||
1620 | /* | 1620 | /* |