]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
NFSv4.1: Remove the 'FIFO' behaviour for nfs41_setup_sequence
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 1 Nov 2012 21:07:07 +0000 (17:07 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 5 Dec 2012 23:30:50 +0000 (00:30 +0100)
It is more important to preserve the task priority behaviour, which ensures
that things like reclaim writes take precedence over background and kupdate
writes.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4_fs.h
fs/nfs/nfs4proc.c
fs/nfs/nfs4state.c

index 4f0cdc1b7148196933a85a41feea9cae3c91d580..4635bf51b3e6ae451bb84c974a74fcb0ac97d07e 100644 (file)
@@ -236,7 +236,6 @@ static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *ser
        return server->nfs_client->cl_session;
 }
 
-extern bool nfs4_set_task_privileged(struct rpc_task *task, void *dummy);
 extern int nfs4_setup_sequence(const struct nfs_server *server,
                struct nfs4_sequence_args *args, struct nfs4_sequence_res *res,
                struct rpc_task *task);
index 87525eb60bd8e2fb37248fbf9fdb2dc887b2c6dc..4b1635ce658d5276877e93596835636c5c015a90 100644 (file)
@@ -379,12 +379,6 @@ static void renew_lease(const struct nfs_server *server, unsigned long timestamp
 
 #if defined(CONFIG_NFS_V4_1)
 
-bool nfs4_set_task_privileged(struct rpc_task *task, void *dummy)
-{
-       rpc_task_set_priority(task, RPC_PRIORITY_PRIVILEGED);
-       return true;
-}
-
 static void nfs41_sequence_free_slot(struct nfs4_sequence_res *res)
 {
        struct nfs4_session *session;
@@ -412,8 +406,7 @@ static void nfs41_sequence_free_slot(struct nfs4_sequence_res *res)
        if (tbl->highest_used_slotid != NFS4_NO_SLOT)
                send_new_highest_used_slotid = false;
        if (!nfs4_session_draining(session)) {
-               if (rpc_wake_up_first(&tbl->slot_tbl_waitq,
-                               nfs4_set_task_privileged, NULL) != NULL)
+               if (rpc_wake_up_next(&tbl->slot_tbl_waitq) != NULL)
                        send_new_highest_used_slotid = false;
        }
        spin_unlock(&tbl->slot_tbl_lock);
@@ -527,12 +520,6 @@ int nfs41_setup_sequence(struct nfs4_session *session,
                goto out_sleep;
        }
 
-       if (!rpc_queue_empty(&tbl->slot_tbl_waitq) &&
-           !rpc_task_has_priority(task, RPC_PRIORITY_PRIVILEGED)) {
-               dprintk("%s enforce FIFO order\n", __func__);
-               goto out_sleep;
-       }
-
        slot = nfs4_alloc_slot(tbl);
        if (IS_ERR(slot)) {
                /* If out of memory, try again in 1/4 second */
index c137421f21233f978bf2e26b508f93843abc7aaa..7d73df5a05d1e21cd6fcf0360901e8b4d9cd53d3 100644 (file)
@@ -263,9 +263,7 @@ static void nfs4_end_drain_session(struct nfs_client *clp)
        if (test_and_clear_bit(NFS4_SESSION_DRAINING, &ses->session_state)) {
                spin_lock(&tbl->slot_tbl_lock);
                for (i = 0; i <= tbl->max_slotid; i++) {
-                       if (rpc_wake_up_first(&tbl->slot_tbl_waitq,
-                                               nfs4_set_task_privileged,
-                                               NULL) == NULL)
+                       if (rpc_wake_up_next(&tbl->slot_tbl_waitq) == NULL)
                                break;
                }
                spin_unlock(&tbl->slot_tbl_lock);