• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/jffs2/

Lines Matching refs:jeb

37 static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
44 static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
46 static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
67 static int file_dirty(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
71 if ((ret = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
73 if ((ret = jffs2_scan_dirty_space(c, jeb, jeb->free_size)))
77 jeb->dirty_size += jeb->wasted_size;
78 c->dirty_size += jeb->wasted_size;
79 c->wasted_size -= jeb->wasted_size;
80 jeb->wasted_size = 0;
81 if (VERYDIRTY(c, jeb->dirty_size)) {
82 list_add(&jeb->list, &c->very_dirty_list);
84 list_add(&jeb->list, &c->dirty_list);
140 struct jffs2_eraseblock *jeb = &c->blocks[i];
147 ret = jffs2_scan_eraseblock(c, jeb, buf_size?flashbuf:(flashbuf+jeb->offset),
153 jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
166 list_add(&jeb->list, &c->erase_pending_list);
172 if (!jeb->dirty_size) {
174 list_add(&jeb->list, &c->free_list);
178 D1(printk(KERN_DEBUG "Adding all-dirty block at 0x%08x to erase_pending_list\n", jeb->offset));
179 list_add(&jeb->list, &c->erase_pending_list);
186 list_add(&jeb->list, &c->clean_list);
193 if (jeb->free_size > min_free(c) &&
194 (!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
205 D1(printk(KERN_DEBUG "jffs2_scan_medium(): new nextblock = 0x%08x\n", jeb->offset));
206 c->nextblock = jeb;
208 ret = file_dirty(c, jeb);
217 D1(printk(KERN_NOTICE "JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n", jeb->offset));
218 list_add(&jeb->list, &c->erase_pending_list);
223 D1(printk(KERN_NOTICE "JFFS2: Block at 0x%08x is bad\n", jeb->offset));
224 list_add(&jeb->list, &c->bad_list);
299 int jffs2_scan_classify_jeb(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
301 if ((jeb->used_size + jeb->unchecked_size) == PAD(c->cleanmarker_size) && !jeb->dirty_size
302 && (!jeb->first_node || !ref_next(jeb->first_node)) )
306 else if (!ISDIRTY(c->sector_size - (jeb->used_size + jeb->unchecked_size))) {
307 c->dirty_size -= jeb->dirty_size;
308 c->wasted_size += jeb->dirty_size;
309 jeb->wasted_size += jeb->dirty_size;
310 jeb->dirty_size = 0;
312 } else if (jeb->used_size || jeb->unchecked_size)
319 static int jffs2_scan_xattr_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
331 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rx->totlen))))
344 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rx->totlen))))
355 = jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, totlen, NULL);
365 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, totlen, (void *)xd);
369 jffs2_sum_add_xattr_mem(s, rx, ofs - jeb->offset);
375 static int jffs2_scan_xref_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
387 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rr->totlen)))))
396 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rr->totlen))))
422 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(rr->totlen)), (void *)ref);
425 jffs2_sum_add_xref_mem(s, rr, ofs - jeb->offset);
434 static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
448 ofs = jeb->offset;
449 prevofs = jeb->offset - 1;
457 if (c->mtd->block_isbad(c->mtd, jeb->offset))
460 ret = jffs2_check_nand_cleanmarker(c, jeb);
495 jeb->offset + c->sector_size - buf_len,
516 jeb->offset + c->sector_size - sumlen,
526 err = jffs2_sum_scan_sumnode(c, jeb, sumptr, sumlen, &pseudo_random);
539 buf_ofs = jeb->offset;
551 /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
562 int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound);
571 D1(printk(KERN_DEBUG "Block at 0x%08x is empty (erased)\n", jeb->offset));
578 D1(printk(KERN_DEBUG "Free space at %08x ends at %08x\n", jeb->offset,
579 jeb->offset + ofs));
580 if ((err = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
582 if ((err = jffs2_scan_dirty_space(c, jeb, ofs)))
587 ofs += jeb->offset;
591 dbg_summary("no summary found in jeb 0x%08x. Apply original scan.\n",jeb->offset);
594 while(ofs < jeb->offset + c->sector_size) {
596 jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
599 err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
612 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
619 if (jeb->offset + c->sector_size < ofs + sizeof(*node)) {
621 jeb->offset, c->sector_size, ofs, sizeof(*node)));
622 if ((err = jffs2_scan_dirty_space(c, jeb, (jeb->offset + c->sector_size)-ofs)))
628 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
654 if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
667 if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&
668 c->cleanmarker_size && !jeb->dirty_size && !ref_next(jeb->first_node)) {
678 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
696 if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) {
698 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
705 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
713 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
723 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
741 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
747 if (ofs + je32_to_cpu(node->totlen) > jeb->offset + c->sector_size) {
752 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
761 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
770 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
779 err = jffs2_scan_inode_node(c, jeb, (void *)node, ofs, s);
786 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
795 err = jffs2_scan_dirent_node(c, jeb, (void *)node, ofs, s);
803 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
813 err = jffs2_scan_xattr_node(c, jeb, (void *)node, ofs, s);
820 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
830 err = jffs2_scan_xref_node(c, jeb, (void *)node, ofs, s);
842 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
845 } else if (jeb->first_node) {
846 printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset);
847 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
851 jffs2_link_node_ref(c, jeb, ofs | REF_NORMAL, c->cleanmarker_size, NULL);
860 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
872 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
883 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
891 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(node->totlen)), NULL);
903 if (PAD(s->sum_size + JFFS2_SUMMARY_FRAME_SIZE) > jeb->free_size) {
905 "summary information, disabling for this jeb!\n");
911 jeb->offset,jeb->free_size, jeb->dirty_size, jeb->unchecked_size, jeb->used_size, jeb->wasted_size));
914 if (jeb->wasted_size) {
915 jeb->dirty_size += jeb->wasted_size;
916 c->dirty_size += jeb->wasted_size;
917 c->wasted_size -= jeb->wasted_size;
918 jeb->wasted_size = 0;
921 return jffs2_scan_classify_jeb(c, jeb);
950 static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
977 return jffs2_scan_dirty_space(c, jeb,
989 jffs2_link_node_ref(c, jeb, ofs | REF_UNCHECKED, PAD(je32_to_cpu(ri->totlen)), ic);
999 jffs2_sum_add_inode_mem(s, ri, ofs - jeb->offset);
1005 static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
1024 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
1051 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
1061 fd->raw = jffs2_link_node_ref(c, jeb, ofs | dirent_node_state(rd),
1072 jffs2_sum_add_dirent_mem(s, rd, ofs - jeb->offset);