Lines Matching refs:c

26 int jffs2_sum_init(struct jffs2_sb_info *c)  in jffs2_sum_init()  argument
28 uint32_t sum_size = min_t(uint32_t, c->sector_size, MAX_SUMMARY_SIZE); in jffs2_sum_init()
30 c->summary = kzalloc(sizeof(struct jffs2_summary), GFP_KERNEL); in jffs2_sum_init()
32 if (!c->summary) { in jffs2_sum_init()
37 c->summary->sum_buf = kmalloc(sum_size, GFP_KERNEL); in jffs2_sum_init()
39 if (!c->summary->sum_buf) { in jffs2_sum_init()
41 kfree(c->summary); in jffs2_sum_init()
50 void jffs2_sum_exit(struct jffs2_sb_info *c) in jffs2_sum_exit() argument
54 jffs2_sum_disable_collecting(c->summary); in jffs2_sum_exit()
56 kfree(c->summary->sum_buf); in jffs2_sum_exit()
57 c->summary->sum_buf = NULL; in jffs2_sum_exit()
59 kfree(c->summary); in jffs2_sum_exit()
60 c->summary = NULL; in jffs2_sum_exit()
231 void jffs2_sum_move_collected(struct jffs2_sb_info *c, struct jffs2_summary *s) in jffs2_sum_move_collected() argument
234 c->summary->sum_size, c->summary->sum_num, in jffs2_sum_move_collected()
237 c->summary->sum_size = s->sum_size; in jffs2_sum_move_collected()
238 c->summary->sum_num = s->sum_num; in jffs2_sum_move_collected()
239 c->summary->sum_padded = s->sum_padded; in jffs2_sum_move_collected()
240 c->summary->sum_list_head = s->sum_list_head; in jffs2_sum_move_collected()
241 c->summary->sum_list_tail = s->sum_list_tail; in jffs2_sum_move_collected()
248 int jffs2_sum_add_kvec(struct jffs2_sb_info *c, const struct kvec *invecs, in jffs2_sum_add_kvec() argument
254 if (c->summary->sum_size == JFFS2_SUMMARY_NOSUM_SIZE) { in jffs2_sum_add_kvec()
260 jeb = &c->blocks[ofs / c->sector_size]; in jffs2_sum_add_kvec()
278 return jffs2_sum_add_mem(c->summary, (union jffs2_sum_mem *)temp); in jffs2_sum_add_kvec()
312 return jffs2_sum_add_mem(c->summary, (union jffs2_sum_mem *)temp); in jffs2_sum_add_kvec()
328 return jffs2_sum_add_mem(c->summary, (union jffs2_sum_mem *)temp); in jffs2_sum_add_kvec()
339 return jffs2_sum_add_mem(c->summary, (union jffs2_sum_mem *)temp); in jffs2_sum_add_kvec()
344 c->summary->sum_padded += je32_to_cpu(node->u.totlen); in jffs2_sum_add_kvec()
370 static struct jffs2_raw_node_ref *sum_link_node_ref(struct jffs2_sb_info *c, in sum_link_node_ref() argument
376 if ((ofs & ~3) > c->sector_size - jeb->free_size) { in sum_link_node_ref()
378 jffs2_scan_dirty_space(c, jeb, (ofs & ~3) - (c->sector_size - jeb->free_size)); in sum_link_node_ref()
381 return jffs2_link_node_ref(c, jeb, jeb->offset + ofs, len, ic); in sum_link_node_ref()
386 static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, in jffs2_sum_process_sum_data() argument
403 err = jffs2_prealloc_raw_node_refs(c, jeb, 2); in jffs2_sum_process_sum_data()
418 ic = jffs2_scan_make_ino_cache(c, ino); in jffs2_sum_process_sum_data()
424 sum_link_node_ref(c, jeb, je32_to_cpu(spi->offset) | REF_UNCHECKED, in jffs2_sum_process_sum_data()
467 ic = jffs2_scan_make_ino_cache(c, je32_to_cpu(spd->pino)); in jffs2_sum_process_sum_data()
473 fd->raw = sum_link_node_ref(c, jeb, je32_to_cpu(spd->offset) | REF_UNCHECKED, in jffs2_sum_process_sum_data()
482 jffs2_add_fd_to_list(c, fd, &ic->scan_dents); in jffs2_sum_process_sum_data()
501 xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid), in jffs2_sum_process_sum_data()
508 = sum_link_node_ref(c, jeb, je32_to_cpu(spx->offset) | REF_UNCHECKED, in jffs2_sum_process_sum_data()
514 sum_link_node_ref(c, jeb, je32_to_cpu(spx->offset) | REF_UNCHECKED, in jffs2_sum_process_sum_data()
537 ref->next = c->xref_temp; in jffs2_sum_process_sum_data()
538 c->xref_temp = ref; in jffs2_sum_process_sum_data()
540 sum_link_node_ref(c, jeb, je32_to_cpu(spr->offset) | REF_UNCHECKED, in jffs2_sum_process_sum_data()
556 c->wasted_size -= jeb->wasted_size; in jffs2_sum_process_sum_data()
557 c->free_size += c->sector_size - jeb->free_size; in jffs2_sum_process_sum_data()
558 c->used_size -= jeb->used_size; in jffs2_sum_process_sum_data()
559 c->dirty_size -= jeb->dirty_size; in jffs2_sum_process_sum_data()
561 jeb->free_size = c->sector_size; in jffs2_sum_process_sum_data()
563 jffs2_free_jeb_node_refs(c, jeb); in jffs2_sum_process_sum_data()
572 int jffs2_sum_scan_sumnode(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, in jffs2_sum_scan_sumnode() argument
580 ofs = c->sector_size - sumsize; in jffs2_sum_scan_sumnode()
620 ret = jffs2_prealloc_raw_node_refs(c, jeb, 1); in jffs2_sum_scan_sumnode()
624 if (je32_to_cpu(summary->cln_mkr) != c->cleanmarker_size) { in jffs2_sum_scan_sumnode()
626 je32_to_cpu(summary->cln_mkr), c->cleanmarker_size); in jffs2_sum_scan_sumnode()
627 if ((ret = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(summary->cln_mkr))))) in jffs2_sum_scan_sumnode()
632 if ((ret = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(summary->cln_mkr))))) in jffs2_sum_scan_sumnode()
635 jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, in jffs2_sum_scan_sumnode()
640 ret = jffs2_sum_process_sum_data(c, jeb, summary, pseudo_random); in jffs2_sum_scan_sumnode()
649 ret = jffs2_prealloc_raw_node_refs(c, jeb, 2); in jffs2_sum_scan_sumnode()
653 sum_link_node_ref(c, jeb, ofs | REF_NORMAL, sumsize, NULL); in jffs2_sum_scan_sumnode()
659 c->wasted_size += jeb->free_size; in jffs2_sum_scan_sumnode()
660 c->free_size -= jeb->free_size; in jffs2_sum_scan_sumnode()
664 return jffs2_scan_classify_jeb(c, jeb); in jffs2_sum_scan_sumnode()
674 static int jffs2_sum_write_data(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, in jffs2_sum_write_data() argument
688 jffs2_sum_disable_collecting(c->summary); in jffs2_sum_write_data()
698 jffs2_sum_disable_collecting(c->summary); in jffs2_sum_write_data()
706 memset(c->summary->sum_buf, 0xff, datasize); in jffs2_sum_write_data()
713 isum.padded = cpu_to_je32(c->summary->sum_padded); in jffs2_sum_write_data()
714 isum.cln_mkr = cpu_to_je32(c->cleanmarker_size); in jffs2_sum_write_data()
715 isum.sum_num = cpu_to_je32(c->summary->sum_num); in jffs2_sum_write_data()
716 wpage = c->summary->sum_buf; in jffs2_sum_write_data()
718 while (c->summary->sum_num) { in jffs2_sum_write_data()
719 temp = c->summary->sum_list_head; in jffs2_sum_write_data()
759 temp = c->summary->sum_list_head; in jffs2_sum_write_data()
772 temp = c->summary->sum_list_head; in jffs2_sum_write_data()
785 jffs2_sum_disable_collecting(c->summary); in jffs2_sum_write_data()
792 c->summary->sum_list_head = temp->u.next; in jffs2_sum_write_data()
795 c->summary->sum_num--; in jffs2_sum_write_data()
798 jffs2_sum_reset_collected(c->summary); in jffs2_sum_write_data()
803 sm->offset = cpu_to_je32(c->sector_size - jeb->free_size); in jffs2_sum_write_data()
806 isum.sum_crc = cpu_to_je32(crc32(0, c->summary->sum_buf, datasize)); in jffs2_sum_write_data()
811 vecs[1].iov_base = c->summary->sum_buf; in jffs2_sum_write_data()
814 sum_ofs = jeb->offset + c->sector_size - jeb->free_size; in jffs2_sum_write_data()
818 ret = jffs2_flash_writev(c, vecs, 2, sum_ofs, &retlen, 0); in jffs2_sum_write_data()
827 spin_lock(&c->erase_completion_lock); in jffs2_sum_write_data()
828 jffs2_link_node_ref(c, jeb, sum_ofs | REF_OBSOLETE, infosize, NULL); in jffs2_sum_write_data()
829 spin_unlock(&c->erase_completion_lock); in jffs2_sum_write_data()
832 c->summary->sum_size = JFFS2_SUMMARY_NOSUM_SIZE; in jffs2_sum_write_data()
837 spin_lock(&c->erase_completion_lock); in jffs2_sum_write_data()
838 jffs2_link_node_ref(c, jeb, sum_ofs | REF_NORMAL, infosize, NULL); in jffs2_sum_write_data()
839 spin_unlock(&c->erase_completion_lock); in jffs2_sum_write_data()
846 int jffs2_sum_write_sumnode(struct jffs2_sb_info *c) in jffs2_sum_write_sumnode() argument
847 __must_hold(&c->erase_completion_block) in jffs2_sum_write_sumnode()
855 spin_unlock(&c->erase_completion_lock); in jffs2_sum_write_sumnode()
857 jeb = c->nextblock; in jffs2_sum_write_sumnode()
858 jffs2_prealloc_raw_node_refs(c, jeb, 1); in jffs2_sum_write_sumnode()
860 if (!c->summary->sum_num || !c->summary->sum_list_head) { in jffs2_sum_write_sumnode()
865 datasize = c->summary->sum_size + sizeof(struct jffs2_sum_marker); in jffs2_sum_write_sumnode()
871 ret = jffs2_sum_write_data(c, jeb, infosize, datasize, padsize); in jffs2_sum_write_sumnode()
872 spin_lock(&c->erase_completion_lock); in jffs2_sum_write_sumnode()