rcom.c (b9d2f6ada0083bad46f37a1238fea718b575e0fa) rcom.c (1151935182b40bbe398905850f6f7f4fbb262e06)
1// SPDX-License-Identifier: GPL-2.0-only
2/******************************************************************************
3*******************************************************************************
4**
5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
6** Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
7**
8**

--- 207 unchanged lines hidden (view full) ---

216 error = check_rcom_config(ls, rc, nodeid);
217 }
218
219 /* the caller looks at rc_result for the remote recovery status */
220 out:
221 return error;
222}
223
1// SPDX-License-Identifier: GPL-2.0-only
2/******************************************************************************
3*******************************************************************************
4**
5** Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
6** Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
7**
8**

--- 207 unchanged lines hidden (view full) ---

216 error = check_rcom_config(ls, rc, nodeid);
217 }
218
219 /* the caller looks at rc_result for the remote recovery status */
220 out:
221 return error;
222}
223
224static void receive_rcom_status(struct dlm_ls *ls, struct dlm_rcom *rc_in,
224static void receive_rcom_status(struct dlm_ls *ls,
225 const struct dlm_rcom *rc_in,
225 uint64_t seq)
226{
227 struct dlm_rcom *rc;
228 struct rcom_status *rs;
229 uint32_t status;
230 int nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
231 int len = sizeof(struct rcom_config);
232 struct dlm_msg *msg;

--- 45 unchanged lines hidden (view full) ---

278
279 dlm_slots_copy_out(ls, rc);
280 spin_unlock(&ls->ls_recover_lock);
281
282 do_send:
283 send_rcom_stateless(msg, rc);
284}
285
226 uint64_t seq)
227{
228 struct dlm_rcom *rc;
229 struct rcom_status *rs;
230 uint32_t status;
231 int nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
232 int len = sizeof(struct rcom_config);
233 struct dlm_msg *msg;

--- 45 unchanged lines hidden (view full) ---

279
280 dlm_slots_copy_out(ls, rc);
281 spin_unlock(&ls->ls_recover_lock);
282
283 do_send:
284 send_rcom_stateless(msg, rc);
285}
286
286static void receive_sync_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
287static void receive_sync_reply(struct dlm_ls *ls, const struct dlm_rcom *rc_in)
287{
288 spin_lock(&ls->ls_rcom_spin);
289 if (!test_bit(LSFL_RCOM_WAIT, &ls->ls_flags) ||
290 le64_to_cpu(rc_in->rc_id) != ls->ls_rcom_seq) {
291 log_debug(ls, "reject reply %d from %d seq %llx expect %llx",
292 le32_to_cpu(rc_in->rc_type),
293 le32_to_cpu(rc_in->rc_header.h_nodeid),
294 (unsigned long long)le64_to_cpu(rc_in->rc_id),

--- 33 unchanged lines hidden (view full) ---

328 error = dlm_wait_function(ls, &rcom_response);
329 disallow_sync_reply(ls);
330 if (error == -ETIMEDOUT)
331 goto retry;
332 out:
333 return error;
334}
335
288{
289 spin_lock(&ls->ls_rcom_spin);
290 if (!test_bit(LSFL_RCOM_WAIT, &ls->ls_flags) ||
291 le64_to_cpu(rc_in->rc_id) != ls->ls_rcom_seq) {
292 log_debug(ls, "reject reply %d from %d seq %llx expect %llx",
293 le32_to_cpu(rc_in->rc_type),
294 le32_to_cpu(rc_in->rc_header.h_nodeid),
295 (unsigned long long)le64_to_cpu(rc_in->rc_id),

--- 33 unchanged lines hidden (view full) ---

329 error = dlm_wait_function(ls, &rcom_response);
330 disallow_sync_reply(ls);
331 if (error == -ETIMEDOUT)
332 goto retry;
333 out:
334 return error;
335}
336
336static void receive_rcom_names(struct dlm_ls *ls, struct dlm_rcom *rc_in,
337static void receive_rcom_names(struct dlm_ls *ls, const struct dlm_rcom *rc_in,
337 uint64_t seq)
338{
339 struct dlm_rcom *rc;
340 int error, inlen, outlen, nodeid;
341 struct dlm_msg *msg;
342
343 nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
344 inlen = le16_to_cpu(rc_in->rc_header.h_length) -

--- 26 unchanged lines hidden (view full) ---

371 memcpy(rc->rc_buf, r->res_name, r->res_length);
372 rc->rc_id = cpu_to_le64(r->res_id);
373
374 send_rcom(mh, rc);
375 out:
376 return error;
377}
378
338 uint64_t seq)
339{
340 struct dlm_rcom *rc;
341 int error, inlen, outlen, nodeid;
342 struct dlm_msg *msg;
343
344 nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
345 inlen = le16_to_cpu(rc_in->rc_header.h_length) -

--- 26 unchanged lines hidden (view full) ---

372 memcpy(rc->rc_buf, r->res_name, r->res_length);
373 rc->rc_id = cpu_to_le64(r->res_id);
374
375 send_rcom(mh, rc);
376 out:
377 return error;
378}
379
379static void receive_rcom_lookup(struct dlm_ls *ls, struct dlm_rcom *rc_in,
380 uint64_t seq)
380static void receive_rcom_lookup(struct dlm_ls *ls,
381 const struct dlm_rcom *rc_in, uint64_t seq)
381{
382 struct dlm_rcom *rc;
383 struct dlm_mhandle *mh;
384 int error, ret_nodeid, nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
385 int len = le16_to_cpu(rc_in->rc_header.h_length) -
386 sizeof(struct dlm_rcom);
387
388 /* Old code would send this special id to trigger a debug dump. */

--- 14 unchanged lines hidden (view full) ---

403 ret_nodeid = error;
404 rc->rc_result = cpu_to_le32(ret_nodeid);
405 rc->rc_id = rc_in->rc_id;
406 rc->rc_seq_reply = rc_in->rc_seq;
407
408 send_rcom(mh, rc);
409}
410
382{
383 struct dlm_rcom *rc;
384 struct dlm_mhandle *mh;
385 int error, ret_nodeid, nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
386 int len = le16_to_cpu(rc_in->rc_header.h_length) -
387 sizeof(struct dlm_rcom);
388
389 /* Old code would send this special id to trigger a debug dump. */

--- 14 unchanged lines hidden (view full) ---

404 ret_nodeid = error;
405 rc->rc_result = cpu_to_le32(ret_nodeid);
406 rc->rc_id = rc_in->rc_id;
407 rc->rc_seq_reply = rc_in->rc_seq;
408
409 send_rcom(mh, rc);
410}
411
411static void receive_rcom_lookup_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
412static void receive_rcom_lookup_reply(struct dlm_ls *ls,
413 const struct dlm_rcom *rc_in)
412{
413 dlm_recover_master_reply(ls, rc_in);
414}
415
416static void pack_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb,
417 struct rcom_lock *rl)
418{
419 memset(rl, 0, sizeof(*rl));

--- 44 unchanged lines hidden (view full) ---

464 rc->rc_id = cpu_to_le64((uintptr_t)r);
465
466 send_rcom(mh, rc);
467 out:
468 return error;
469}
470
471/* needs at least dlm_rcom + rcom_lock */
414{
415 dlm_recover_master_reply(ls, rc_in);
416}
417
418static void pack_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb,
419 struct rcom_lock *rl)
420{
421 memset(rl, 0, sizeof(*rl));

--- 44 unchanged lines hidden (view full) ---

466 rc->rc_id = cpu_to_le64((uintptr_t)r);
467
468 send_rcom(mh, rc);
469 out:
470 return error;
471}
472
473/* needs at least dlm_rcom + rcom_lock */
472static void receive_rcom_lock(struct dlm_ls *ls, struct dlm_rcom *rc_in,
474static void receive_rcom_lock(struct dlm_ls *ls, const struct dlm_rcom *rc_in,
473 uint64_t seq)
474{
475 __le32 rl_remid, rl_result;
476 struct rcom_lock *rl;
477 struct dlm_rcom *rc;
478 struct dlm_mhandle *mh;
479 int error, nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
480

--- 14 unchanged lines hidden (view full) ---

495 rc->rc_seq_reply = rc_in->rc_seq;
496
497 send_rcom(mh, rc);
498}
499
500/* If the lockspace doesn't exist then still send a status message
501 back; it's possible that it just doesn't have its global_id yet. */
502
475 uint64_t seq)
476{
477 __le32 rl_remid, rl_result;
478 struct rcom_lock *rl;
479 struct dlm_rcom *rc;
480 struct dlm_mhandle *mh;
481 int error, nodeid = le32_to_cpu(rc_in->rc_header.h_nodeid);
482

--- 14 unchanged lines hidden (view full) ---

497 rc->rc_seq_reply = rc_in->rc_seq;
498
499 send_rcom(mh, rc);
500}
501
502/* If the lockspace doesn't exist then still send a status message
503 back; it's possible that it just doesn't have its global_id yet. */
504
503int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in)
505int dlm_send_ls_not_ready(int nodeid, const struct dlm_rcom *rc_in)
504{
505 struct dlm_rcom *rc;
506 struct rcom_config *rf;
507 struct dlm_mhandle *mh;
508 char *mb;
509 int mb_len = sizeof(struct dlm_rcom) + sizeof(struct rcom_config);
510
511 mh = dlm_midcomms_get_mhandle(nodeid, mb_len, GFP_NOFS, &mb);

--- 61 unchanged lines hidden (view full) ---

573 * dlm_recover_locks_wait()
574 *
575 * recover_status |= DONE
576 */
577
578/* Called by dlm_recv; corresponds to dlm_receive_message() but special
579 recovery-only comms are sent through here. */
580
506{
507 struct dlm_rcom *rc;
508 struct rcom_config *rf;
509 struct dlm_mhandle *mh;
510 char *mb;
511 int mb_len = sizeof(struct dlm_rcom) + sizeof(struct rcom_config);
512
513 mh = dlm_midcomms_get_mhandle(nodeid, mb_len, GFP_NOFS, &mb);

--- 61 unchanged lines hidden (view full) ---

575 * dlm_recover_locks_wait()
576 *
577 * recover_status |= DONE
578 */
579
580/* Called by dlm_recv; corresponds to dlm_receive_message() but special
581 recovery-only comms are sent through here. */
582
581void dlm_receive_rcom(struct dlm_ls *ls, struct dlm_rcom *rc, int nodeid)
583void dlm_receive_rcom(struct dlm_ls *ls, const struct dlm_rcom *rc, int nodeid)
582{
583 int lock_size = sizeof(struct dlm_rcom) + sizeof(struct rcom_lock);
584 int stop, reply = 0, names = 0, lookup = 0, lock = 0;
585 uint32_t status;
586 uint64_t seq;
587
588 switch (rc->rc_type) {
589 case cpu_to_le32(DLM_RCOM_STATUS_REPLY):

--- 101 unchanged lines hidden ---
584{
585 int lock_size = sizeof(struct dlm_rcom) + sizeof(struct rcom_lock);
586 int stop, reply = 0, names = 0, lookup = 0, lock = 0;
587 uint32_t status;
588 uint64_t seq;
589
590 switch (rc->rc_type) {
591 case cpu_to_le32(DLM_RCOM_STATUS_REPLY):

--- 101 unchanged lines hidden ---