diff options
author | David Woodhouse <dwmw2@infradead.org> | 2006-05-20 14:45:26 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2006-05-20 14:45:26 -0400 |
commit | f1f9671bd8f7d2ac6a918bad806ab5bdc0daaf4e (patch) | |
tree | f1fb5992fbd299375c911eb4c36d7fc8774f9208 /fs/jffs2/summary.c | |
parent | 0cfc7da3ff4b39a3aac261ab3f6b1329e2485653 (diff) |
[JFFS2] Introduce jffs2_link_node_ref() function to reduce code duplication
The same sequence of code was repeated in many places, to add a new
struct jffs2_raw_node_ref to an eraseblock and adjust the space accounting
accordingly. Move it out-of-line.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/summary.c')
-rw-r--r-- | fs/jffs2/summary.c | 71 |
1 files changed, 15 insertions, 56 deletions
diff --git a/fs/jffs2/summary.c b/fs/jffs2/summary.c index 5dbe87b67ab6..912189762323 100644 --- a/fs/jffs2/summary.c +++ b/fs/jffs2/summary.c | |||
@@ -410,19 +410,13 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras | |||
410 | } | 410 | } |
411 | 411 | ||
412 | raw->flash_offset = (jeb->offset + je32_to_cpu(spi->offset)) | REF_UNCHECKED; | 412 | raw->flash_offset = (jeb->offset + je32_to_cpu(spi->offset)) | REF_UNCHECKED; |
413 | raw->__totlen = PAD(je32_to_cpu(spi->totlen)); | ||
414 | raw->next_phys = NULL; | ||
415 | raw->next_in_ino = ic->nodes; | ||
416 | 413 | ||
414 | raw->next_in_ino = ic->nodes; | ||
417 | ic->nodes = raw; | 415 | ic->nodes = raw; |
418 | if (!jeb->first_node) | ||
419 | jeb->first_node = raw; | ||
420 | if (jeb->last_node) | ||
421 | jeb->last_node->next_phys = raw; | ||
422 | jeb->last_node = raw; | ||
423 | *pseudo_random += je32_to_cpu(spi->version); | ||
424 | 416 | ||
425 | UNCHECKED_SPACE(PAD(je32_to_cpu(spi->totlen))); | 417 | jffs2_link_node_ref(c, jeb, raw, PAD(je32_to_cpu(spi->totlen))); |
418 | |||
419 | *pseudo_random += je32_to_cpu(spi->version); | ||
426 | 420 | ||
427 | sp += JFFS2_SUMMARY_INODE_SIZE; | 421 | sp += JFFS2_SUMMARY_INODE_SIZE; |
428 | 422 | ||
@@ -457,16 +451,11 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras | |||
457 | return -ENOMEM; | 451 | return -ENOMEM; |
458 | } | 452 | } |
459 | 453 | ||
460 | raw->__totlen = PAD(je32_to_cpu(spd->totlen)); | ||
461 | raw->flash_offset = (jeb->offset + je32_to_cpu(spd->offset)) | REF_PRISTINE; | 454 | raw->flash_offset = (jeb->offset + je32_to_cpu(spd->offset)) | REF_PRISTINE; |
462 | raw->next_phys = NULL; | ||
463 | raw->next_in_ino = ic->nodes; | 455 | raw->next_in_ino = ic->nodes; |
464 | ic->nodes = raw; | 456 | ic->nodes = raw; |
465 | if (!jeb->first_node) | 457 | |
466 | jeb->first_node = raw; | 458 | jffs2_link_node_ref(c, jeb, raw, PAD(je32_to_cpu(spd->totlen))); |
467 | if (jeb->last_node) | ||
468 | jeb->last_node->next_phys = raw; | ||
469 | jeb->last_node = raw; | ||
470 | 459 | ||
471 | fd->raw = raw; | 460 | fd->raw = raw; |
472 | fd->next = NULL; | 461 | fd->next = NULL; |
@@ -474,7 +463,7 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras | |||
474 | fd->ino = je32_to_cpu(spd->ino); | 463 | fd->ino = je32_to_cpu(spd->ino); |
475 | fd->nhash = full_name_hash(fd->name, spd->nsize); | 464 | fd->nhash = full_name_hash(fd->name, spd->nsize); |
476 | fd->type = spd->type; | 465 | fd->type = spd->type; |
477 | USED_SPACE(PAD(je32_to_cpu(spd->totlen))); | 466 | |
478 | jffs2_add_fd_to_list(c, fd, &ic->scan_dents); | 467 | jffs2_add_fd_to_list(c, fd, &ic->scan_dents); |
479 | 468 | ||
480 | *pseudo_random += je32_to_cpu(spd->version); | 469 | *pseudo_random += je32_to_cpu(spd->version); |
@@ -516,17 +505,11 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras | |||
516 | xd->node = raw; | 505 | xd->node = raw; |
517 | 506 | ||
518 | raw->flash_offset = ofs | REF_UNCHECKED; | 507 | raw->flash_offset = ofs | REF_UNCHECKED; |
519 | raw->__totlen = PAD(je32_to_cpu(spx->totlen)); | ||
520 | raw->next_phys = NULL; | ||
521 | raw->next_in_ino = (void *)xd; | 508 | raw->next_in_ino = (void *)xd; |
522 | if (!jeb->first_node) | 509 | |
523 | jeb->first_node = raw; | 510 | jffs2_link_node_ref(c, jeb, raw, PAD(je32_to_cpu(spx->totlen))); |
524 | if (jeb->last_node) | ||
525 | jeb->last_node->next_phys = raw; | ||
526 | jeb->last_node = raw; | ||
527 | 511 | ||
528 | *pseudo_random += je32_to_cpu(spx->xid); | 512 | *pseudo_random += je32_to_cpu(spx->xid); |
529 | UNCHECKED_SPACE(je32_to_cpu(spx->totlen)); | ||
530 | sp += JFFS2_SUMMARY_XATTR_SIZE; | 513 | sp += JFFS2_SUMMARY_XATTR_SIZE; |
531 | 514 | ||
532 | break; | 515 | break; |
@@ -559,17 +542,11 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras | |||
559 | ref->next = c->xref_temp; | 542 | ref->next = c->xref_temp; |
560 | c->xref_temp = ref; | 543 | c->xref_temp = ref; |
561 | 544 | ||
562 | raw->__totlen = PAD(sizeof(struct jffs2_raw_xref)); | ||
563 | raw->flash_offset = ofs | REF_UNCHECKED; | 545 | raw->flash_offset = ofs | REF_UNCHECKED; |
564 | raw->next_phys = NULL; | ||
565 | raw->next_in_ino = (void *)ref; | 546 | raw->next_in_ino = (void *)ref; |
566 | if (!jeb->first_node) | ||
567 | jeb->first_node = raw; | ||
568 | if (jeb->last_node) | ||
569 | jeb->last_node->next_phys = raw; | ||
570 | jeb->last_node = raw; | ||
571 | 547 | ||
572 | UNCHECKED_SPACE(PAD(sizeof(struct jffs2_raw_xref))); | 548 | jffs2_link_node_ref(c, jeb, raw, PAD(sizeof(struct jffs2_raw_xref))); |
549 | |||
573 | *pseudo_random += ofs; | 550 | *pseudo_random += ofs; |
574 | sp += JFFS2_SUMMARY_XREF_SIZE; | 551 | sp += JFFS2_SUMMARY_XREF_SIZE; |
575 | 552 | ||
@@ -653,13 +630,10 @@ int jffs2_sum_scan_sumnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb | |||
653 | return -ENOMEM; | 630 | return -ENOMEM; |
654 | } | 631 | } |
655 | 632 | ||
656 | marker_ref->next_in_ino = NULL; | ||
657 | marker_ref->next_phys = NULL; | ||
658 | marker_ref->flash_offset = jeb->offset | REF_NORMAL; | 633 | marker_ref->flash_offset = jeb->offset | REF_NORMAL; |
659 | marker_ref->__totlen = je32_to_cpu(summary->cln_mkr); | 634 | marker_ref->next_in_ino = NULL; |
660 | jeb->first_node = jeb->last_node = marker_ref; | ||
661 | 635 | ||
662 | USED_SPACE( PAD(je32_to_cpu(summary->cln_mkr)) ); | 636 | jffs2_link_node_ref(c, jeb, marker_ref, je32_to_cpu(summary->cln_mkr)); |
663 | } | 637 | } |
664 | } | 638 | } |
665 | 639 | ||
@@ -682,15 +656,8 @@ int jffs2_sum_scan_sumnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb | |||
682 | cache_ref->next_in_ino = NULL; | 656 | cache_ref->next_in_ino = NULL; |
683 | cache_ref->next_phys = NULL; | 657 | cache_ref->next_phys = NULL; |
684 | cache_ref->flash_offset = ofs | REF_NORMAL; | 658 | cache_ref->flash_offset = ofs | REF_NORMAL; |
685 | cache_ref->__totlen = sumsize; | ||
686 | |||
687 | if (!jeb->first_node) | ||
688 | jeb->first_node = cache_ref; | ||
689 | if (jeb->last_node) | ||
690 | jeb->last_node->next_phys = cache_ref; | ||
691 | jeb->last_node = cache_ref; | ||
692 | 659 | ||
693 | USED_SPACE(sumsize); | 660 | jffs2_link_node_ref(c, jeb, cache_ref, sumsize); |
694 | 661 | ||
695 | jeb->wasted_size += jeb->free_size; | 662 | jeb->wasted_size += jeb->free_size; |
696 | c->wasted_size += jeb->free_size; | 663 | c->wasted_size += jeb->free_size; |
@@ -888,17 +855,9 @@ int jffs2_sum_write_sumnode(struct jffs2_sb_info *c) | |||
888 | } | 855 | } |
889 | 856 | ||
890 | summary_ref->next_in_ino = NULL; | 857 | summary_ref->next_in_ino = NULL; |
891 | summary_ref->next_phys = NULL; | ||
892 | summary_ref->flash_offset = (jeb->offset + c->sector_size - jeb->free_size) | REF_NORMAL; | 858 | summary_ref->flash_offset = (jeb->offset + c->sector_size - jeb->free_size) | REF_NORMAL; |
893 | summary_ref->__totlen = infosize; | ||
894 | |||
895 | if (!jeb->first_node) | ||
896 | jeb->first_node = summary_ref; | ||
897 | if (jeb->last_node) | ||
898 | jeb->last_node->next_phys = summary_ref; | ||
899 | jeb->last_node = summary_ref; | ||
900 | 859 | ||
901 | USED_SPACE(infosize); | 860 | jffs2_link_node_ref(c, jeb, summary_ref, infosize); |
902 | 861 | ||
903 | return 0; | 862 | return 0; |
904 | } | 863 | } |