]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/nfs/nfs4proc.c
NFS: add hooks to account for NFSERR_JUKEBOX errors
[mv-sheeva.git] / fs / nfs / nfs4proc.c
index f8c0066e02e1456a696f51e7f6b8eb0b77742c35..f1ff4fa6cce59f3dd28b64c7bf4a5b1a93b61be6 100644 (file)
@@ -51,6 +51,7 @@
 
 #include "nfs4_fs.h"
 #include "delegation.h"
+#include "iostat.h"
 
 #define NFSDBG_FACILITY                NFSDBG_PROC
 
@@ -908,7 +909,7 @@ out_put_state_owner:
 static struct nfs4_state *nfs4_open_delegated(struct inode *inode, int flags, struct rpc_cred *cred)
 {
        struct nfs4_exception exception = { };
-       struct nfs4_state *res;
+       struct nfs4_state *res = ERR_PTR(-EIO);
        int err;
 
        do {
@@ -2755,8 +2756,10 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server)
                                rpc_wake_up_task(task);
                        task->tk_status = 0;
                        return -EAGAIN;
-               case -NFS4ERR_GRACE:
                case -NFS4ERR_DELAY:
+                       nfs_inc_server_stats((struct nfs_server *) server,
+                                               NFSIOS_DELAY);
+               case -NFS4ERR_GRACE:
                        rpc_delay(task, NFS4_POLL_RETRY_MAX);
                        task->tk_status = 0;
                        return -EAGAIN;
@@ -2958,7 +2961,7 @@ static void nfs4_delegreturn_release(void *calldata)
        kfree(calldata);
 }
 
-const static struct rpc_call_ops nfs4_delegreturn_ops = {
+static const struct rpc_call_ops nfs4_delegreturn_ops = {
        .rpc_call_prepare = nfs4_delegreturn_prepare,
        .rpc_call_done = nfs4_delegreturn_done,
        .rpc_release = nfs4_delegreturn_release,