Skip to content

Commit cf78502

Browse files
James SimmonsOleg Drokin
authored andcommitted
LU-10756 ptlrpc: change IMPORT_SET_* macros into real functions
Make the IMPORT_SET_STATE_NOLOCK and IMPORT_SET_STATE macros into normal functions. Since import_set_state_nolock() is basically a wrapper around __import_set_state() we can merge both functions. Change-Id: Idaa6aeb81ff2282e2f83d758a267129e686bd794 Signed-off-by: James Simmons <[email protected]> Reviewed-on: https://review.whamcloud.com/35463 Tested-by: jenkins <[email protected]> Reviewed-by: Neil Brown <[email protected]> Tested-by: Maloo <[email protected]> Reviewed-by: Ben Evans <[email protected]> Reviewed-by: Oleg Drokin <[email protected]>
1 parent 43d5806 commit cf78502

File tree

1 file changed

+48
-46
lines changed

1 file changed

+48
-46
lines changed

lustre/ptlrpc/import.c

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ struct ptlrpc_connect_async_args {
5656

5757
/**
5858
* Updates import \a imp current state to provided \a state value
59-
* Helper function. Must be called under imp_lock.
59+
* Helper function.
6060
*/
61-
static void __import_set_state(struct obd_import *imp,
62-
enum lustre_imp_state state)
61+
static void import_set_state_nolock(struct obd_import *imp,
62+
enum lustre_imp_state state)
6363
{
6464
switch (state) {
6565
case LUSTRE_IMP_CLOSED:
@@ -72,7 +72,20 @@ static void __import_set_state(struct obd_import *imp,
7272
break;
7373
default:
7474
imp->imp_replay_state = LUSTRE_IMP_REPLAY;
75+
break;
76+
}
77+
78+
/* A CLOSED import should remain so. */
79+
if (state == LUSTRE_IMP_CLOSED)
80+
return;
81+
82+
if (imp->imp_state != LUSTRE_IMP_NEW) {
83+
CDEBUG(D_HA, "%p %s: changing import state from %s to %s\n",
84+
imp, obd2cli_tgt(imp->imp_obd),
85+
ptlrpc_import_state_name(imp->imp_state),
86+
ptlrpc_import_state_name(state));
7587
}
88+
7689
imp->imp_state = state;
7790
imp->imp_state_hist[imp->imp_state_hist_idx].ish_state = state;
7891
imp->imp_state_hist[imp->imp_state_hist_idx].ish_time =
@@ -81,28 +94,17 @@ static void __import_set_state(struct obd_import *imp,
8194
IMP_STATE_HIST_LEN;
8295
}
8396

84-
/* A CLOSED import should remain so. */
85-
#define IMPORT_SET_STATE_NOLOCK(imp, state) \
86-
do { \
87-
if (imp->imp_state != LUSTRE_IMP_CLOSED) { \
88-
CDEBUG(D_HA, "%p %s: changing import state from %s to %s\n", \
89-
imp, obd2cli_tgt(imp->imp_obd), \
90-
ptlrpc_import_state_name(imp->imp_state), \
91-
ptlrpc_import_state_name(state)); \
92-
__import_set_state(imp, state); \
93-
} \
94-
} while(0)
95-
96-
#define IMPORT_SET_STATE(imp, state) \
97-
do { \
98-
spin_lock(&imp->imp_lock); \
99-
IMPORT_SET_STATE_NOLOCK(imp, state); \
100-
spin_unlock(&imp->imp_lock); \
101-
} while(0)
97+
static void import_set_state(struct obd_import *imp,
98+
enum lustre_imp_state new_state)
99+
{
100+
spin_lock(&imp->imp_lock);
101+
import_set_state_nolock(imp, new_state);
102+
spin_unlock(&imp->imp_lock);
103+
}
102104

103105
void ptlrpc_import_enter_resend(struct obd_import *imp)
104106
{
105-
IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER);
107+
import_set_state(imp, LUSTRE_IMP_RECOVER);
106108
}
107109
EXPORT_SYMBOL(ptlrpc_import_enter_resend);
108110

@@ -184,7 +186,7 @@ int ptlrpc_set_import_discon(struct obd_import *imp, __u32 conn_cnt)
184186
imp->imp_obd->obd_name, target_len, target_start,
185187
obd_import_nid2str(imp));
186188
}
187-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_DISCON);
189+
import_set_state_nolock(imp, LUSTRE_IMP_DISCON);
188190
spin_unlock(&imp->imp_lock);
189191

190192
if (obd_dump_on_timeout)
@@ -682,7 +684,7 @@ int ptlrpc_connect_import(struct obd_import *imp)
682684
RETURN(-EALREADY);
683685
}
684686

685-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_CONNECTING);
687+
import_set_state_nolock(imp, LUSTRE_IMP_CONNECTING);
686688

