Commit 275e7e20 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4.1: Remove the 'FIFO' behaviour for nfs41_setup_sequence

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: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 7b939a3f
...@@ -236,7 +236,6 @@ static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *ser ...@@ -236,7 +236,6 @@ static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *ser
return server->nfs_client->cl_session; 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, extern int nfs4_setup_sequence(const struct nfs_server *server,
struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, struct nfs4_sequence_args *args, struct nfs4_sequence_res *res,
struct rpc_task *task); struct rpc_task *task);
......
...@@ -379,12 +379,6 @@ static void renew_lease(const struct nfs_server *server, unsigned long timestamp ...@@ -379,12 +379,6 @@ static void renew_lease(const struct nfs_server *server, unsigned long timestamp
#if defined(CONFIG_NFS_V4_1) #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) static void nfs41_sequence_free_slot(struct nfs4_sequence_res *res)
{ {
struct nfs4_session *session; struct nfs4_session *session;
...@@ -412,8 +406,7 @@ static void nfs41_sequence_free_slot(struct nfs4_sequence_res *res) ...@@ -412,8 +406,7 @@ static void nfs41_sequence_free_slot(struct nfs4_sequence_res *res)
if (tbl->highest_used_slotid != NFS4_NO_SLOT) if (tbl->highest_used_slotid != NFS4_NO_SLOT)
send_new_highest_used_slotid = false; send_new_highest_used_slotid = false;
if (!nfs4_session_draining(session)) { if (!nfs4_session_draining(session)) {
if (rpc_wake_up_first(&tbl->slot_tbl_waitq, if (rpc_wake_up_next(&tbl->slot_tbl_waitq) != NULL)
nfs4_set_task_privileged, NULL) != NULL)
send_new_highest_used_slotid = false; send_new_highest_used_slotid = false;
} }
spin_unlock(&tbl->slot_tbl_lock); spin_unlock(&tbl->slot_tbl_lock);
...@@ -527,12 +520,6 @@ int nfs41_setup_sequence(struct nfs4_session *session, ...@@ -527,12 +520,6 @@ int nfs41_setup_sequence(struct nfs4_session *session,
goto out_sleep; 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); slot = nfs4_alloc_slot(tbl);
if (IS_ERR(slot)) { if (IS_ERR(slot)) {
/* If out of memory, try again in 1/4 second */ /* If out of memory, try again in 1/4 second */
......
...@@ -263,9 +263,7 @@ static void nfs4_end_drain_session(struct nfs_client *clp) ...@@ -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)) { if (test_and_clear_bit(NFS4_SESSION_DRAINING, &ses->session_state)) {
spin_lock(&tbl->slot_tbl_lock); spin_lock(&tbl->slot_tbl_lock);
for (i = 0; i <= tbl->max_slotid; i++) { for (i = 0; i <= tbl->max_slotid; i++) {
if (rpc_wake_up_first(&tbl->slot_tbl_waitq, if (rpc_wake_up_next(&tbl->slot_tbl_waitq) == NULL)
nfs4_set_task_privileged,
NULL) == NULL)
break; break;
} }
spin_unlock(&tbl->slot_tbl_lock); spin_unlock(&tbl->slot_tbl_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment