Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fs: dlm: get recovery sequence number as parameter

This patch removes a read of the ls->ls_recover_seq uint64_t number in
_create_rcom(). If the ls->ls_recover_seq is readed the ls_recover_lock
need to held. However this number was always readed before when any rcom
message is received and it's not necessary to read it again from a per
lockspace variable to use it for the replying message. This patch will
pass the sequence number as parameter so another read of ls->ls_recover_seq
and holding the ls->ls_recover_lock is not required.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>

authored by

Alexander Aring and committed by
David Teigland
c4f4e135 643f5cfa

+99 -85
+2 -2
fs/dlm/dir.c
··· 58 58 up_read(&ls->ls_root_sem); 59 59 } 60 60 61 - int dlm_recover_directory(struct dlm_ls *ls) 61 + int dlm_recover_directory(struct dlm_ls *ls, uint64_t seq) 62 62 { 63 63 struct dlm_member *memb; 64 64 char *b, *last_name = NULL; ··· 90 90 } 91 91 92 92 error = dlm_rcom_names(ls, memb->nodeid, 93 - last_name, last_len); 93 + last_name, last_len, seq); 94 94 if (error) 95 95 goto out_free; 96 96
+1 -1
fs/dlm/dir.h
··· 15 15 int dlm_dir_nodeid(struct dlm_rsb *rsb); 16 16 int dlm_hash2nodeid(struct dlm_ls *ls, uint32_t hash); 17 17 void dlm_recover_dir_nodeid(struct dlm_ls *ls); 18 - int dlm_recover_directory(struct dlm_ls *ls); 18 + int dlm_recover_directory(struct dlm_ls *ls, uint64_t seq); 19 19 void dlm_copy_master_names(struct dlm_ls *ls, char *inbuf, int inlen, 20 20 char *outbuf, int outlen, int nodeid); 21 21
+3 -2
fs/dlm/lock.c
··· 5464 5464 } 5465 5465 5466 5466 /* needs at least dlm_rcom + rcom_lock */ 5467 - int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc) 5467 + int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc, 5468 + uint64_t seq) 5468 5469 { 5469 5470 struct rcom_lock *rl = (struct rcom_lock *) rc->rc_buf; 5470 5471 struct dlm_rsb *r; ··· 5510 5509 lkid, le32_to_cpu(rc->rc_header.h_nodeid), remid, 5511 5510 result); 5512 5511 5513 - dlm_send_rcom_lock(r, lkb); 5512 + dlm_send_rcom_lock(r, lkb, seq); 5514 5513 goto out; 5515 5514 case -EEXIST: 5516 5515 case 0:
+2 -1
fs/dlm/lock.h
··· 37 37 int dlm_recover_waiters_post(struct dlm_ls *ls); 38 38 void dlm_recover_waiters_pre(struct dlm_ls *ls); 39 39 int dlm_recover_master_copy(struct dlm_ls *ls, struct dlm_rcom *rc); 40 - int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc); 40 + int dlm_recover_process_copy(struct dlm_ls *ls, struct dlm_rcom *rc, 41 + uint64_t seq); 41 42 42 43 int dlm_user_request(struct dlm_ls *ls, struct dlm_user_args *ua, int mode, 43 44 uint32_t flags, void *name, unsigned int namelen);
+3 -3
fs/dlm/member.c
··· 449 449 450 450 /* send a status request to all members just to establish comms connections */ 451 451 452 - static int ping_members(struct dlm_ls *ls) 452 + static int ping_members(struct dlm_ls *ls, uint64_t seq) 453 453 { 454 454 struct dlm_member *memb; 455 455 int error = 0; ··· 459 459 error = -EINTR; 460 460 break; 461 461 } 462 - error = dlm_rcom_status(ls, memb->nodeid, 0); 462 + error = dlm_rcom_status(ls, memb->nodeid, 0, seq); 463 463 if (error) 464 464 break; 465 465 } ··· 607 607 make_member_array(ls); 608 608 *neg_out = neg; 609 609 610 - error = ping_members(ls); 610 + error = ping_members(ls, rv->seq); 611 611 log_rinfo(ls, "dlm_recover_members %d nodes", ls->ls_num_nodes); 612 612 return error; 613 613 }
+38 -30
fs/dlm/rcom.c
··· 28 28 } 29 29 30 30 static void _create_rcom(struct dlm_ls *ls, int to_nodeid, int type, int len, 31 - struct dlm_rcom **rc_ret, char *mb, int mb_len) 31 + struct dlm_rcom **rc_ret, char *mb, int mb_len, 32 + uint64_t seq) 32 33 { 33 34 struct dlm_rcom *rc; 34 35 ··· 42 41 rc->rc_header.h_cmd = DLM_RCOM; 43 42 44 43 rc->rc_type = cpu_to_le32(type); 45 - 46 - spin_lock(&ls->ls_recover_lock); 47 - rc->rc_seq = cpu_to_le64(ls->ls_recover_seq); 48 - spin_unlock(&ls->ls_recover_lock); 44 + rc->rc_seq = cpu_to_le64(seq); 49 45 50 46 *rc_ret = rc; 51 47 } 52 48 53 49 static int create_rcom(struct dlm_ls *ls, int to_nodeid, int type, int len, 54 - struct dlm_rcom **rc_ret, struct dlm_mhandle **mh_ret) 50 + struct dlm_rcom **rc_ret, struct dlm_mhandle **mh_ret, 51 + uint64_t seq) 55 52 { 56 53 int mb_len = sizeof(struct dlm_rcom) + len; 57 54 struct dlm_mhandle *mh; ··· 62 63 return -ENOBUFS; 63 64 } 64 65 65 - _create_rcom(ls, to_nodeid, type, len, rc_ret, mb, mb_len); 66 + _create_rcom(ls, to_nodeid, type, len, rc_ret, mb, mb_len, seq); 66 67 *mh_ret = mh; 67 68 return 0; 68 69 } 69 70 70 71 static int create_rcom_stateless(struct dlm_ls *ls, int to_nodeid, int type, 71 72 int len, struct dlm_rcom **rc_ret, 72 - struct dlm_msg **msg_ret) 73 + struct dlm_msg **msg_ret, uint64_t seq) 73 74 { 74 75 int mb_len = sizeof(struct dlm_rcom) + len; 75 76 struct dlm_msg *msg; ··· 83 84 return -ENOBUFS; 84 85 } 85 86 86 - _create_rcom(ls, to_nodeid, type, len, rc_ret, mb, mb_len); 87 + _create_rcom(ls, to_nodeid, type, len, rc_ret, mb, mb_len, seq); 87 88 *msg_ret = msg; 88 89 return 0; 89 90 } ··· 169 170 * node's rcom_config. 170 171 */ 171 172 172 - int dlm_rcom_status(struct dlm_ls *ls, int nodeid, uint32_t status_flags) 173 + int dlm_rcom_status(struct dlm_ls *ls, int nodeid, uint32_t status_flags, 174 + uint64_t seq) 173 175 { 174 176 struct dlm_rcom *rc; 175 177 struct dlm_msg *msg; ··· 186 186 187 187 retry: 188 188 error = create_rcom_stateless(ls, nodeid, DLM_RCOM_STATUS, 189 - sizeof(struct rcom_status), &rc, &msg); 189 + sizeof(struct rcom_status), &rc, &msg, 190 + seq); 190 191 if (error) 191 192 goto out; 192 193 ··· 221 220 return error; 222 221 } 223 222 224 - static void receive_rcom_status(struct dlm_ls *ls, struct dlm_rcom *rc_in) 223 + static void receive_rcom_status(struct dlm_ls *ls, struct dlm_rcom *rc_in, 224 + uint64_t seq) 225 225 { 226 226 struct dlm_rcom *rc; 227 227 struct rcom_status *rs; ··· 253 251 254 252 do_create: 255 253 error = create_rcom_stateless(ls, nodeid, DLM_RCOM_STATUS_REPLY, 256 - len, &rc, &msg); 254 + len, &rc, &msg, seq); 257 255 if (error) 258 256 return; 259 257 ··· 304 302 spin_unlock(&ls->ls_rcom_spin); 305 303 } 306 304 307 - int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name, int last_len) 305 + int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name, 306 + int last_len, uint64_t seq) 308 307 { 309 308 struct dlm_rcom *rc; 310 309 struct dlm_msg *msg; ··· 315 312 316 313 retry: 317 314 error = create_rcom_stateless(ls, nodeid, DLM_RCOM_NAMES, last_len, 318 - &rc, &msg); 315 + &rc, &msg, seq); 319 316 if (error) 320 317 goto out; 321 318 memcpy(rc->rc_buf, last_name, last_len); ··· 333 330 return error; 334 331 } 335 332 336 - static void receive_rcom_names(struct dlm_ls *ls, struct dlm_rcom *rc_in) 333 + static void receive_rcom_names(struct dlm_ls *ls, struct dlm_rcom *rc_in, 334 + uint64_t seq) 337 335 { 338 336 struct dlm_rcom *rc; 339 337 int error, inlen, outlen, nodeid; ··· 346 342 outlen = DLM_MAX_APP_BUFSIZE - sizeof(struct dlm_rcom); 347 343 348 344 error = create_rcom_stateless(ls, nodeid, DLM_RCOM_NAMES_REPLY, outlen, 349 - &rc, &msg); 345 + &rc, &msg, seq); 350 346 if (error) 351 347 return; 352 348 rc->rc_id = rc_in->rc_id; ··· 357 353 send_rcom_stateless(msg, rc); 358 354 } 359 355 360 - int dlm_send_rcom_lookup(struct dlm_rsb *r, int dir_nodeid) 356 + int dlm_send_rcom_lookup(struct dlm_rsb *r, int dir_nodeid, uint64_t seq) 361 357 { 362 358 struct dlm_rcom *rc; 363 359 struct dlm_mhandle *mh; ··· 365 361 int error; 366 362 367 363 error = create_rcom(ls, dir_nodeid, DLM_RCOM_LOOKUP, r->res_length, 368 - &rc, &mh); 364 + &rc, &mh, seq); 369 365 if (error) 370 366 goto out; 371 367 memcpy(rc->rc_buf, r->res_name, r->res_length); ··· 376 372 return error; 377 373 } 378 374 379 - static void receive_rcom_lookup(struct dlm_ls *ls, struct dlm_rcom *rc_in) 375 + static void receive_rcom_lookup(struct dlm_ls *ls, struct dlm_rcom *rc_in, 376 + uint64_t seq) 380 377 { 381 378 struct dlm_rcom *rc; 382 379 struct dlm_mhandle *mh; ··· 392 387 return; 393 388 } 394 389 395 - error = create_rcom(ls, nodeid, DLM_RCOM_LOOKUP_REPLY, 0, &rc, &mh); 390 + error = create_rcom(ls, nodeid, DLM_RCOM_LOOKUP_REPLY, 0, &rc, &mh, 391 + seq); 396 392 if (error) 397 393 return; 398 394 ··· 443 437 memcpy(rl->rl_lvb, lkb->lkb_lvbptr, r->res_ls->ls_lvblen); 444 438 } 445 439 446 - int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb) 440 + int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb, uint64_t seq) 447 441 { 448 442 struct dlm_ls *ls = r->res_ls; 449 443 struct dlm_rcom *rc; ··· 454 448 if (lkb->lkb_lvbptr) 455 449 len += ls->ls_lvblen; 456 450 457 - error = create_rcom(ls, r->res_nodeid, DLM_RCOM_LOCK, len, &rc, &mh); 451 + error = create_rcom(ls, r->res_nodeid, DLM_RCOM_LOCK, len, &rc, &mh, 452 + seq); 458 453 if (error) 459 454 goto out; 460 455 ··· 469 462 } 470 463 471 464 /* needs at least dlm_rcom + rcom_lock */ 472 - static void receive_rcom_lock(struct dlm_ls *ls, struct dlm_rcom *rc_in) 465 + static void receive_rcom_lock(struct dlm_ls *ls, struct dlm_rcom *rc_in, 466 + uint64_t seq) 473 467 { 474 468 struct dlm_rcom *rc; 475 469 struct dlm_mhandle *mh; ··· 479 471 dlm_recover_master_copy(ls, rc_in); 480 472 481 473 error = create_rcom(ls, nodeid, DLM_RCOM_LOCK_REPLY, 482 - sizeof(struct rcom_lock), &rc, &mh); 474 + sizeof(struct rcom_lock), &rc, &mh, seq); 483 475 if (error) 484 476 return; 485 477 ··· 628 620 629 621 switch (rc->rc_type) { 630 622 case cpu_to_le32(DLM_RCOM_STATUS): 631 - receive_rcom_status(ls, rc); 623 + receive_rcom_status(ls, rc, seq); 632 624 break; 633 625 634 626 case cpu_to_le32(DLM_RCOM_NAMES): 635 - receive_rcom_names(ls, rc); 627 + receive_rcom_names(ls, rc, seq); 636 628 break; 637 629 638 630 case cpu_to_le32(DLM_RCOM_LOOKUP): 639 - receive_rcom_lookup(ls, rc); 631 + receive_rcom_lookup(ls, rc, seq); 640 632 break; 641 633 642 634 case cpu_to_le32(DLM_RCOM_LOCK): 643 635 if (le16_to_cpu(rc->rc_header.h_length) < lock_size) 644 636 goto Eshort; 645 - receive_rcom_lock(ls, rc); 637 + receive_rcom_lock(ls, rc, seq); 646 638 break; 647 639 648 640 case cpu_to_le32(DLM_RCOM_STATUS_REPLY): ··· 660 652 case cpu_to_le32(DLM_RCOM_LOCK_REPLY): 661 653 if (le16_to_cpu(rc->rc_header.h_length) < lock_size) 662 654 goto Eshort; 663 - dlm_recover_process_copy(ls, rc); 655 + dlm_recover_process_copy(ls, rc, seq); 664 656 break; 665 657 666 658 default:
+6 -4
fs/dlm/rcom.h
··· 12 12 #ifndef __RCOM_DOT_H__ 13 13 #define __RCOM_DOT_H__ 14 14 15 - int dlm_rcom_status(struct dlm_ls *ls, int nodeid, uint32_t status_flags); 16 - int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name,int last_len); 17 - int dlm_send_rcom_lookup(struct dlm_rsb *r, int dir_nodeid); 18 - int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb); 15 + int dlm_rcom_status(struct dlm_ls *ls, int nodeid, uint32_t status_flags, 16 + uint64_t seq); 17 + int dlm_rcom_names(struct dlm_ls *ls, int nodeid, char *last_name, 18 + int last_len, uint64_t seq); 19 + int dlm_send_rcom_lookup(struct dlm_rsb *r, int dir_nodeid, uint64_t seq); 20 + int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb, uint64_t seq); 19 21 void dlm_receive_rcom(struct dlm_ls *ls, struct dlm_rcom *rc, int nodeid); 20 22 int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in); 21 23
+30 -28
fs/dlm/recover.c
··· 93 93 } 94 94 95 95 static int wait_status_all(struct dlm_ls *ls, uint32_t wait_status, 96 - int save_slots) 96 + int save_slots, uint64_t seq) 97 97 { 98 98 struct dlm_rcom *rc = ls->ls_recover_buf; 99 99 struct dlm_member *memb; ··· 107 107 goto out; 108 108 } 109 109 110 - error = dlm_rcom_status(ls, memb->nodeid, 0); 110 + error = dlm_rcom_status(ls, memb->nodeid, 0, seq); 111 111 if (error) 112 112 goto out; 113 113 ··· 126 126 } 127 127 128 128 static int wait_status_low(struct dlm_ls *ls, uint32_t wait_status, 129 - uint32_t status_flags) 129 + uint32_t status_flags, uint64_t seq) 130 130 { 131 131 struct dlm_rcom *rc = ls->ls_recover_buf; 132 132 int error = 0, delay = 0, nodeid = ls->ls_low_nodeid; ··· 137 137 goto out; 138 138 } 139 139 140 - error = dlm_rcom_status(ls, nodeid, status_flags); 140 + error = dlm_rcom_status(ls, nodeid, status_flags, seq); 141 141 if (error) 142 142 break; 143 143 ··· 151 151 return error; 152 152 } 153 153 154 - static int wait_status(struct dlm_ls *ls, uint32_t status) 154 + static int wait_status(struct dlm_ls *ls, uint32_t status, uint64_t seq) 155 155 { 156 156 uint32_t status_all = status << 1; 157 157 int error; 158 158 159 159 if (ls->ls_low_nodeid == dlm_our_nodeid()) { 160 - error = wait_status_all(ls, status, 0); 160 + error = wait_status_all(ls, status, 0, seq); 161 161 if (!error) 162 162 dlm_set_recover_status(ls, status_all); 163 163 } else 164 - error = wait_status_low(ls, status_all, 0); 164 + error = wait_status_low(ls, status_all, 0, seq); 165 165 166 166 return error; 167 167 } 168 168 169 - int dlm_recover_members_wait(struct dlm_ls *ls) 169 + int dlm_recover_members_wait(struct dlm_ls *ls, uint64_t seq) 170 170 { 171 171 struct dlm_member *memb; 172 172 struct dlm_slot *slots; ··· 180 180 } 181 181 182 182 if (ls->ls_low_nodeid == dlm_our_nodeid()) { 183 - error = wait_status_all(ls, DLM_RS_NODES, 1); 183 + error = wait_status_all(ls, DLM_RS_NODES, 1, seq); 184 184 if (error) 185 185 goto out; 186 186 ··· 199 199 dlm_set_recover_status(ls, DLM_RS_NODES_ALL); 200 200 } 201 201 } else { 202 - error = wait_status_low(ls, DLM_RS_NODES_ALL, DLM_RSF_NEED_SLOTS); 202 + error = wait_status_low(ls, DLM_RS_NODES_ALL, 203 + DLM_RSF_NEED_SLOTS, seq); 203 204 if (error) 204 205 goto out; 205 206 ··· 210 209 return error; 211 210 } 212 211 213 - int dlm_recover_directory_wait(struct dlm_ls *ls) 212 + int dlm_recover_directory_wait(struct dlm_ls *ls, uint64_t seq) 214 213 { 215 - return wait_status(ls, DLM_RS_DIR); 214 + return wait_status(ls, DLM_RS_DIR, seq); 216 215 } 217 216 218 - int dlm_recover_locks_wait(struct dlm_ls *ls) 217 + int dlm_recover_locks_wait(struct dlm_ls *ls, uint64_t seq) 219 218 { 220 - return wait_status(ls, DLM_RS_LOCKS); 219 + return wait_status(ls, DLM_RS_LOCKS, seq); 221 220 } 222 221 223 - int dlm_recover_done_wait(struct dlm_ls *ls) 222 + int dlm_recover_done_wait(struct dlm_ls *ls, uint64_t seq) 224 223 { 225 - return wait_status(ls, DLM_RS_DONE); 224 + return wait_status(ls, DLM_RS_DONE, seq); 226 225 } 227 226 228 227 /* ··· 442 441 * equals our_nodeid below). 443 442 */ 444 443 445 - static int recover_master(struct dlm_rsb *r, unsigned int *count) 444 + static int recover_master(struct dlm_rsb *r, unsigned int *count, uint64_t seq) 446 445 { 447 446 struct dlm_ls *ls = r->res_ls; 448 447 int our_nodeid, dir_nodeid; ··· 473 472 error = 0; 474 473 } else { 475 474 recover_idr_add(r); 476 - error = dlm_send_rcom_lookup(r, dir_nodeid); 475 + error = dlm_send_rcom_lookup(r, dir_nodeid, seq); 477 476 } 478 477 479 478 (*count)++; ··· 521 520 * the correct dir node. 522 521 */ 523 522 524 - int dlm_recover_masters(struct dlm_ls *ls) 523 + int dlm_recover_masters(struct dlm_ls *ls, uint64_t seq) 525 524 { 526 525 struct dlm_rsb *r; 527 526 unsigned int total = 0; ··· 543 542 if (nodir) 544 543 error = recover_master_static(r, &count); 545 544 else 546 - error = recover_master(r, &count); 545 + error = recover_master(r, &count, seq); 547 546 unlock_rsb(r); 548 547 cond_resched(); 549 548 total++; ··· 615 614 * an equal number of replies then recovery for the rsb is done 616 615 */ 617 616 618 - static int recover_locks_queue(struct dlm_rsb *r, struct list_head *head) 617 + static int recover_locks_queue(struct dlm_rsb *r, struct list_head *head, 618 + uint64_t seq) 619 619 { 620 620 struct dlm_lkb *lkb; 621 621 int error = 0; 622 622 623 623 list_for_each_entry(lkb, head, lkb_statequeue) { 624 - error = dlm_send_rcom_lock(r, lkb); 624 + error = dlm_send_rcom_lock(r, lkb, seq); 625 625 if (error) 626 626 break; 627 627 r->res_recover_locks_count++; ··· 631 629 return error; 632 630 } 633 631 634 - static int recover_locks(struct dlm_rsb *r) 632 + static int recover_locks(struct dlm_rsb *r, uint64_t seq) 635 633 { 636 634 int error = 0; 637 635 ··· 639 637 640 638 DLM_ASSERT(!r->res_recover_locks_count, dlm_dump_rsb(r);); 641 639 642 - error = recover_locks_queue(r, &r->res_grantqueue); 640 + error = recover_locks_queue(r, &r->res_grantqueue, seq); 643 641 if (error) 644 642 goto out; 645 - error = recover_locks_queue(r, &r->res_convertqueue); 643 + error = recover_locks_queue(r, &r->res_convertqueue, seq); 646 644 if (error) 647 645 goto out; 648 - error = recover_locks_queue(r, &r->res_waitqueue); 646 + error = recover_locks_queue(r, &r->res_waitqueue, seq); 649 647 if (error) 650 648 goto out; 651 649 ··· 658 656 return error; 659 657 } 660 658 661 - int dlm_recover_locks(struct dlm_ls *ls) 659 + int dlm_recover_locks(struct dlm_ls *ls, uint64_t seq) 662 660 { 663 661 struct dlm_rsb *r; 664 662 int error, count = 0; ··· 679 677 goto out; 680 678 } 681 679 682 - error = recover_locks(r); 680 + error = recover_locks(r, seq); 683 681 if (error) { 684 682 up_read(&ls->ls_root_sem); 685 683 goto out;
+6 -6
fs/dlm/recover.h
··· 15 15 int dlm_wait_function(struct dlm_ls *ls, int (*testfn) (struct dlm_ls *ls)); 16 16 uint32_t dlm_recover_status(struct dlm_ls *ls); 17 17 void dlm_set_recover_status(struct dlm_ls *ls, uint32_t status); 18 - int dlm_recover_members_wait(struct dlm_ls *ls); 19 - int dlm_recover_directory_wait(struct dlm_ls *ls); 20 - int dlm_recover_locks_wait(struct dlm_ls *ls); 21 - int dlm_recover_done_wait(struct dlm_ls *ls); 22 - int dlm_recover_masters(struct dlm_ls *ls); 18 + int dlm_recover_members_wait(struct dlm_ls *ls, uint64_t seq); 19 + int dlm_recover_directory_wait(struct dlm_ls *ls, uint64_t seq); 20 + int dlm_recover_locks_wait(struct dlm_ls *ls, uint64_t seq); 21 + int dlm_recover_done_wait(struct dlm_ls *ls, uint64_t seq); 22 + int dlm_recover_masters(struct dlm_ls *ls, uint64_t seq); 23 23 int dlm_recover_master_reply(struct dlm_ls *ls, struct dlm_rcom *rc); 24 - int dlm_recover_locks(struct dlm_ls *ls); 24 + int dlm_recover_locks(struct dlm_ls *ls, uint64_t seq); 25 25 void dlm_recovered_lock(struct dlm_rsb *r); 26 26 int dlm_create_root_list(struct dlm_ls *ls); 27 27 void dlm_release_root_list(struct dlm_ls *ls);
+8 -8
fs/dlm/recoverd.c
··· 90 90 91 91 dlm_set_recover_status(ls, DLM_RS_NODES); 92 92 93 - error = dlm_recover_members_wait(ls); 93 + error = dlm_recover_members_wait(ls, rv->seq); 94 94 if (error) { 95 95 log_rinfo(ls, "dlm_recover_members_wait error %d", error); 96 96 goto fail; ··· 103 103 * nodes their master rsb names that hash to us. 104 104 */ 105 105 106 - error = dlm_recover_directory(ls); 106 + error = dlm_recover_directory(ls, rv->seq); 107 107 if (error) { 108 108 log_rinfo(ls, "dlm_recover_directory error %d", error); 109 109 goto fail; ··· 111 111 112 112 dlm_set_recover_status(ls, DLM_RS_DIR); 113 113 114 - error = dlm_recover_directory_wait(ls); 114 + error = dlm_recover_directory_wait(ls, rv->seq); 115 115 if (error) { 116 116 log_rinfo(ls, "dlm_recover_directory_wait error %d", error); 117 117 goto fail; ··· 145 145 * departed nodes. 146 146 */ 147 147 148 - error = dlm_recover_masters(ls); 148 + error = dlm_recover_masters(ls, rv->seq); 149 149 if (error) { 150 150 log_rinfo(ls, "dlm_recover_masters error %d", error); 151 151 goto fail; ··· 155 155 * Send our locks on remastered rsb's to the new masters. 156 156 */ 157 157 158 - error = dlm_recover_locks(ls); 158 + error = dlm_recover_locks(ls, rv->seq); 159 159 if (error) { 160 160 log_rinfo(ls, "dlm_recover_locks error %d", error); 161 161 goto fail; ··· 163 163 164 164 dlm_set_recover_status(ls, DLM_RS_LOCKS); 165 165 166 - error = dlm_recover_locks_wait(ls); 166 + error = dlm_recover_locks_wait(ls, rv->seq); 167 167 if (error) { 168 168 log_rinfo(ls, "dlm_recover_locks_wait error %d", error); 169 169 goto fail; ··· 187 187 */ 188 188 dlm_set_recover_status(ls, DLM_RS_LOCKS); 189 189 190 - error = dlm_recover_locks_wait(ls); 190 + error = dlm_recover_locks_wait(ls, rv->seq); 191 191 if (error) { 192 192 log_rinfo(ls, "dlm_recover_locks_wait error %d", error); 193 193 goto fail; ··· 206 206 207 207 dlm_set_recover_status(ls, DLM_RS_DONE); 208 208 209 - error = dlm_recover_done_wait(ls); 209 + error = dlm_recover_done_wait(ls, rv->seq); 210 210 if (error) { 211 211 log_rinfo(ls, "dlm_recover_done_wait error %d", error); 212 212 goto fail;