687689
imp->imp_conn_cnt++;
688690
imp->imp_resend_replay = 0;
@@ -789,7 +791,7 @@ int ptlrpc_connect_import(struct obd_import *imp)
789791
rc = 0;
790792
out:
791793
if (rc != 0)
792-
IMPORT_SET_STATE(imp, LUSTRE_IMP_DISCON);
794+
import_set_state(imp, LUSTRE_IMP_DISCON);
793795

794796
RETURN(rc);
795797
}
@@ -1154,9 +1156,9 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
11541156
if (msg_flags & MSG_CONNECT_RECOVERING) {
11551157
CDEBUG(D_HA, "connect to %s during recovery\n",
11561158
obd2cli_tgt(imp->imp_obd));
1157-
IMPORT_SET_STATE(imp, LUSTRE_IMP_REPLAY_LOCKS);
1159+
import_set_state(imp, LUSTRE_IMP_REPLAY_LOCKS);
11581160
} else {
1159-
IMPORT_SET_STATE(imp, LUSTRE_IMP_FULL);
1161+
import_set_state(imp, LUSTRE_IMP_FULL);
11601162
ptlrpc_activate_import(imp);
11611163
}
11621164

@@ -1215,7 +1217,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
12151217
*lustre_msg_get_handle(request->rq_repmsg);
12161218

12171219
if (!(MSG_CONNECT_RECOVERING & msg_flags)) {
1218-
IMPORT_SET_STATE(imp, LUSTRE_IMP_EVICTED);
1220+
import_set_state(imp, LUSTRE_IMP_EVICTED);
12191221
GOTO(finish, rc = 0);
12201222
}
12211223

@@ -1228,7 +1230,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
12281230
if (imp->imp_invalid) {
12291231
CDEBUG(D_HA, "%s: reconnected but import is invalid; "
12301232
"marking evicted\n", imp->imp_obd->obd_name);
1231-
IMPORT_SET_STATE(imp, LUSTRE_IMP_EVICTED);
1233+
import_set_state(imp, LUSTRE_IMP_EVICTED);
12321234
} else if (MSG_CONNECT_RECOVERING & msg_flags) {
12331235
CDEBUG(D_HA, "%s: reconnected to %s during replay\n",
12341236
imp->imp_obd->obd_name,
@@ -1238,17 +1240,17 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
12381240
imp->imp_resend_replay = 1;
12391241
spin_unlock(&imp->imp_lock);
12401242

1241-
IMPORT_SET_STATE(imp, imp->imp_replay_state);
1243+
import_set_state(imp, imp->imp_replay_state);
12421244
} else {
1243-
IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER);
1245+
import_set_state(imp, LUSTRE_IMP_RECOVER);
12441246
}
12451247
} else if ((MSG_CONNECT_RECOVERING & msg_flags) && !imp->imp_invalid) {
12461248
LASSERT(imp->imp_replayable);
12471249
imp->imp_remote_handle =
12481250
*lustre_msg_get_handle(request->rq_repmsg);
12491251
imp->imp_last_replay_transno = 0;
12501252
imp->imp_replay_cursor = &imp->imp_committed_list;
1251-
IMPORT_SET_STATE(imp, LUSTRE_IMP_REPLAY);
1253+
import_set_state(imp, LUSTRE_IMP_REPLAY);
12521254
} else if ((ocd->ocd_connect_flags & OBD_CONNECT_LIGHTWEIGHT) != 0 &&
12531255
!imp->imp_invalid) {
12541256

@@ -1257,13 +1259,13 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
12571259
imp->imp_obd->obd_name);
12581260
imp->imp_remote_handle =
12591261
*lustre_msg_get_handle(request->rq_repmsg);
1260-
IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER);
1262+
import_set_state(imp, LUSTRE_IMP_RECOVER);
12611263
} else {
12621264
DEBUG_REQ(D_HA, request, "%s: evicting (reconnect/recover flags"
12631265
" not set: %x)", imp->imp_obd->obd_name, msg_flags);
12641266
imp->imp_remote_handle =
12651267
*lustre_msg_get_handle(request->rq_repmsg);
1266-
IMPORT_SET_STATE(imp, LUSTRE_IMP_EVICTED);
1268+
import_set_state(imp, LUSTRE_IMP_EVICTED);
12671269
}
12681270

12691271
/* Sanity checks for a reconnected import. */
@@ -1309,7 +1311,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
13091311
class_export_put(exp);
13101312

