diff options
author | Dave Jones <davej@redhat.com> | 2014-02-17 16:21:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-02-17 16:46:33 -0500 |
commit | 416e2abd925d0f41dc877d1fe01489d79bdecf4c (patch) | |
tree | 894d17ffaca81f8dc5236fff0d2be835a20580f5 /fs/reiserfs | |
parent | 60f76eab19e3903e810bdc3ec846c158efcd2e21 (diff) |
reiserfs: fix utterly brain-damaged indentation.
This has been this way for years, and every time I stumble across it I
lose my lunch. After coming across it for the nth time in the Coverity
results, I had to overcome the bystander effect and do something about
it.
This ignores the 79 column limit in favor of making it look like C
instead of gibberish.
The correct thing to do here would be to lose some of the indentation by
breaking this function up into several smaller ones. I might do that at
some point if I have the stomach to look at this again.
(Also some of those overlong ternary operations would likely be more
readable as regular if's)
Signed-off-by: Dave Jones <davej@fedoraproject.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/reiserfs')
-rw-r--r-- | fs/reiserfs/do_balan.c | 895 |
1 files changed, 195 insertions, 700 deletions
diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c index 2b7882b508db..9a3c68cf6026 100644 --- a/fs/reiserfs/do_balan.c +++ b/fs/reiserfs/do_balan.c | |||
@@ -324,23 +324,17 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
324 | switch (flag) { | 324 | switch (flag) { |
325 | case M_INSERT: /* insert item into L[0] */ | 325 | case M_INSERT: /* insert item into L[0] */ |
326 | 326 | ||
327 | if (item_pos == tb->lnum[0] - 1 | 327 | if (item_pos == tb->lnum[0] - 1 && tb->lbytes != -1) { |
328 | && tb->lbytes != -1) { | ||
329 | /* part of new item falls into L[0] */ | 328 | /* part of new item falls into L[0] */ |
330 | int new_item_len; | 329 | int new_item_len; |
331 | int version; | 330 | int version; |
332 | 331 | ||
333 | ret_val = | 332 | ret_val = leaf_shift_left(tb, tb->lnum[0] - 1, -1); |
334 | leaf_shift_left(tb, tb->lnum[0] - 1, | ||
335 | -1); | ||
336 | 333 | ||
337 | /* Calculate item length to insert to S[0] */ | 334 | /* Calculate item length to insert to S[0] */ |
338 | new_item_len = | 335 | new_item_len = ih_item_len(ih) - tb->lbytes; |
339 | ih_item_len(ih) - tb->lbytes; | ||
340 | /* Calculate and check item length to insert to L[0] */ | 336 | /* Calculate and check item length to insert to L[0] */ |
341 | put_ih_item_len(ih, | 337 | put_ih_item_len(ih, ih_item_len(ih) - new_item_len); |
342 | ih_item_len(ih) - | ||
343 | new_item_len); | ||
344 | 338 | ||
345 | RFALSE(ih_item_len(ih) <= 0, | 339 | RFALSE(ih_item_len(ih) <= 0, |
346 | "PAP-12080: there is nothing to insert into L[0]: ih_item_len=%d", | 340 | "PAP-12080: there is nothing to insert into L[0]: ih_item_len=%d", |
@@ -349,30 +343,18 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
349 | /* Insert new item into L[0] */ | 343 | /* Insert new item into L[0] */ |
350 | buffer_info_init_left(tb, &bi); | 344 | buffer_info_init_left(tb, &bi); |
351 | leaf_insert_into_buf(&bi, | 345 | leaf_insert_into_buf(&bi, |
352 | n + item_pos - | 346 | n + item_pos - ret_val, ih, body, |
353 | ret_val, ih, body, | 347 | zeros_num > ih_item_len(ih) ? ih_item_len(ih) : zeros_num); |
354 | zeros_num > | ||
355 | ih_item_len(ih) ? | ||
356 | ih_item_len(ih) : | ||
357 | zeros_num); | ||
358 | 348 | ||
359 | version = ih_version(ih); | 349 | version = ih_version(ih); |
360 | 350 | ||
361 | /* Calculate key component, item length and body to insert into S[0] */ | 351 | /* Calculate key component, item length and body to insert into S[0] */ |
362 | set_le_ih_k_offset(ih, | 352 | set_le_ih_k_offset(ih, le_ih_k_offset(ih) + |
363 | le_ih_k_offset(ih) + | 353 | (tb-> lbytes << (is_indirect_le_ih(ih) ? tb->tb_sb-> s_blocksize_bits - UNFM_P_SHIFT : 0))); |
364 | (tb-> | ||
365 | lbytes << | ||
366 | (is_indirect_le_ih | ||
367 | (ih) ? tb->tb_sb-> | ||
368 | s_blocksize_bits - | ||
369 | UNFM_P_SHIFT : | ||
370 | 0))); | ||
371 | 354 | ||
372 | put_ih_item_len(ih, new_item_len); | 355 | put_ih_item_len(ih, new_item_len); |
373 | if (tb->lbytes > zeros_num) { | 356 | if (tb->lbytes > zeros_num) { |
374 | body += | 357 | body += (tb->lbytes - zeros_num); |
375 | (tb->lbytes - zeros_num); | ||
376 | zeros_num = 0; | 358 | zeros_num = 0; |
377 | } else | 359 | } else |
378 | zeros_num -= tb->lbytes; | 360 | zeros_num -= tb->lbytes; |
@@ -383,15 +365,10 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
383 | } else { | 365 | } else { |
384 | /* new item in whole falls into L[0] */ | 366 | /* new item in whole falls into L[0] */ |
385 | /* Shift lnum[0]-1 items to L[0] */ | 367 | /* Shift lnum[0]-1 items to L[0] */ |
386 | ret_val = | 368 | ret_val = leaf_shift_left(tb, tb->lnum[0] - 1, tb->lbytes); |
387 | leaf_shift_left(tb, tb->lnum[0] - 1, | ||
388 | tb->lbytes); | ||
389 | /* Insert new item into L[0] */ | 369 | /* Insert new item into L[0] */ |
390 | buffer_info_init_left(tb, &bi); | 370 | buffer_info_init_left(tb, &bi); |
391 | leaf_insert_into_buf(&bi, | 371 | leaf_insert_into_buf(&bi, n + item_pos - ret_val, ih, body, zeros_num); |
392 | n + item_pos - | ||
393 | ret_val, ih, body, | ||
394 | zeros_num); | ||
395 | tb->insert_size[0] = 0; | 372 | tb->insert_size[0] = 0; |
396 | zeros_num = 0; | 373 | zeros_num = 0; |
397 | } | 374 | } |
@@ -399,264 +376,117 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
399 | 376 | ||
400 | case M_PASTE: /* append item in L[0] */ | 377 | case M_PASTE: /* append item in L[0] */ |
401 | 378 | ||
402 | if (item_pos == tb->lnum[0] - 1 | 379 | if (item_pos == tb->lnum[0] - 1 && tb->lbytes != -1) { |
403 | && tb->lbytes != -1) { | ||
404 | /* we must shift the part of the appended item */ | 380 | /* we must shift the part of the appended item */ |
405 | if (is_direntry_le_ih | 381 | if (is_direntry_le_ih(B_N_PITEM_HEAD(tbS0, item_pos))) { |
406 | (B_N_PITEM_HEAD(tbS0, item_pos))) { | ||
407 | 382 | ||
408 | RFALSE(zeros_num, | 383 | RFALSE(zeros_num, |
409 | "PAP-12090: invalid parameter in case of a directory"); | 384 | "PAP-12090: invalid parameter in case of a directory"); |
410 | /* directory item */ | 385 | /* directory item */ |
411 | if (tb->lbytes > pos_in_item) { | 386 | if (tb->lbytes > pos_in_item) { |
412 | /* new directory entry falls into L[0] */ | 387 | /* new directory entry falls into L[0] */ |
413 | struct item_head | 388 | struct item_head *pasted; |
414 | *pasted; | 389 | int l_pos_in_item = pos_in_item; |
415 | int l_pos_in_item = | ||
416 | pos_in_item; | ||
417 | 390 | ||
418 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 entries from given directory item */ | 391 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 entries from given directory item */ |
419 | ret_val = | 392 | ret_val = leaf_shift_left(tb, tb->lnum[0], tb->lbytes-1); |
420 | leaf_shift_left(tb, | 393 | if (ret_val && !item_pos) { |
421 | tb-> | 394 | pasted = B_N_PITEM_HEAD(tb->L[0], B_NR_ITEMS(tb->L[0]) - 1); |
422 | lnum | 395 | l_pos_in_item += I_ENTRY_COUNT(pasted) - (tb->lbytes -1); |
423 | [0], | ||
424 | tb-> | ||
425 | lbytes | ||
426 | - | ||
427 | 1); | ||
428 | if (ret_val | ||
429 | && !item_pos) { | ||
430 | pasted = | ||
431 | B_N_PITEM_HEAD | ||
432 | (tb->L[0], | ||
433 | B_NR_ITEMS | ||
434 | (tb-> | ||
435 | L[0]) - | ||
436 | 1); | ||
437 | l_pos_in_item += | ||
438 | I_ENTRY_COUNT | ||
439 | (pasted) - | ||
440 | (tb-> | ||
441 | lbytes - | ||
442 | 1); | ||
443 | } | 396 | } |
444 | 397 | ||
445 | /* Append given directory entry to directory item */ | 398 | /* Append given directory entry to directory item */ |
446 | buffer_info_init_left(tb, &bi); | 399 | buffer_info_init_left(tb, &bi); |
447 | leaf_paste_in_buffer | 400 | leaf_paste_in_buffer(&bi, n + item_pos - ret_val, l_pos_in_item, tb->insert_size[0], body, zeros_num); |
448 | (&bi, | ||
449 | n + item_pos - | ||
450 | ret_val, | ||
451 | l_pos_in_item, | ||
452 | tb->insert_size[0], | ||
453 | body, zeros_num); | ||
454 | 401 | ||
455 | /* previous string prepared space for pasting new entry, following string pastes this entry */ | 402 | /* previous string prepared space for pasting new entry, following string pastes this entry */ |
456 | 403 | ||
457 | /* when we have merge directory item, pos_in_item has been changed too */ | 404 | /* when we have merge directory item, pos_in_item has been changed too */ |
458 | 405 | ||
459 | /* paste new directory entry. 1 is entry number */ | 406 | /* paste new directory entry. 1 is entry number */ |
460 | leaf_paste_entries(&bi, | 407 | leaf_paste_entries(&bi, n + item_pos - ret_val, l_pos_in_item, |
461 | n + | 408 | 1, (struct reiserfs_de_head *) body, |
462 | item_pos | 409 | body + DEH_SIZE, tb->insert_size[0]); |
463 | - | ||
464 | ret_val, | ||
465 | l_pos_in_item, | ||
466 | 1, | ||
467 | (struct | ||
468 | reiserfs_de_head | ||
469 | *) | ||
470 | body, | ||
471 | body | ||
472 | + | ||
473 | DEH_SIZE, | ||
474 | tb-> | ||
475 | insert_size | ||
476 | [0] | ||
477 | ); | ||
478 | tb->insert_size[0] = 0; | 410 | tb->insert_size[0] = 0; |
479 | } else { | 411 | } else { |
480 | /* new directory item doesn't fall into L[0] */ | 412 | /* new directory item doesn't fall into L[0] */ |
481 | /* Shift lnum[0]-1 items in whole. Shift lbytes directory entries from directory item number lnum[0] */ | 413 | /* Shift lnum[0]-1 items in whole. Shift lbytes directory entries from directory item number lnum[0] */ |
482 | leaf_shift_left(tb, | 414 | leaf_shift_left(tb, tb->lnum[0], tb->lbytes); |
483 | tb-> | ||
484 | lnum[0], | ||
485 | tb-> | ||
486 | lbytes); | ||
487 | } | 415 | } |
488 | /* Calculate new position to append in item body */ | 416 | /* Calculate new position to append in item body */ |
489 | pos_in_item -= tb->lbytes; | 417 | pos_in_item -= tb->lbytes; |
490 | } else { | 418 | } else { |
491 | /* regular object */ | 419 | /* regular object */ |
492 | RFALSE(tb->lbytes <= 0, | 420 | RFALSE(tb->lbytes <= 0, "PAP-12095: there is nothing to shift to L[0]. lbytes=%d", tb->lbytes); |
493 | "PAP-12095: there is nothing to shift to L[0]. lbytes=%d", | 421 | RFALSE(pos_in_item != ih_item_len(B_N_PITEM_HEAD(tbS0, item_pos)), |
494 | tb->lbytes); | ||
495 | RFALSE(pos_in_item != | ||
496 | ih_item_len | ||
497 | (B_N_PITEM_HEAD | ||
498 | (tbS0, item_pos)), | ||
499 | "PAP-12100: incorrect position to paste: item_len=%d, pos_in_item=%d", | 422 | "PAP-12100: incorrect position to paste: item_len=%d, pos_in_item=%d", |
500 | ih_item_len | 423 | ih_item_len(B_N_PITEM_HEAD(tbS0, item_pos)),pos_in_item); |
501 | (B_N_PITEM_HEAD | ||
502 | (tbS0, item_pos)), | ||
503 | pos_in_item); | ||
504 | 424 | ||
505 | if (tb->lbytes >= pos_in_item) { | 425 | if (tb->lbytes >= pos_in_item) { |
506 | /* appended item will be in L[0] in whole */ | 426 | /* appended item will be in L[0] in whole */ |
507 | int l_n; | 427 | int l_n; |
508 | 428 | ||
509 | /* this bytes number must be appended to the last item of L[h] */ | 429 | /* this bytes number must be appended to the last item of L[h] */ |
510 | l_n = | 430 | l_n = tb->lbytes - pos_in_item; |
511 | tb->lbytes - | ||
512 | pos_in_item; | ||
513 | 431 | ||
514 | /* Calculate new insert_size[0] */ | 432 | /* Calculate new insert_size[0] */ |
515 | tb->insert_size[0] -= | 433 | tb->insert_size[0] -= l_n; |
516 | l_n; | ||
517 | 434 | ||
518 | RFALSE(tb-> | 435 | RFALSE(tb->insert_size[0] <= 0, |
519 | insert_size[0] <= | ||
520 | 0, | ||
521 | "PAP-12105: there is nothing to paste into L[0]. insert_size=%d", | 436 | "PAP-12105: there is nothing to paste into L[0]. insert_size=%d", |
522 | tb-> | 437 | tb->insert_size[0]); |
523 | insert_size[0]); | 438 | ret_val = leaf_shift_left(tb, tb->lnum[0], ih_item_len |
524 | ret_val = | 439 | (B_N_PITEM_HEAD(tbS0, item_pos))); |
525 | leaf_shift_left(tb, | ||
526 | tb-> | ||
527 | lnum | ||
528 | [0], | ||
529 | ih_item_len | ||
530 | (B_N_PITEM_HEAD | ||
531 | (tbS0, | ||
532 | item_pos))); | ||
533 | /* Append to body of item in L[0] */ | 440 | /* Append to body of item in L[0] */ |
534 | buffer_info_init_left(tb, &bi); | 441 | buffer_info_init_left(tb, &bi); |
535 | leaf_paste_in_buffer | 442 | leaf_paste_in_buffer |
536 | (&bi, | 443 | (&bi, n + item_pos - ret_val, ih_item_len |
537 | n + item_pos - | 444 | (B_N_PITEM_HEAD(tb->L[0], n + item_pos - ret_val)), |
538 | ret_val, | 445 | l_n, body, |
539 | ih_item_len | 446 | zeros_num > l_n ? l_n : zeros_num); |
540 | (B_N_PITEM_HEAD | ||
541 | (tb->L[0], | ||
542 | n + item_pos - | ||
543 | ret_val)), l_n, | ||
544 | body, | ||
545 | zeros_num > | ||
546 | l_n ? l_n : | ||
547 | zeros_num); | ||
548 | /* 0-th item in S0 can be only of DIRECT type when l_n != 0 */ | 447 | /* 0-th item in S0 can be only of DIRECT type when l_n != 0 */ |
549 | { | 448 | { |
550 | int version; | 449 | int version; |
551 | int temp_l = | 450 | int temp_l = l_n; |
552 | l_n; | 451 | |
553 | 452 | RFALSE(ih_item_len(B_N_PITEM_HEAD(tbS0, 0)), | |
554 | RFALSE | ||
555 | (ih_item_len | ||
556 | (B_N_PITEM_HEAD | ||
557 | (tbS0, | ||
558 | 0)), | ||
559 | "PAP-12106: item length must be 0"); | 453 | "PAP-12106: item length must be 0"); |
560 | RFALSE | 454 | RFALSE(comp_short_le_keys(B_N_PKEY(tbS0, 0), B_N_PKEY |
561 | (comp_short_le_keys | 455 | (tb->L[0], n + item_pos - ret_val)), |
562 | (B_N_PKEY | ||
563 | (tbS0, 0), | ||
564 | B_N_PKEY | ||
565 | (tb->L[0], | ||
566 | n + | ||
567 | item_pos | ||
568 | - | ||
569 | ret_val)), | ||
570 | "PAP-12107: items must be of the same file"); | 456 | "PAP-12107: items must be of the same file"); |
571 | if (is_indirect_le_ih(B_N_PITEM_HEAD(tb->L[0], n + item_pos - ret_val))) { | 457 | if (is_indirect_le_ih(B_N_PITEM_HEAD(tb->L[0], n + item_pos - ret_val))) { |
572 | temp_l = | 458 | temp_l = l_n << (tb->tb_sb-> s_blocksize_bits - UNFM_P_SHIFT); |
573 | l_n | ||
574 | << | ||
575 | (tb-> | ||
576 | tb_sb-> | ||
577 | s_blocksize_bits | ||
578 | - | ||
579 | UNFM_P_SHIFT); | ||
580 | } | 459 | } |
581 | /* update key of first item in S0 */ | 460 | /* update key of first item in S0 */ |
582 | version = | 461 | version = ih_version(B_N_PITEM_HEAD(tbS0, 0)); |
583 | ih_version | 462 | set_le_key_k_offset(version, B_N_PKEY(tbS0, 0), |
584 | (B_N_PITEM_HEAD | 463 | le_key_k_offset(version,B_N_PKEY(tbS0, 0)) + temp_l); |
585 | (tbS0, 0)); | ||
586 | set_le_key_k_offset | ||
587 | (version, | ||
588 | B_N_PKEY | ||
589 | (tbS0, 0), | ||
590 | le_key_k_offset | ||
591 | (version, | ||
592 | B_N_PKEY | ||
593 | (tbS0, | ||
594 | 0)) + | ||
595 | temp_l); | ||
596 | /* update left delimiting key */ | 464 | /* update left delimiting key */ |
597 | set_le_key_k_offset | 465 | set_le_key_k_offset(version, B_N_PDELIM_KEY(tb->CFL[0], tb->lkey[0]), |
598 | (version, | 466 | le_key_k_offset(version, B_N_PDELIM_KEY(tb->CFL[0], tb->lkey[0])) + temp_l); |
599 | B_N_PDELIM_KEY | ||
600 | (tb-> | ||
601 | CFL[0], | ||
602 | tb-> | ||
603 | lkey[0]), | ||
604 | le_key_k_offset | ||
605 | (version, | ||
606 | B_N_PDELIM_KEY | ||
607 | (tb-> | ||
608 | CFL[0], | ||
609 | tb-> | ||
610 | lkey[0])) | ||
611 | + temp_l); | ||
612 | } | 467 | } |
613 | 468 | ||
614 | /* Calculate new body, position in item and insert_size[0] */ | 469 | /* Calculate new body, position in item and insert_size[0] */ |
615 | if (l_n > zeros_num) { | 470 | if (l_n > zeros_num) { |
616 | body += | 471 | body += (l_n - zeros_num); |
617 | (l_n - | ||
618 | zeros_num); | ||
619 | zeros_num = 0; | 472 | zeros_num = 0; |
620 | } else | 473 | } else |
621 | zeros_num -= | 474 | zeros_num -= l_n; |
622 | l_n; | ||
623 | pos_in_item = 0; | 475 | pos_in_item = 0; |
624 | 476 | ||
625 | RFALSE | 477 | RFALSE(comp_short_le_keys(B_N_PKEY(tbS0, 0), B_N_PKEY(tb->L[0], B_NR_ITEMS(tb->L[0]) - 1)) |
626 | (comp_short_le_keys | 478 | || !op_is_left_mergeable(B_N_PKEY(tbS0, 0), tbS0->b_size) |
627 | (B_N_PKEY(tbS0, 0), | 479 | || !op_is_left_mergeable(B_N_PDELIM_KEY(tb->CFL[0], tb->lkey[0]), tbS0->b_size), |
628 | B_N_PKEY(tb->L[0], | ||
629 | B_NR_ITEMS | ||
630 | (tb-> | ||
631 | L[0]) - | ||
632 | 1)) | ||
633 | || | ||
634 | !op_is_left_mergeable | ||
635 | (B_N_PKEY(tbS0, 0), | ||
636 | tbS0->b_size) | ||
637 | || | ||
638 | !op_is_left_mergeable | ||
639 | (B_N_PDELIM_KEY | ||
640 | (tb->CFL[0], | ||
641 | tb->lkey[0]), | ||
642 | tbS0->b_size), | ||
643 | "PAP-12120: item must be merge-able with left neighboring item"); | 480 | "PAP-12120: item must be merge-able with left neighboring item"); |
644 | } else { /* only part of the appended item will be in L[0] */ | 481 | } else { /* only part of the appended item will be in L[0] */ |
645 | 482 | ||
646 | /* Calculate position in item for append in S[0] */ | 483 | /* Calculate position in item for append in S[0] */ |
647 | pos_in_item -= | 484 | pos_in_item -= tb->lbytes; |
648 | tb->lbytes; | ||
649 | 485 | ||
650 | RFALSE(pos_in_item <= 0, | 486 | RFALSE(pos_in_item <= 0, "PAP-12125: no place for paste. pos_in_item=%d", pos_in_item); |
651 | "PAP-12125: no place for paste. pos_in_item=%d", | ||
652 | pos_in_item); | ||
653 | 487 | ||
654 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 byte from item number lnum[0] */ | 488 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 byte from item number lnum[0] */ |
655 | leaf_shift_left(tb, | 489 | leaf_shift_left(tb, tb->lnum[0], tb->lbytes); |
656 | tb-> | ||
657 | lnum[0], | ||
658 | tb-> | ||
659 | lbytes); | ||
660 | } | 490 | } |
661 | } | 491 | } |
662 | } else { /* appended item will be in L[0] in whole */ | 492 | } else { /* appended item will be in L[0] in whole */ |
@@ -665,52 +495,30 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
665 | 495 | ||
666 | if (!item_pos && op_is_left_mergeable(B_N_PKEY(tbS0, 0), tbS0->b_size)) { /* if we paste into first item of S[0] and it is left mergable */ | 496 | if (!item_pos && op_is_left_mergeable(B_N_PKEY(tbS0, 0), tbS0->b_size)) { /* if we paste into first item of S[0] and it is left mergable */ |
667 | /* then increment pos_in_item by the size of the last item in L[0] */ | 497 | /* then increment pos_in_item by the size of the last item in L[0] */ |
668 | pasted = | 498 | pasted = B_N_PITEM_HEAD(tb->L[0], n - 1); |
669 | B_N_PITEM_HEAD(tb->L[0], | ||
670 | n - 1); | ||
671 | if (is_direntry_le_ih(pasted)) | 499 | if (is_direntry_le_ih(pasted)) |
672 | pos_in_item += | 500 | pos_in_item += ih_entry_count(pasted); |
673 | ih_entry_count | ||
674 | (pasted); | ||
675 | else | 501 | else |
676 | pos_in_item += | 502 | pos_in_item += ih_item_len(pasted); |
677 | ih_item_len(pasted); | ||
678 | } | 503 | } |
679 | 504 | ||
680 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 byte from item number lnum[0] */ | 505 | /* Shift lnum[0] - 1 items in whole. Shift lbytes - 1 byte from item number lnum[0] */ |
681 | ret_val = | 506 | ret_val = leaf_shift_left(tb, tb->lnum[0], tb->lbytes); |
682 | leaf_shift_left(tb, tb->lnum[0], | ||
683 | tb->lbytes); | ||
684 | /* Append to body of item in L[0] */ | 507 | /* Append to body of item in L[0] */ |
685 | buffer_info_init_left(tb, &bi); | 508 | buffer_info_init_left(tb, &bi); |
686 | leaf_paste_in_buffer(&bi, | 509 | leaf_paste_in_buffer(&bi, n + item_pos - ret_val, |
687 | n + item_pos - | ||
688 | ret_val, | ||
689 | pos_in_item, | 510 | pos_in_item, |
690 | tb->insert_size[0], | 511 | tb->insert_size[0], |
691 | body, zeros_num); | 512 | body, zeros_num); |
692 | 513 | ||
693 | /* if appended item is directory, paste entry */ | 514 | /* if appended item is directory, paste entry */ |
694 | pasted = | 515 | pasted = B_N_PITEM_HEAD(tb->L[0], n + item_pos - ret_val); |
695 | B_N_PITEM_HEAD(tb->L[0], | ||
696 | n + item_pos - | ||
697 | ret_val); | ||
698 | if (is_direntry_le_ih(pasted)) | 516 | if (is_direntry_le_ih(pasted)) |
699 | leaf_paste_entries(&bi, | 517 | leaf_paste_entries(&bi, n + item_pos - ret_val, |
700 | n + | 518 | pos_in_item, 1, |
701 | item_pos - | 519 | (struct reiserfs_de_head *) body, |
702 | ret_val, | 520 | body + DEH_SIZE, |
703 | pos_in_item, | 521 | tb->insert_size[0]); |
704 | 1, | ||
705 | (struct | ||
706 | reiserfs_de_head | ||
707 | *)body, | ||
708 | body + | ||
709 | DEH_SIZE, | ||
710 | tb-> | ||
711 | insert_size | ||
712 | [0] | ||
713 | ); | ||
714 | /* if appended item is indirect item, put unformatted node into un list */ | 522 | /* if appended item is indirect item, put unformatted node into un list */ |
715 | if (is_indirect_le_ih(pasted)) | 523 | if (is_indirect_le_ih(pasted)) |
716 | set_ih_free_space(pasted, 0); | 524 | set_ih_free_space(pasted, 0); |
@@ -722,13 +530,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
722 | reiserfs_panic(tb->tb_sb, "PAP-12130", | 530 | reiserfs_panic(tb->tb_sb, "PAP-12130", |
723 | "lnum > 0: unexpected mode: " | 531 | "lnum > 0: unexpected mode: " |
724 | " %s(%d)", | 532 | " %s(%d)", |
725 | (flag == | 533 | (flag == M_DELETE) ? "DELETE" : ((flag == M_CUT) ? "CUT" : "UNKNOWN"), flag); |
726 | M_DELETE) ? "DELETE" : ((flag == | ||
727 | M_CUT) | ||
728 | ? "CUT" | ||
729 | : | ||
730 | "UNKNOWN"), | ||
731 | flag); | ||
732 | } | 534 | } |
733 | } else { | 535 | } else { |
734 | /* new item doesn't fall into L[0] */ | 536 | /* new item doesn't fall into L[0] */ |
@@ -748,14 +550,12 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
748 | case M_INSERT: /* insert item */ | 550 | case M_INSERT: /* insert item */ |
749 | if (n - tb->rnum[0] < item_pos) { /* new item or its part falls to R[0] */ | 551 | if (n - tb->rnum[0] < item_pos) { /* new item or its part falls to R[0] */ |
750 | if (item_pos == n - tb->rnum[0] + 1 && tb->rbytes != -1) { /* part of new item falls into R[0] */ | 552 | if (item_pos == n - tb->rnum[0] + 1 && tb->rbytes != -1) { /* part of new item falls into R[0] */ |
751 | loff_t old_key_comp, old_len, | 553 | loff_t old_key_comp, old_len, r_zeros_number; |
752 | r_zeros_number; | ||
753 | const char *r_body; | 554 | const char *r_body; |
754 | int version; | 555 | int version; |
755 | loff_t offset; | 556 | loff_t offset; |
756 | 557 | ||
757 | leaf_shift_right(tb, tb->rnum[0] - 1, | 558 | leaf_shift_right(tb, tb->rnum[0] - 1, -1); |
758 | -1); | ||
759 | 559 | ||
760 | version = ih_version(ih); | 560 | version = ih_version(ih); |
761 | /* Remember key component and item length */ | 561 | /* Remember key component and item length */ |
@@ -763,29 +563,17 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
763 | old_len = ih_item_len(ih); | 563 | old_len = ih_item_len(ih); |
764 | 564 | ||
765 | /* Calculate key component and item length to insert into R[0] */ | 565 | /* Calculate key component and item length to insert into R[0] */ |
766 | offset = | 566 | offset = le_ih_k_offset(ih) + ((old_len - tb->rbytes) << (is_indirect_le_ih(ih) ? tb->tb_sb->s_blocksize_bits - UNFM_P_SHIFT : 0)); |
767 | le_ih_k_offset(ih) + | ||
768 | ((old_len - | ||
769 | tb-> | ||
770 | rbytes) << (is_indirect_le_ih(ih) | ||
771 | ? tb->tb_sb-> | ||
772 | s_blocksize_bits - | ||
773 | UNFM_P_SHIFT : 0)); | ||
774 | set_le_ih_k_offset(ih, offset); | 567 | set_le_ih_k_offset(ih, offset); |
775 | put_ih_item_len(ih, tb->rbytes); | 568 | put_ih_item_len(ih, tb->rbytes); |
776 | /* Insert part of the item into R[0] */ | 569 | /* Insert part of the item into R[0] */ |
777 | buffer_info_init_right(tb, &bi); | 570 | buffer_info_init_right(tb, &bi); |
778 | if ((old_len - tb->rbytes) > zeros_num) { | 571 | if ((old_len - tb->rbytes) > zeros_num) { |
779 | r_zeros_number = 0; | 572 | r_zeros_number = 0; |
780 | r_body = | 573 | r_body = body + (old_len - tb->rbytes) - zeros_num; |
781 | body + (old_len - | ||
782 | tb->rbytes) - | ||
783 | zeros_num; | ||
784 | } else { | 574 | } else { |
785 | r_body = body; | 575 | r_body = body; |
786 | r_zeros_number = | 576 | r_zeros_number = zeros_num - (old_len - tb->rbytes); |
787 | zeros_num - (old_len - | ||
788 | tb->rbytes); | ||
789 | zeros_num -= r_zeros_number; | 577 | zeros_num -= r_zeros_number; |
790 | } | 578 | } |
791 | 579 | ||
@@ -798,25 +586,18 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
798 | 586 | ||
799 | /* Calculate key component and item length to insert into S[0] */ | 587 | /* Calculate key component and item length to insert into S[0] */ |
800 | set_le_ih_k_offset(ih, old_key_comp); | 588 | set_le_ih_k_offset(ih, old_key_comp); |
801 | put_ih_item_len(ih, | 589 | put_ih_item_len(ih, old_len - tb->rbytes); |
802 | old_len - tb->rbytes); | ||
803 | 590 | ||
804 | tb->insert_size[0] -= tb->rbytes; | 591 | tb->insert_size[0] -= tb->rbytes; |
805 | 592 | ||
806 | } else { /* whole new item falls into R[0] */ | 593 | } else { /* whole new item falls into R[0] */ |
807 | 594 | ||
808 | /* Shift rnum[0]-1 items to R[0] */ | 595 | /* Shift rnum[0]-1 items to R[0] */ |
809 | ret_val = | 596 | ret_val = leaf_shift_right(tb, tb->rnum[0] - 1, tb->rbytes); |
810 | leaf_shift_right(tb, | ||
811 | tb->rnum[0] - 1, | ||
812 | tb->rbytes); | ||
813 | /* Insert new item into R[0] */ | 597 | /* Insert new item into R[0] */ |
814 | buffer_info_init_right(tb, &bi); | 598 | buffer_info_init_right(tb, &bi); |
815 | leaf_insert_into_buf(&bi, | 599 | leaf_insert_into_buf(&bi, item_pos - n + tb->rnum[0] - 1, |
816 | item_pos - n + | 600 | ih, body, zeros_num); |
817 | tb->rnum[0] - 1, | ||
818 | ih, body, | ||
819 | zeros_num); | ||
820 | 601 | ||
821 | if (item_pos - n + tb->rnum[0] - 1 == 0) { | 602 | if (item_pos - n + tb->rnum[0] - 1 == 0) { |
822 | replace_key(tb, tb->CFR[0], | 603 | replace_key(tb, tb->CFR[0], |
@@ -841,200 +622,97 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
841 | 622 | ||
842 | RFALSE(zeros_num, | 623 | RFALSE(zeros_num, |
843 | "PAP-12145: invalid parameter in case of a directory"); | 624 | "PAP-12145: invalid parameter in case of a directory"); |
844 | entry_count = | 625 | entry_count = I_ENTRY_COUNT(B_N_PITEM_HEAD |
845 | I_ENTRY_COUNT(B_N_PITEM_HEAD | 626 | (tbS0, item_pos)); |
846 | (tbS0, | ||
847 | item_pos)); | ||
848 | if (entry_count - tb->rbytes < | 627 | if (entry_count - tb->rbytes < |
849 | pos_in_item) | 628 | pos_in_item) |
850 | /* new directory entry falls into R[0] */ | 629 | /* new directory entry falls into R[0] */ |
851 | { | 630 | { |
852 | int paste_entry_position; | 631 | int paste_entry_position; |
853 | 632 | ||
854 | RFALSE(tb->rbytes - 1 >= | 633 | RFALSE(tb->rbytes - 1 >= entry_count || !tb-> insert_size[0], |
855 | entry_count | ||
856 | || !tb-> | ||
857 | insert_size[0], | ||
858 | "PAP-12150: no enough of entries to shift to R[0]: rbytes=%d, entry_count=%d", | 634 | "PAP-12150: no enough of entries to shift to R[0]: rbytes=%d, entry_count=%d", |
859 | tb->rbytes, | 635 | tb->rbytes, entry_count); |
860 | entry_count); | ||
861 | /* Shift rnum[0]-1 items in whole. Shift rbytes-1 directory entries from directory item number rnum[0] */ | 636 | /* Shift rnum[0]-1 items in whole. Shift rbytes-1 directory entries from directory item number rnum[0] */ |
862 | leaf_shift_right(tb, | 637 | leaf_shift_right(tb, tb->rnum[0], tb->rbytes - 1); |
863 | tb-> | ||
864 | rnum | ||
865 | [0], | ||
866 | tb-> | ||
867 | rbytes | ||
868 | - 1); | ||
869 | /* Paste given directory entry to directory item */ | 638 | /* Paste given directory entry to directory item */ |
870 | paste_entry_position = | 639 | paste_entry_position = pos_in_item - entry_count + tb->rbytes - 1; |
871 | pos_in_item - | ||
872 | entry_count + | ||
873 | tb->rbytes - 1; | ||
874 | buffer_info_init_right(tb, &bi); | 640 | buffer_info_init_right(tb, &bi); |
875 | leaf_paste_in_buffer | 641 | leaf_paste_in_buffer(&bi, 0, paste_entry_position, tb->insert_size[0], body, zeros_num); |
876 | (&bi, 0, | ||
877 | paste_entry_position, | ||
878 | tb->insert_size[0], | ||
879 | body, zeros_num); | ||
880 | /* paste entry */ | 642 | /* paste entry */ |
881 | leaf_paste_entries(&bi, | 643 | leaf_paste_entries(&bi, 0, paste_entry_position, 1, |
882 | 0, | 644 | (struct reiserfs_de_head *) body, |
883 | paste_entry_position, | 645 | body + DEH_SIZE, tb->insert_size[0]); |
884 | 1, | 646 | |
885 | (struct | 647 | if (paste_entry_position == 0) { |
886 | reiserfs_de_head | ||
887 | *) | ||
888 | body, | ||
889 | body | ||
890 | + | ||
891 | DEH_SIZE, | ||
892 | tb-> | ||
893 | insert_size | ||
894 | [0] | ||
895 | ); | ||
896 | |||
897 | if (paste_entry_position | ||
898 | == 0) { | ||
899 | /* change delimiting keys */ | 648 | /* change delimiting keys */ |
900 | replace_key(tb, | 649 | replace_key(tb, tb->CFR[0], tb->rkey[0], tb->R[0],0); |
901 | tb-> | ||
902 | CFR | ||
903 | [0], | ||
904 | tb-> | ||
905 | rkey | ||
906 | [0], | ||
907 | tb-> | ||
908 | R | ||
909 | [0], | ||
910 | 0); | ||
911 | } | 650 | } |
912 | 651 | ||
913 | tb->insert_size[0] = 0; | 652 | tb->insert_size[0] = 0; |
914 | pos_in_item++; | 653 | pos_in_item++; |
915 | } else { /* new directory entry doesn't fall into R[0] */ | 654 | } else { /* new directory entry doesn't fall into R[0] */ |
916 | 655 | ||
917 | leaf_shift_right(tb, | 656 | leaf_shift_right(tb, tb->rnum[0], tb->rbytes); |
918 | tb-> | ||
919 | rnum | ||
920 | [0], | ||
921 | tb-> | ||
922 | rbytes); | ||
923 | } | 657 | } |
924 | } else { /* regular object */ | 658 | } else { /* regular object */ |
925 | 659 | ||
926 | int n_shift, n_rem, | 660 | int n_shift, n_rem, r_zeros_number; |
927 | r_zeros_number; | ||
928 | const char *r_body; | 661 | const char *r_body; |
929 | 662 | ||
930 | /* Calculate number of bytes which must be shifted from appended item */ | 663 | /* Calculate number of bytes which must be shifted from appended item */ |
931 | if ((n_shift = | 664 | if ((n_shift = tb->rbytes - tb->insert_size[0]) < 0) |
932 | tb->rbytes - | ||
933 | tb->insert_size[0]) < 0) | ||
934 | n_shift = 0; | 665 | n_shift = 0; |
935 | 666 | ||
936 | RFALSE(pos_in_item != | 667 | RFALSE(pos_in_item != ih_item_len |
937 | ih_item_len | 668 | (B_N_PITEM_HEAD(tbS0, item_pos)), |
938 | (B_N_PITEM_HEAD | ||
939 | (tbS0, item_pos)), | ||
940 | "PAP-12155: invalid position to paste. ih_item_len=%d, pos_in_item=%d", | 669 | "PAP-12155: invalid position to paste. ih_item_len=%d, pos_in_item=%d", |
941 | pos_in_item, | 670 | pos_in_item, ih_item_len |
942 | ih_item_len | 671 | (B_N_PITEM_HEAD(tbS0, item_pos))); |
943 | (B_N_PITEM_HEAD | 672 | |
944 | (tbS0, item_pos))); | 673 | leaf_shift_right(tb, tb->rnum[0], n_shift); |
945 | |||
946 | leaf_shift_right(tb, | ||
947 | tb->rnum[0], | ||
948 | n_shift); | ||
949 | /* Calculate number of bytes which must remain in body after appending to R[0] */ | 674 | /* Calculate number of bytes which must remain in body after appending to R[0] */ |
950 | if ((n_rem = | 675 | if ((n_rem = tb->insert_size[0] - tb->rbytes) < 0) |
951 | tb->insert_size[0] - | ||
952 | tb->rbytes) < 0) | ||
953 | n_rem = 0; | 676 | n_rem = 0; |
954 | 677 | ||
955 | { | 678 | { |
956 | int version; | 679 | int version; |
957 | unsigned long temp_rem = | 680 | unsigned long temp_rem = n_rem; |
958 | n_rem; | 681 | |
959 | 682 | version = ih_version(B_N_PITEM_HEAD(tb->R[0], 0)); | |
960 | version = | 683 | if (is_indirect_le_key(version, B_N_PKEY(tb->R[0], 0))) { |
961 | ih_version | 684 | temp_rem = n_rem << (tb->tb_sb->s_blocksize_bits - UNFM_P_SHIFT); |
962 | (B_N_PITEM_HEAD | ||
963 | (tb->R[0], 0)); | ||
964 | if (is_indirect_le_key | ||
965 | (version, | ||
966 | B_N_PKEY(tb->R[0], | ||
967 | 0))) { | ||
968 | temp_rem = | ||
969 | n_rem << | ||
970 | (tb->tb_sb-> | ||
971 | s_blocksize_bits | ||
972 | - | ||
973 | UNFM_P_SHIFT); | ||
974 | } | 685 | } |
975 | set_le_key_k_offset | 686 | set_le_key_k_offset(version, B_N_PKEY(tb->R[0], 0), |
976 | (version, | 687 | le_key_k_offset(version, B_N_PKEY(tb->R[0], 0)) + temp_rem); |
977 | B_N_PKEY(tb->R[0], | 688 | set_le_key_k_offset(version, B_N_PDELIM_KEY(tb->CFR[0], tb->rkey[0]), |
978 | 0), | 689 | le_key_k_offset(version, B_N_PDELIM_KEY(tb->CFR[0], tb->rkey[0])) + temp_rem); |
979 | le_key_k_offset | ||
980 | (version, | ||
981 | B_N_PKEY(tb->R[0], | ||
982 | 0)) + | ||
983 | temp_rem); | ||
984 | set_le_key_k_offset | ||
985 | (version, | ||
986 | B_N_PDELIM_KEY(tb-> | ||
987 | CFR | ||
988 | [0], | ||
989 | tb-> | ||
990 | rkey | ||
991 | [0]), | ||
992 | le_key_k_offset | ||
993 | (version, | ||
994 | B_N_PDELIM_KEY | ||
995 | (tb->CFR[0], | ||
996 | tb->rkey[0])) + | ||
997 | temp_rem); | ||
998 | } | 690 | } |
999 | /* k_offset (B_N_PKEY(tb->R[0],0)) += n_rem; | 691 | /* k_offset (B_N_PKEY(tb->R[0],0)) += n_rem; |
1000 | k_offset (B_N_PDELIM_KEY(tb->CFR[0],tb->rkey[0])) += n_rem;*/ | 692 | k_offset (B_N_PDELIM_KEY(tb->CFR[0],tb->rkey[0])) += n_rem;*/ |
1001 | do_balance_mark_internal_dirty | 693 | do_balance_mark_internal_dirty(tb, tb->CFR[0], 0); |
1002 | (tb, tb->CFR[0], 0); | ||
1003 | 694 | ||
1004 | /* Append part of body into R[0] */ | 695 | /* Append part of body into R[0] */ |
1005 | buffer_info_init_right(tb, &bi); | 696 | buffer_info_init_right(tb, &bi); |
1006 | if (n_rem > zeros_num) { | 697 | if (n_rem > zeros_num) { |
1007 | r_zeros_number = 0; | 698 | r_zeros_number = 0; |
1008 | r_body = | 699 | r_body = body + n_rem - zeros_num; |
1009 | body + n_rem - | ||
1010 | zeros_num; | ||
1011 | } else { | 700 | } else { |
1012 | r_body = body; | 701 | r_body = body; |
1013 | r_zeros_number = | 702 | r_zeros_number = zeros_num - n_rem; |
1014 | zeros_num - n_rem; | 703 | zeros_num -= r_zeros_number; |
1015 | zeros_num -= | ||
1016 | r_zeros_number; | ||
1017 | } | 704 | } |
1018 | 705 | ||
1019 | leaf_paste_in_buffer(&bi, 0, | 706 | leaf_paste_in_buffer(&bi, 0, n_shift, |
1020 | n_shift, | 707 | tb->insert_size[0] - n_rem, |
1021 | tb-> | 708 | r_body, r_zeros_number); |
1022 | insert_size | 709 | |
1023 | [0] - | 710 | if (is_indirect_le_ih(B_N_PITEM_HEAD(tb->R[0], 0))) { |
1024 | n_rem, | ||
1025 | r_body, | ||
1026 | r_zeros_number); | ||
1027 | |||
1028 | if (is_indirect_le_ih | ||
1029 | (B_N_PITEM_HEAD | ||
1030 | (tb->R[0], 0))) { | ||
1031 | #if 0 | 711 | #if 0 |
1032 | RFALSE(n_rem, | 712 | RFALSE(n_rem, |
1033 | "PAP-12160: paste more than one unformatted node pointer"); | 713 | "PAP-12160: paste more than one unformatted node pointer"); |
1034 | #endif | 714 | #endif |
1035 | set_ih_free_space | 715 | set_ih_free_space(B_N_PITEM_HEAD(tb->R[0], 0), 0); |
1036 | (B_N_PITEM_HEAD | ||
1037 | (tb->R[0], 0), 0); | ||
1038 | } | 716 | } |
1039 | tb->insert_size[0] = n_rem; | 717 | tb->insert_size[0] = n_rem; |
1040 | if (!n_rem) | 718 | if (!n_rem) |
@@ -1044,58 +722,28 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1044 | 722 | ||
1045 | struct item_head *pasted; | 723 | struct item_head *pasted; |
1046 | 724 | ||
1047 | ret_val = | 725 | ret_val = leaf_shift_right(tb, tb->rnum[0], tb->rbytes); |
1048 | leaf_shift_right(tb, tb->rnum[0], | ||
1049 | tb->rbytes); | ||
1050 | /* append item in R[0] */ | 726 | /* append item in R[0] */ |
1051 | if (pos_in_item >= 0) { | 727 | if (pos_in_item >= 0) { |
1052 | buffer_info_init_right(tb, &bi); | 728 | buffer_info_init_right(tb, &bi); |
1053 | leaf_paste_in_buffer(&bi, | 729 | leaf_paste_in_buffer(&bi, item_pos - n + tb->rnum[0], pos_in_item, |
1054 | item_pos - | 730 | tb->insert_size[0], body, zeros_num); |
1055 | n + | ||
1056 | tb-> | ||
1057 | rnum[0], | ||
1058 | pos_in_item, | ||
1059 | tb-> | ||
1060 | insert_size | ||
1061 | [0], body, | ||
1062 | zeros_num); | ||
1063 | } | 731 | } |
1064 | 732 | ||
1065 | /* paste new entry, if item is directory item */ | 733 | /* paste new entry, if item is directory item */ |
1066 | pasted = | 734 | pasted = B_N_PITEM_HEAD(tb->R[0], item_pos - n + tb->rnum[0]); |
1067 | B_N_PITEM_HEAD(tb->R[0], | 735 | if (is_direntry_le_ih(pasted) && pos_in_item >= 0) { |
1068 | item_pos - n + | 736 | leaf_paste_entries(&bi, item_pos - n + tb->rnum[0], |
1069 | tb->rnum[0]); | 737 | pos_in_item, 1, |
1070 | if (is_direntry_le_ih(pasted) | 738 | (struct reiserfs_de_head *) body, |
1071 | && pos_in_item >= 0) { | 739 | body + DEH_SIZE, tb->insert_size[0]); |
1072 | leaf_paste_entries(&bi, | ||
1073 | item_pos - | ||
1074 | n + | ||
1075 | tb->rnum[0], | ||
1076 | pos_in_item, | ||
1077 | 1, | ||
1078 | (struct | ||
1079 | reiserfs_de_head | ||
1080 | *)body, | ||
1081 | body + | ||
1082 | DEH_SIZE, | ||
1083 | tb-> | ||
1084 | insert_size | ||
1085 | [0] | ||
1086 | ); | ||
1087 | if (!pos_in_item) { | 740 | if (!pos_in_item) { |
1088 | 741 | ||
1089 | RFALSE(item_pos - n + | 742 | RFALSE(item_pos - n + tb->rnum[0], |
1090 | tb->rnum[0], | ||
1091 | "PAP-12165: directory item must be first item of node when pasting is in 0th position"); | 743 | "PAP-12165: directory item must be first item of node when pasting is in 0th position"); |
1092 | 744 | ||
1093 | /* update delimiting keys */ | 745 | /* update delimiting keys */ |
1094 | replace_key(tb, | 746 | replace_key(tb, tb->CFR[0], tb->rkey[0], tb->R[0], 0); |
1095 | tb->CFR[0], | ||
1096 | tb->rkey[0], | ||
1097 | tb->R[0], | ||
1098 | 0); | ||
1099 | } | 747 | } |
1100 | } | 748 | } |
1101 | 749 | ||
@@ -1111,22 +759,16 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1111 | default: /* cases d and t */ | 759 | default: /* cases d and t */ |
1112 | reiserfs_panic(tb->tb_sb, "PAP-12175", | 760 | reiserfs_panic(tb->tb_sb, "PAP-12175", |
1113 | "rnum > 0: unexpected mode: %s(%d)", | 761 | "rnum > 0: unexpected mode: %s(%d)", |
1114 | (flag == | 762 | (flag == M_DELETE) ? "DELETE" : ((flag == M_CUT) ? "CUT" : "UNKNOWN"), flag); |
1115 | M_DELETE) ? "DELETE" : ((flag == | ||
1116 | M_CUT) ? "CUT" | ||
1117 | : "UNKNOWN"), | ||
1118 | flag); | ||
1119 | } | 763 | } |
1120 | 764 | ||
1121 | } | 765 | } |
1122 | 766 | ||
1123 | /* tb->rnum[0] > 0 */ | 767 | /* tb->rnum[0] > 0 */ |
1124 | RFALSE(tb->blknum[0] > 3, | 768 | RFALSE(tb->blknum[0] > 3, |
1125 | "PAP-12180: blknum can not be %d. It must be <= 3", | 769 | "PAP-12180: blknum can not be %d. It must be <= 3", tb->blknum[0]); |
1126 | tb->blknum[0]); | ||
1127 | RFALSE(tb->blknum[0] < 0, | 770 | RFALSE(tb->blknum[0] < 0, |
1128 | "PAP-12185: blknum can not be %d. It must be >= 0", | 771 | "PAP-12185: blknum can not be %d. It must be >= 0", tb->blknum[0]); |
1129 | tb->blknum[0]); | ||
1130 | 772 | ||
1131 | /* if while adding to a node we discover that it is possible to split | 773 | /* if while adding to a node we discover that it is possible to split |
1132 | it in two, and merge the left part into the left neighbor and the | 774 | it in two, and merge the left part into the left neighbor and the |
@@ -1177,8 +819,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1177 | 819 | ||
1178 | if (n - snum[i] < item_pos) { /* new item or it's part falls to first new node S_new[i] */ | 820 | if (n - snum[i] < item_pos) { /* new item or it's part falls to first new node S_new[i] */ |
1179 | if (item_pos == n - snum[i] + 1 && sbytes[i] != -1) { /* part of new item falls into S_new[i] */ | 821 | if (item_pos == n - snum[i] + 1 && sbytes[i] != -1) { /* part of new item falls into S_new[i] */ |
1180 | int old_key_comp, old_len, | 822 | int old_key_comp, old_len, r_zeros_number; |
1181 | r_zeros_number; | ||
1182 | const char *r_body; | 823 | const char *r_body; |
1183 | int version; | 824 | int version; |
1184 | 825 | ||
@@ -1192,15 +833,8 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1192 | old_len = ih_item_len(ih); | 833 | old_len = ih_item_len(ih); |
1193 | 834 | ||
1194 | /* Calculate key component and item length to insert into S_new[i] */ | 835 | /* Calculate key component and item length to insert into S_new[i] */ |
1195 | set_le_ih_k_offset(ih, | 836 | set_le_ih_k_offset(ih, le_ih_k_offset(ih) + |
1196 | le_ih_k_offset(ih) + | 837 | ((old_len - sbytes[i]) << (is_indirect_le_ih(ih) ? tb->tb_sb-> s_blocksize_bits - UNFM_P_SHIFT : 0))); |
1197 | ((old_len - | ||
1198 | sbytes[i]) << | ||
1199 | (is_indirect_le_ih | ||
1200 | (ih) ? tb->tb_sb-> | ||
1201 | s_blocksize_bits - | ||
1202 | UNFM_P_SHIFT : | ||
1203 | 0))); | ||
1204 | 838 | ||
1205 | put_ih_item_len(ih, sbytes[i]); | 839 | put_ih_item_len(ih, sbytes[i]); |
1206 | 840 | ||
@@ -1209,39 +843,29 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1209 | 843 | ||
1210 | if ((old_len - sbytes[i]) > zeros_num) { | 844 | if ((old_len - sbytes[i]) > zeros_num) { |
1211 | r_zeros_number = 0; | 845 | r_zeros_number = 0; |
1212 | r_body = | 846 | r_body = body + (old_len - sbytes[i]) - zeros_num; |
1213 | body + (old_len - | ||
1214 | sbytes[i]) - | ||
1215 | zeros_num; | ||
1216 | } else { | 847 | } else { |
1217 | r_body = body; | 848 | r_body = body; |
1218 | r_zeros_number = | 849 | r_zeros_number = zeros_num - (old_len - sbytes[i]); |
1219 | zeros_num - (old_len - | ||
1220 | sbytes[i]); | ||
1221 | zeros_num -= r_zeros_number; | 850 | zeros_num -= r_zeros_number; |
1222 | } | 851 | } |
1223 | 852 | ||
1224 | leaf_insert_into_buf(&bi, 0, ih, r_body, | 853 | leaf_insert_into_buf(&bi, 0, ih, r_body, r_zeros_number); |
1225 | r_zeros_number); | ||
1226 | 854 | ||
1227 | /* Calculate key component and item length to insert into S[i] */ | 855 | /* Calculate key component and item length to insert into S[i] */ |
1228 | set_le_ih_k_offset(ih, old_key_comp); | 856 | set_le_ih_k_offset(ih, old_key_comp); |
1229 | put_ih_item_len(ih, | 857 | put_ih_item_len(ih, old_len - sbytes[i]); |
1230 | old_len - sbytes[i]); | ||
1231 | tb->insert_size[0] -= sbytes[i]; | 858 | tb->insert_size[0] -= sbytes[i]; |
1232 | } else { /* whole new item falls into S_new[i] */ | 859 | } else { /* whole new item falls into S_new[i] */ |
1233 | 860 | ||
1234 | /* Shift snum[0] - 1 items to S_new[i] (sbytes[i] of split item) */ | 861 | /* Shift snum[0] - 1 items to S_new[i] (sbytes[i] of split item) */ |
1235 | leaf_move_items(LEAF_FROM_S_TO_SNEW, tb, | 862 | leaf_move_items(LEAF_FROM_S_TO_SNEW, tb, |
1236 | snum[i] - 1, sbytes[i], | 863 | snum[i] - 1, sbytes[i], S_new[i]); |
1237 | S_new[i]); | ||
1238 | 864 | ||
1239 | /* Insert new item into S_new[i] */ | 865 | /* Insert new item into S_new[i] */ |
1240 | buffer_info_init_bh(tb, &bi, S_new[i]); | 866 | buffer_info_init_bh(tb, &bi, S_new[i]); |
1241 | leaf_insert_into_buf(&bi, | 867 | leaf_insert_into_buf(&bi, item_pos - n + snum[i] - 1, |
1242 | item_pos - n + | 868 | ih, body, zeros_num); |
1243 | snum[i] - 1, ih, | ||
1244 | body, zeros_num); | ||
1245 | 869 | ||
1246 | zeros_num = tb->insert_size[0] = 0; | 870 | zeros_num = tb->insert_size[0] = 0; |
1247 | } | 871 | } |
@@ -1268,150 +892,73 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1268 | 892 | ||
1269 | int entry_count; | 893 | int entry_count; |
1270 | 894 | ||
1271 | entry_count = | 895 | entry_count = ih_entry_count(aux_ih); |
1272 | ih_entry_count(aux_ih); | ||
1273 | 896 | ||
1274 | if (entry_count - sbytes[i] < | 897 | if (entry_count - sbytes[i] < pos_in_item && pos_in_item <= entry_count) { |
1275 | pos_in_item | ||
1276 | && pos_in_item <= | ||
1277 | entry_count) { | ||
1278 | /* new directory entry falls into S_new[i] */ | 898 | /* new directory entry falls into S_new[i] */ |
1279 | 899 | ||
1280 | RFALSE(!tb-> | 900 | RFALSE(!tb->insert_size[0], "PAP-12215: insert_size is already 0"); |
1281 | insert_size[0], | 901 | RFALSE(sbytes[i] - 1 >= entry_count, |
1282 | "PAP-12215: insert_size is already 0"); | ||
1283 | RFALSE(sbytes[i] - 1 >= | ||
1284 | entry_count, | ||
1285 | "PAP-12220: there are no so much entries (%d), only %d", | 902 | "PAP-12220: there are no so much entries (%d), only %d", |
1286 | sbytes[i] - 1, | 903 | sbytes[i] - 1, entry_count); |
1287 | entry_count); | ||
1288 | 904 | ||
1289 | /* Shift snum[i]-1 items in whole. Shift sbytes[i] directory entries from directory item number snum[i] */ | 905 | /* Shift snum[i]-1 items in whole. Shift sbytes[i] directory entries from directory item number snum[i] */ |
1290 | leaf_move_items | 906 | leaf_move_items(LEAF_FROM_S_TO_SNEW, tb, snum[i], sbytes[i] - 1, S_new[i]); |
1291 | (LEAF_FROM_S_TO_SNEW, | ||
1292 | tb, snum[i], | ||
1293 | sbytes[i] - 1, | ||
1294 | S_new[i]); | ||
1295 | /* Paste given directory entry to directory item */ | 907 | /* Paste given directory entry to directory item */ |
1296 | buffer_info_init_bh(tb, &bi, S_new[i]); | 908 | buffer_info_init_bh(tb, &bi, S_new[i]); |
1297 | leaf_paste_in_buffer | 909 | leaf_paste_in_buffer(&bi, 0, pos_in_item - entry_count + sbytes[i] - 1, |
1298 | (&bi, 0, | 910 | tb->insert_size[0], body, zeros_num); |
1299 | pos_in_item - | ||
1300 | entry_count + | ||
1301 | sbytes[i] - 1, | ||
1302 | tb->insert_size[0], | ||
1303 | body, zeros_num); | ||
1304 | /* paste new directory entry */ | 911 | /* paste new directory entry */ |
1305 | leaf_paste_entries(&bi, | 912 | leaf_paste_entries(&bi, 0, pos_in_item - entry_count + sbytes[i] - 1, 1, |
1306 | 0, | 913 | (struct reiserfs_de_head *) body, |
1307 | pos_in_item | 914 | body + DEH_SIZE, tb->insert_size[0]); |
1308 | - | ||
1309 | entry_count | ||
1310 | + | ||
1311 | sbytes | ||
1312 | [i] - | ||
1313 | 1, 1, | ||
1314 | (struct | ||
1315 | reiserfs_de_head | ||
1316 | *) | ||
1317 | body, | ||
1318 | body | ||
1319 | + | ||
1320 | DEH_SIZE, | ||
1321 | tb-> | ||
1322 | insert_size | ||
1323 | [0] | ||
1324 | ); | ||
1325 | tb->insert_size[0] = 0; | 915 | tb->insert_size[0] = 0; |
1326 | pos_in_item++; | 916 | pos_in_item++; |
1327 | } else { /* new directory entry doesn't fall into S_new[i] */ | 917 | } else { /* new directory entry doesn't fall into S_new[i] */ |
1328 | leaf_move_items | 918 | leaf_move_items(LEAF_FROM_S_TO_SNEW,tb, snum[i], sbytes[i], S_new[i]); |
1329 | (LEAF_FROM_S_TO_SNEW, | ||
1330 | tb, snum[i], | ||
1331 | sbytes[i], | ||
1332 | S_new[i]); | ||
1333 | } | 919 | } |
1334 | } else { /* regular object */ | 920 | } else { /* regular object */ |
1335 | 921 | ||
1336 | int n_shift, n_rem, | 922 | int n_shift, n_rem, r_zeros_number; |
1337 | r_zeros_number; | ||
1338 | const char *r_body; | 923 | const char *r_body; |
1339 | 924 | ||
1340 | RFALSE(pos_in_item != | 925 | RFALSE(pos_in_item != ih_item_len(B_N_PITEM_HEAD(tbS0, item_pos)) || tb->insert_size[0] <= 0, |
1341 | ih_item_len | ||
1342 | (B_N_PITEM_HEAD | ||
1343 | (tbS0, item_pos)) | ||
1344 | || tb->insert_size[0] <= | ||
1345 | 0, | ||
1346 | "PAP-12225: item too short or insert_size <= 0"); | 926 | "PAP-12225: item too short or insert_size <= 0"); |
1347 | 927 | ||
1348 | /* Calculate number of bytes which must be shifted from appended item */ | 928 | /* Calculate number of bytes which must be shifted from appended item */ |
1349 | n_shift = | 929 | n_shift = sbytes[i] - tb->insert_size[0]; |
1350 | sbytes[i] - | ||
1351 | tb->insert_size[0]; | ||
1352 | if (n_shift < 0) | 930 | if (n_shift < 0) |
1353 | n_shift = 0; | 931 | n_shift = 0; |
1354 | leaf_move_items | 932 | leaf_move_items(LEAF_FROM_S_TO_SNEW, tb, snum[i], n_shift, S_new[i]); |
1355 | (LEAF_FROM_S_TO_SNEW, tb, | ||
1356 | snum[i], n_shift, | ||
1357 | S_new[i]); | ||
1358 | 933 | ||
1359 | /* Calculate number of bytes which must remain in body after append to S_new[i] */ | 934 | /* Calculate number of bytes which must remain in body after append to S_new[i] */ |
1360 | n_rem = | 935 | n_rem = tb->insert_size[0] - sbytes[i]; |
1361 | tb->insert_size[0] - | ||
1362 | sbytes[i]; | ||
1363 | if (n_rem < 0) | 936 | if (n_rem < 0) |
1364 | n_rem = 0; | 937 | n_rem = 0; |
1365 | /* Append part of body into S_new[0] */ | 938 | /* Append part of body into S_new[0] */ |
1366 | buffer_info_init_bh(tb, &bi, S_new[i]); | 939 | buffer_info_init_bh(tb, &bi, S_new[i]); |
1367 | if (n_rem > zeros_num) { | 940 | if (n_rem > zeros_num) { |
1368 | r_zeros_number = 0; | 941 | r_zeros_number = 0; |
1369 | r_body = | 942 | r_body = body + n_rem - zeros_num; |
1370 | body + n_rem - | ||
1371 | zeros_num; | ||
1372 | } else { | 943 | } else { |
1373 | r_body = body; | 944 | r_body = body; |
1374 | r_zeros_number = | 945 | r_zeros_number = zeros_num - n_rem; |
1375 | zeros_num - n_rem; | 946 | zeros_num -= r_zeros_number; |
1376 | zeros_num -= | ||
1377 | r_zeros_number; | ||
1378 | } | 947 | } |
1379 | 948 | ||
1380 | leaf_paste_in_buffer(&bi, 0, | 949 | leaf_paste_in_buffer(&bi, 0, n_shift, |
1381 | n_shift, | 950 | tb->insert_size[0] - n_rem, |
1382 | tb-> | 951 | r_body, r_zeros_number); |
1383 | insert_size | ||
1384 | [0] - | ||
1385 | n_rem, | ||
1386 | r_body, | ||
1387 | r_zeros_number); | ||
1388 | { | 952 | { |
1389 | struct item_head *tmp; | 953 | struct item_head *tmp; |
1390 | 954 | ||
1391 | tmp = | 955 | tmp = B_N_PITEM_HEAD(S_new[i], 0); |
1392 | B_N_PITEM_HEAD(S_new | ||
1393 | [i], | ||
1394 | 0); | ||
1395 | if (is_indirect_le_ih | 956 | if (is_indirect_le_ih |
1396 | (tmp)) { | 957 | (tmp)) { |
1397 | set_ih_free_space | 958 | set_ih_free_space(tmp, 0); |
1398 | (tmp, 0); | 959 | set_le_ih_k_offset(tmp, le_ih_k_offset(tmp) + (n_rem << (tb->tb_sb->s_blocksize_bits - UNFM_P_SHIFT))); |
1399 | set_le_ih_k_offset | ||
1400 | (tmp, | ||
1401 | le_ih_k_offset | ||
1402 | (tmp) + | ||
1403 | (n_rem << | ||
1404 | (tb-> | ||
1405 | tb_sb-> | ||
1406 | s_blocksize_bits | ||
1407 | - | ||
1408 | UNFM_P_SHIFT))); | ||
1409 | } else { | 960 | } else { |
1410 | set_le_ih_k_offset | 961 | set_le_ih_k_offset(tmp, le_ih_k_offset(tmp) + n_rem); |
1411 | (tmp, | ||
1412 | le_ih_k_offset | ||
1413 | (tmp) + | ||
1414 | n_rem); | ||
1415 | } | 962 | } |
1416 | } | 963 | } |
1417 | 964 | ||
@@ -1426,8 +973,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1426 | struct item_head *pasted; | 973 | struct item_head *pasted; |
1427 | 974 | ||
1428 | #ifdef CONFIG_REISERFS_CHECK | 975 | #ifdef CONFIG_REISERFS_CHECK |
1429 | struct item_head *ih_check = | 976 | struct item_head *ih_check = B_N_PITEM_HEAD(tbS0, item_pos); |
1430 | B_N_PITEM_HEAD(tbS0, item_pos); | ||
1431 | 977 | ||
1432 | if (!is_direntry_le_ih(ih_check) | 978 | if (!is_direntry_le_ih(ih_check) |
1433 | && (pos_in_item != ih_item_len(ih_check) | 979 | && (pos_in_item != ih_item_len(ih_check) |
@@ -1439,8 +985,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1439 | "to ih_item_len"); | 985 | "to ih_item_len"); |
1440 | #endif /* CONFIG_REISERFS_CHECK */ | 986 | #endif /* CONFIG_REISERFS_CHECK */ |
1441 | 987 | ||
1442 | leaf_mi = | 988 | leaf_mi = leaf_move_items(LEAF_FROM_S_TO_SNEW, |
1443 | leaf_move_items(LEAF_FROM_S_TO_SNEW, | ||
1444 | tb, snum[i], | 989 | tb, snum[i], |
1445 | sbytes[i], | 990 | sbytes[i], |
1446 | S_new[i]); | 991 | S_new[i]); |
@@ -1452,30 +997,19 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1452 | /* paste into item */ | 997 | /* paste into item */ |
1453 | buffer_info_init_bh(tb, &bi, S_new[i]); | 998 | buffer_info_init_bh(tb, &bi, S_new[i]); |
1454 | leaf_paste_in_buffer(&bi, | 999 | leaf_paste_in_buffer(&bi, |
1455 | item_pos - n + | 1000 | item_pos - n + snum[i], |
1456 | snum[i], | ||
1457 | pos_in_item, | 1001 | pos_in_item, |
1458 | tb->insert_size[0], | 1002 | tb->insert_size[0], |
1459 | body, zeros_num); | 1003 | body, zeros_num); |
1460 | 1004 | ||
1461 | pasted = | 1005 | pasted = B_N_PITEM_HEAD(S_new[i], item_pos - n + snum[i]); |
1462 | B_N_PITEM_HEAD(S_new[i], | ||
1463 | item_pos - n + | ||
1464 | snum[i]); | ||
1465 | if (is_direntry_le_ih(pasted)) { | 1006 | if (is_direntry_le_ih(pasted)) { |
1466 | leaf_paste_entries(&bi, | 1007 | leaf_paste_entries(&bi, |
1467 | item_pos - | 1008 | item_pos - n + snum[i], |
1468 | n + snum[i], | 1009 | pos_in_item, 1, |
1469 | pos_in_item, | 1010 | (struct reiserfs_de_head *)body, |
1470 | 1, | 1011 | body + DEH_SIZE, |
1471 | (struct | 1012 | tb->insert_size[0] |
1472 | reiserfs_de_head | ||
1473 | *)body, | ||
1474 | body + | ||
1475 | DEH_SIZE, | ||
1476 | tb-> | ||
1477 | insert_size | ||
1478 | [0] | ||
1479 | ); | 1013 | ); |
1480 | } | 1014 | } |
1481 | 1015 | ||
@@ -1495,11 +1029,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1495 | default: /* cases d and t */ | 1029 | default: /* cases d and t */ |
1496 | reiserfs_panic(tb->tb_sb, "PAP-12245", | 1030 | reiserfs_panic(tb->tb_sb, "PAP-12245", |
1497 | "blknum > 2: unexpected mode: %s(%d)", | 1031 | "blknum > 2: unexpected mode: %s(%d)", |
1498 | (flag == | 1032 | (flag == M_DELETE) ? "DELETE" : ((flag == M_CUT) ? "CUT" : "UNKNOWN"), flag); |
1499 | M_DELETE) ? "DELETE" : ((flag == | ||
1500 | M_CUT) ? "CUT" | ||
1501 | : "UNKNOWN"), | ||
1502 | flag); | ||
1503 | } | 1033 | } |
1504 | 1034 | ||
1505 | memcpy(insert_key + i, B_N_PKEY(S_new[i], 0), KEY_SIZE); | 1035 | memcpy(insert_key + i, B_N_PKEY(S_new[i], 0), KEY_SIZE); |
@@ -1524,9 +1054,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1524 | /* If we insert the first key change the delimiting key */ | 1054 | /* If we insert the first key change the delimiting key */ |
1525 | if (item_pos == 0) { | 1055 | if (item_pos == 0) { |
1526 | if (tb->CFL[0]) /* can be 0 in reiserfsck */ | 1056 | if (tb->CFL[0]) /* can be 0 in reiserfsck */ |
1527 | replace_key(tb, tb->CFL[0], tb->lkey[0], | 1057 | replace_key(tb, tb->CFL[0], tb->lkey[0], tbS0, 0); |
1528 | tbS0, 0); | ||
1529 | |||
1530 | } | 1058 | } |
1531 | break; | 1059 | break; |
1532 | 1060 | ||
@@ -1536,53 +1064,27 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1536 | pasted = B_N_PITEM_HEAD(tbS0, item_pos); | 1064 | pasted = B_N_PITEM_HEAD(tbS0, item_pos); |
1537 | /* when directory, may be new entry already pasted */ | 1065 | /* when directory, may be new entry already pasted */ |
1538 | if (is_direntry_le_ih(pasted)) { | 1066 | if (is_direntry_le_ih(pasted)) { |
1539 | if (pos_in_item >= 0 && | 1067 | if (pos_in_item >= 0 && pos_in_item <= ih_entry_count(pasted)) { |
1540 | pos_in_item <= | ||
1541 | ih_entry_count(pasted)) { | ||
1542 | 1068 | ||
1543 | RFALSE(!tb->insert_size[0], | 1069 | RFALSE(!tb->insert_size[0], |
1544 | "PAP-12260: insert_size is 0 already"); | 1070 | "PAP-12260: insert_size is 0 already"); |
1545 | 1071 | ||
1546 | /* prepare space */ | 1072 | /* prepare space */ |
1547 | buffer_info_init_tbS0(tb, &bi); | 1073 | buffer_info_init_tbS0(tb, &bi); |
1548 | leaf_paste_in_buffer(&bi, | 1074 | leaf_paste_in_buffer(&bi, item_pos, pos_in_item, |
1549 | item_pos, | 1075 | tb->insert_size[0], body, |
1550 | pos_in_item, | ||
1551 | tb-> | ||
1552 | insert_size | ||
1553 | [0], body, | ||
1554 | zeros_num); | 1076 | zeros_num); |
1555 | 1077 | ||
1556 | /* paste entry */ | 1078 | /* paste entry */ |
1557 | leaf_paste_entries(&bi, | 1079 | leaf_paste_entries(&bi, item_pos, pos_in_item, 1, |
1558 | item_pos, | 1080 | (struct reiserfs_de_head *)body, |
1559 | pos_in_item, | 1081 | body + DEH_SIZE, |
1560 | 1, | 1082 | tb->insert_size[0]); |
1561 | (struct | ||
1562 | reiserfs_de_head | ||
1563 | *)body, | ||
1564 | body + | ||
1565 | DEH_SIZE, | ||
1566 | tb-> | ||
1567 | insert_size | ||
1568 | [0] | ||
1569 | ); | ||
1570 | if (!item_pos && !pos_in_item) { | 1083 | if (!item_pos && !pos_in_item) { |
1571 | RFALSE(!tb->CFL[0] | 1084 | RFALSE(!tb->CFL[0] || !tb->L[0], |
1572 | || !tb->L[0], | ||
1573 | "PAP-12270: CFL[0]/L[0] must be specified"); | 1085 | "PAP-12270: CFL[0]/L[0] must be specified"); |
1574 | if (tb->CFL[0]) { | 1086 | if (tb->CFL[0]) |
1575 | replace_key(tb, | 1087 | replace_key(tb, tb->CFL[0], tb->lkey[0], tbS0, 0); |
1576 | tb-> | ||
1577 | CFL | ||
1578 | [0], | ||
1579 | tb-> | ||
1580 | lkey | ||
1581 | [0], | ||
1582 | tbS0, | ||
1583 | 0); | ||
1584 | |||
1585 | } | ||
1586 | } | 1088 | } |
1587 | tb->insert_size[0] = 0; | 1089 | tb->insert_size[0] = 0; |
1588 | } | 1090 | } |
@@ -1593,13 +1095,8 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1593 | "PAP-12275: insert size must not be %d", | 1095 | "PAP-12275: insert size must not be %d", |
1594 | tb->insert_size[0]); | 1096 | tb->insert_size[0]); |
1595 | buffer_info_init_tbS0(tb, &bi); | 1097 | buffer_info_init_tbS0(tb, &bi); |
1596 | leaf_paste_in_buffer(&bi, | 1098 | leaf_paste_in_buffer(&bi, item_pos, pos_in_item, |
1597 | item_pos, | 1099 | tb->insert_size[0], body, zeros_num); |
1598 | pos_in_item, | ||
1599 | tb-> | ||
1600 | insert_size | ||
1601 | [0], body, | ||
1602 | zeros_num); | ||
1603 | 1100 | ||
1604 | if (is_indirect_le_ih(pasted)) { | 1101 | if (is_indirect_le_ih(pasted)) { |
1605 | #if 0 | 1102 | #if 0 |
@@ -1611,8 +1108,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1611 | tb-> | 1108 | tb-> |
1612 | insert_size[0]); | 1109 | insert_size[0]); |
1613 | #endif | 1110 | #endif |
1614 | set_ih_free_space | 1111 | set_ih_free_space(pasted, 0); |
1615 | (pasted, 0); | ||
1616 | } | 1112 | } |
1617 | tb->insert_size[0] = 0; | 1113 | tb->insert_size[0] = 0; |
1618 | } | 1114 | } |
@@ -1620,8 +1116,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
1620 | else { | 1116 | else { |
1621 | if (tb->insert_size[0]) { | 1117 | if (tb->insert_size[0]) { |
1622 | print_cur_tb("12285"); | 1118 | print_cur_tb("12285"); |
1623 | reiserfs_panic(tb-> | 1119 | reiserfs_panic(tb->tb_sb, |
1624 | tb_sb, | ||
1625 | "PAP-12285", | 1120 | "PAP-12285", |
1626 | "insert_size " | 1121 | "insert_size " |
1627 | "must be 0 " | 1122 | "must be 0 " |