diff options
| -rw-r--r-- | fs/nfs/nfs4proc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index d181090124db..6bcdecd61125 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
| @@ -370,8 +370,14 @@ int nfs4_handle_exception(struct nfs_server *server, int errorcode, struct nfs4_ | |||
| 370 | case -NFS4ERR_DELEG_REVOKED: | 370 | case -NFS4ERR_DELEG_REVOKED: |
| 371 | case -NFS4ERR_ADMIN_REVOKED: | 371 | case -NFS4ERR_ADMIN_REVOKED: |
| 372 | case -NFS4ERR_BAD_STATEID: | 372 | case -NFS4ERR_BAD_STATEID: |
| 373 | if (state == NULL) | 373 | if (state == NULL) { |
| 374 | if (inode && nfs4_have_delegation(inode, | ||
| 375 | FMODE_READ)) { | ||
| 376 | nfs4_inode_return_delegation(inode); | ||
| 377 | exception->retry = 1; | ||
| 378 | } | ||
| 374 | break; | 379 | break; |
| 380 | } | ||
| 375 | ret = nfs4_schedule_stateid_recovery(server, state); | 381 | ret = nfs4_schedule_stateid_recovery(server, state); |
| 376 | if (ret < 0) | 382 | if (ret < 0) |
| 377 | break; | 383 | break; |