13111313
if (rc != 0) {
1312-
IMPORT_SET_STATE(imp, LUSTRE_IMP_DISCON);
1314+
import_set_state(imp, LUSTRE_IMP_DISCON);
13131315
if (rc == -EACCES) {
13141316
/*
13151317
* Give up trying to reconnect
@@ -1347,7 +1349,7 @@ static int ptlrpc_connect_interpret(const struct lu_env *env,
13471349
OBD_OCD_VERSION_FIX(ocd->ocd_version),
13481350
LUSTRE_VERSION_STRING);
13491351
ptlrpc_deactivate_import(imp);
1350-
IMPORT_SET_STATE(imp, LUSTRE_IMP_CLOSED);
1352+
import_set_state(imp, LUSTRE_IMP_CLOSED);
13511353
}
13521354
RETURN(-EPROTO);
13531355
}
@@ -1450,7 +1452,7 @@ static int ptlrpc_invalidate_import_thread(void *data)
14501452
libcfs_debug_dumplog();
14511453
}
14521454

1453-
IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER);
1455+
import_set_state(imp, LUSTRE_IMP_RECOVER);
14541456
ptlrpc_import_recovery_state_machine(imp);
14551457

14561458
class_import_put(imp);
@@ -1532,7 +1534,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp)
15321534
rc = ptlrpc_replay_next(imp, &inflight);
15331535
if (inflight == 0 &&
15341536
atomic_read(&imp->imp_replay_inflight) == 0) {
1535-
IMPORT_SET_STATE(imp, LUSTRE_IMP_REPLAY_LOCKS);
1537+
import_set_state(imp, LUSTRE_IMP_REPLAY_LOCKS);
15361538
rc = ldlm_replay_locks(imp);
15371539
if (rc)
15381540
GOTO(out, rc);
@@ -1542,7 +1544,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp)
15421544

15431545
if (imp->imp_state == LUSTRE_IMP_REPLAY_LOCKS) {
15441546
if (atomic_read(&imp->imp_replay_inflight) == 0) {
1545-
IMPORT_SET_STATE(imp, LUSTRE_IMP_REPLAY_WAIT);
1547+
import_set_state(imp, LUSTRE_IMP_REPLAY_WAIT);
15461548
rc = signal_completed_replay(imp);
15471549
if (rc)
15481550
GOTO(out, rc);
@@ -1551,7 +1553,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp)
15511553

15521554
if (imp->imp_state == LUSTRE_IMP_REPLAY_WAIT) {
15531555
if (atomic_read(&imp->imp_replay_inflight) == 0) {
1554-
IMPORT_SET_STATE(imp, LUSTRE_IMP_RECOVER);
1556+
import_set_state(imp, LUSTRE_IMP_RECOVER);
15551557
}
15561558
}
15571559

@@ -1561,7 +1563,7 @@ int ptlrpc_import_recovery_state_machine(struct obd_import *imp)
15611563
rc = ptlrpc_resend(imp);
15621564
if (rc)
15631565
GOTO(out, rc);
1564-
IMPORT_SET_STATE(imp, LUSTRE_IMP_FULL);
1566+
import_set_state(imp, LUSTRE_IMP_FULL);
15651567
ptlrpc_activate_import(imp);
15661568

15671569
LCONSOLE_INFO("%s: Connection restored to %s (at %s)\n",
@@ -1619,7 +1621,7 @@ static struct ptlrpc_request *ptlrpc_disconnect_prep_req(struct obd_import *imp)
16191621
req->rq_timeout = min_t(int, req->rq_timeout,
16201622
INITIAL_CONNECT_TIMEOUT);
16211623

1622-
IMPORT_SET_STATE(imp, LUSTRE_IMP_CONNECTING);
1624+
import_set_state(imp, LUSTRE_IMP_CONNECTING);
16231625
req->rq_send_state = LUSTRE_IMP_CONNECTING;
16241626
ptlrpc_request_set_replen(req);
16251627

@@ -1683,9 +1685,9 @@ int ptlrpc_disconnect_import(struct obd_import *imp, int noclose)
16831685
spin_lock(&imp->imp_lock);
16841686
out:
16851687
if (noclose)
1686-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_DISCON);
1688+
import_set_state_nolock(imp, LUSTRE_IMP_DISCON);
16871689
else
1688-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_CLOSED);
1690+
import_set_state_nolock(imp, LUSTRE_IMP_CLOSED);
16891691
memset(&imp->imp_remote_handle, 0, sizeof(imp->imp_remote_handle));
16901692
spin_unlock(&imp->imp_lock);
16911693

@@ -1736,7 +1738,7 @@ static int ptlrpc_disconnect_idle_interpret(const struct lu_env *env,
17361738
if (atomic_read(&imp->imp_inflight) > 1) {
17371739
imp->imp_generation++;
17381740
imp->imp_initiated_at = imp->imp_generation;
1739-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_NEW);
1741+
import_set_state_nolock(imp, LUSTRE_IMP_NEW);
17401742
ptlrpc_reset_reqs_generation(imp);
17411743
connect = 1;
17421744
}
@@ -1789,7 +1791,7 @@ void ptlrpc_cleanup_imp(struct obd_import *imp)
17891791
ENTRY;
17901792

17911793
spin_lock(&imp->imp_lock);
1792-
IMPORT_SET_STATE_NOLOCK(imp, LUSTRE_IMP_CLOSED);
1794+
import_set_state_nolock(imp, LUSTRE_IMP_CLOSED);
17931795
imp->imp_generation++;
17941796
spin_unlock(&imp->imp_lock);
17951797
ptlrpc_abort_inflight(imp);

0 commit comments

Comments
 (0)