Skip to content

Commit

Permalink
NFSv4.1: Remove the 'FIFO' behaviour for nfs41_setup_sequence
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Dec 5, 2012
1 parent 7b939a3 commit 275e7e2
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 18 deletions.
1 change: 0 additions & 1 deletion fs/nfs/nfs4_fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
15 changes: 1 addition & 14 deletions fs/nfs/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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 */
Expand Down
4 changes: 1 addition & 3 deletions fs/nfs/nfs4state.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 275e7e2

Please sign in to comment.