]> err.no Git - linux-2.6/blobdiff - fs/nfs/nfs4proc.c
ocfs2_dlm: Add missing locks in dlm_empty_lockres
[linux-2.6] / fs / nfs / nfs4proc.c
index 5b2446173dd844f4398a6b426f31aad6afac2c52..f52cf5c33c6c83adcde94ed37202adaf3a0d969f 100644 (file)
@@ -1140,7 +1140,6 @@ static void nfs4_close_done(struct rpc_task *task, void *data)
                        break;
                case -NFS4ERR_STALE_STATEID:
                case -NFS4ERR_EXPIRED:
-                       nfs4_schedule_state_recovery(server->nfs_client);
                        break;
                default:
                        if (nfs4_async_handle_error(task, server) == -EAGAIN) {
@@ -2712,11 +2711,15 @@ static int nfs4_wait_clnt_recover(struct rpc_clnt *clnt, struct nfs_client *clp)
 
        might_sleep();
 
+       rwsem_acquire(&clp->cl_sem.dep_map, 0, 0, _RET_IP_);
+
        rpc_clnt_sigmask(clnt, &oldset);
        res = wait_on_bit(&clp->cl_state, NFS4CLNT_STATE_RECOVER,
                        nfs4_wait_bit_interruptible,
                        TASK_INTERRUPTIBLE);
        rpc_clnt_sigunmask(clnt, &oldset);
+
+       rwsem_release(&clp->cl_sem.dep_map, 1, _RET_IP_);
        return res;
 }
 
@@ -2955,7 +2958,6 @@ int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4
                switch (err) {
                        case -NFS4ERR_STALE_STATEID:
                        case -NFS4ERR_EXPIRED:
-                               nfs4_schedule_state_recovery(server->nfs_client);
                        case 0:
                                return 0;
                }
@@ -3109,12 +3111,10 @@ static void nfs4_locku_done(struct rpc_task *task, void *data)
                        break;
                case -NFS4ERR_STALE_STATEID:
                case -NFS4ERR_EXPIRED:
-                       nfs4_schedule_state_recovery(calldata->server->nfs_client);
                        break;
                default:
-                       if (nfs4_async_handle_error(task, calldata->server) == -EAGAIN) {
+                       if (nfs4_async_handle_error(task, calldata->server) == -EAGAIN)
                                rpc_restart_call(task);
-                       }
        }
 }
 
@@ -3584,7 +3584,7 @@ struct nfs4_state_recovery_ops nfs4_network_partition_recovery_ops = {
        .recover_lock   = nfs4_lock_expired,
 };
 
-static struct inode_operations nfs4_file_inode_operations = {
+static const struct inode_operations nfs4_file_inode_operations = {
        .permission     = nfs_permission,
        .getattr        = nfs_getattr,
        .setattr        = nfs_setattr,