• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/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);
139 struct jffs2_eraseblock *jeb = &c->blocks[i];
146 ret = jffs2_scan_eraseblock(c, jeb, buf_size?flashbuf:(flashbuf+jeb->offset),
152 jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
165 list_add(&jeb->list, &c->erase_pending_list);
171 if (!jeb->dirty_size) {
173 list_add(&jeb->list, &c->free_list);
177 D1(printk(KERN_DEBUG "Adding all-dirty block at 0x%08x to erase_pending_list\n", jeb->offset));
178 list_add(&jeb->list, &c->erase_pending_list);
185 list_add(&jeb->list, &c->clean_list);
192 if (jeb->free_size > min_free(c) &&
193 (!c->nextblock || c->nextblock->free_size < jeb->free_size)) {
204 D1(printk(KERN_DEBUG "jffs2_scan_medium(): new nextblock = 0x%08x\n", jeb->offset));
205 c->nextblock = jeb;
207 ret = file_dirty(c, jeb);
216 D1(printk(KERN_NOTICE "JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n", jeb->offset));
217 list_add(&jeb->list, &c->erase_pending_list);
222 D1(printk(KERN_NOTICE "JFFS2: Block at 0x%08x is bad\n", jeb->offset));
223 list_add(&jeb->list, &c->bad_list);
296 int jffs2_scan_classify_jeb(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
298 if ((jeb->used_size + jeb->unchecked_size) == PAD(c->cleanmarker_size) && !jeb->dirty_size
299 && (!jeb->first_node || !ref_next(jeb->first_node)) )
303 else if (!ISDIRTY(c->sector_size - (jeb->used_size + jeb->unchecked_size))) {
304 c->dirty_size -= jeb->dirty_size;
305 c->wasted_size += jeb->dirty_size;
306 jeb->wasted_size += jeb->dirty_size;
307 jeb->dirty_size = 0;
309 } else if (jeb->used_size || jeb->unchecked_size)
316 static int jffs2_scan_xattr_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
328 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rx->totlen))))
341 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rx->totlen))))
352 = jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, totlen, NULL);
362 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, totlen, (void *)xd);
366 jffs2_sum_add_xattr_mem(s, rx, ofs - jeb->offset);
372 static int jffs2_scan_xref_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
384 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rr->totlen)))))
393 if ((err = jffs2_scan_dirty_space(c, jeb, je32_to_cpu(rr->totlen))))
419 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(rr->totlen)), (void *)ref);
422 jffs2_sum_add_xref_mem(s, rr, ofs - jeb->offset);
431 static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
445 ofs = jeb->offset;
446 prevofs = jeb->offset - 1;
454 if (c->mtd->block_isbad(c->mtd, jeb->offset))
457 ret = jffs2_check_nand_cleanmarker(c, jeb);
492 jeb->offset + c->sector_size - buf_len,
513 jeb->offset + c->sector_size - sumlen,
523 err = jffs2_sum_scan_sumnode(c, jeb, sumptr, sumlen, &pseudo_random);
536 buf_ofs = jeb->offset;
548 /* We temporarily use 'ofs' as a pointer into the buffer/jeb */
559 int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound);
568 D1(printk(KERN_DEBUG "Block at 0x%08x is empty (erased)\n", jeb->offset));
575 D1(printk(KERN_DEBUG "Free space at %08x ends at %08x\n", jeb->offset,
576 jeb->offset + ofs));
577 if ((err = jffs2_prealloc_raw_node_refs(c, jeb, 1)))
579 if ((err = jffs2_scan_dirty_space(c, jeb, ofs)))
584 ofs += jeb->offset;
588 dbg_summary("no summary found in jeb 0x%08x. Apply original scan.\n",jeb->offset);
591 while(ofs < jeb->offset + c->sector_size) {
593 jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
596 err = jffs2_prealloc_raw_node_refs(c, jeb, 2);
609 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
616 if (jeb->offset + c->sector_size < ofs + sizeof(*node)) {
618 jeb->offset, c->sector_size, ofs, sizeof(*node)));
619 if ((err = jffs2_scan_dirty_space(c, jeb, (jeb->offset + c->sector_size)-ofs)))
625 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
651 if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
664 if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&
665 c->cleanmarker_size && !jeb->dirty_size && !ref_next(jeb->first_node)) {
675 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
693 if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) {
695 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
702 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
710 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
720 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
738 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
744 if (ofs + je32_to_cpu(node->totlen) > jeb->offset + c->sector_size) {
749 if ((err = jffs2_scan_dirty_space(c, jeb, 4)))
758 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
767 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
776 err = jffs2_scan_inode_node(c, jeb, (void *)node, ofs, s);
783 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
792 err = jffs2_scan_dirent_node(c, jeb, (void *)node, ofs, s);
800 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
810 err = jffs2_scan_xattr_node(c, jeb, (void *)node, ofs, s);
817 buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
827 err = jffs2_scan_xref_node(c, jeb, (void *)node, ofs, s);
839 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
842 } else if (jeb->first_node) {
843 printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset);
844 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
848 jffs2_link_node_ref(c, jeb, ofs | REF_NORMAL, c->cleanmarker_size, NULL);
857 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
869 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
880 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))
888 jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(node->totlen)), NULL);
900 if (PAD(s->sum_size + JFFS2_SUMMARY_FRAME_SIZE) > jeb->free_size) {
902 "summary information, disabling for this jeb!\n");
908 jeb->offset,jeb->free_size, jeb->dirty_size, jeb->unchecked_size, jeb->used_size, jeb->wasted_size));
911 if (jeb->wasted_size) {
912 jeb->dirty_size += jeb->wasted_size;
913 c->dirty_size += jeb->wasted_size;
914 c->wasted_size -= jeb->wasted_size;
915 jeb->wasted_size = 0;
918 return jffs2_scan_classify_jeb(c, jeb);
947 static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
974 return jffs2_scan_dirty_space(c, jeb,
986 jffs2_link_node_ref(c, jeb, ofs | REF_UNCHECKED, PAD(je32_to_cpu(ri->totlen)), ic);
996 jffs2_sum_add_inode_mem(s, ri, ofs - jeb->offset);
1002 static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb,
1020 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
1041 if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))
1051 fd->raw = jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(rd->totlen)), ic);
1061 jffs2_sum_add_dirent_mem(s, rd, ofs - jeb->offset);