diff options
author | NeilBrown <neilb@suse.com> | 2018-02-20 13:23:38 +1100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-02-22 15:06:36 +0100 |
commit | ef8e5dbbb09035a0c41aa47a328e6248702d4d2b (patch) | |
tree | 2bc40120c860951fa3aff637fee630689a3b1932 /drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c | |
parent | staging: lustre: fix assorted checkpatch errors (diff) | |
download | linux-dev-ef8e5dbbb09035a0c41aa47a328e6248702d4d2b.tar.xz linux-dev-ef8e5dbbb09035a0c41aa47a328e6248702d4d2b.zip |
staging: lustre: ptlrpc: list_for_each improvements.
1/ use list_for_each_entry_safe() instead of
list_for_each_safe() and similar.
2/ use list_first_entry() and list_last_entry() where appropriate.
3/ When removing everything from a list, use
while ((x = list_first_entry_or_null()) {
as it makes the intent clear
4/ No need to take a spinlock in a structure that is about
to be freed - we must have exclusive access at this stage.
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c')
-rw-r--r-- | drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c b/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c index 6ed77521d025..c0fa13942bd8 100644 --- a/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c +++ b/drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c @@ -197,17 +197,14 @@ ptlrpcd_select_pc(struct ptlrpc_request *req) static int ptlrpcd_steal_rqset(struct ptlrpc_request_set *des, struct ptlrpc_request_set *src) { - struct list_head *tmp, *pos; - struct ptlrpc_request *req; + struct ptlrpc_request *req, *tmp; int rc = 0; spin_lock(&src->set_new_req_lock); if (likely(!list_empty(&src->set_new_requests))) { - list_for_each_safe(pos, tmp, &src->set_new_requests) { - req = list_entry(pos, struct ptlrpc_request, - rq_set_chain); + list_for_each_entry_safe(req, tmp, &src->set_new_requests, rq_set_chain) req->rq_set = des; - } + list_splice_init(&src->set_new_requests, &des->set_requests); rc = atomic_read(&src->set_new_count); atomic_add(rc, &des->set_remaining); @@ -273,8 +270,7 @@ static inline void ptlrpc_reqset_get(struct ptlrpc_request_set *set) */ static int ptlrpcd_check(struct lu_env *env, struct ptlrpcd_ctl *pc) { - struct list_head *tmp, *pos; - struct ptlrpc_request *req; + struct ptlrpc_request *req, *tmp; struct ptlrpc_request_set *set = pc->pc_set; int rc = 0; int rc2; @@ -320,8 +316,7 @@ static int ptlrpcd_check(struct lu_env *env, struct ptlrpcd_ctl *pc) /* NB: ptlrpc_check_set has already moved completed request at the * head of seq::set_requests */ - list_for_each_safe(pos, tmp, &set->set_requests) { - req = list_entry(pos, struct ptlrpc_request, rq_set_chain); + list_for_each_entry_safe(req, tmp, &set->set_requests, rq_set_chain) { if (req->rq_phase != RQ_PHASE_COMPLETE) break; |