Lines Matching refs:jeb

24 static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, uint32_t bad_offset);
25 static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
26 static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
29 struct jffs2_eraseblock *jeb)
34 ret = jffs2_flash_erase(c, jeb);
36 jffs2_erase_succeeded(c, jeb);
39 bad_offset = jeb->offset;
45 jeb->offset, jeb->offset, jeb->offset + c->sector_size);
51 list_move(&jeb->list, &c->erase_pending_list);
54 jeb->dirty_size = c->sector_size;
60 instr->addr = jeb->offset;
65 jffs2_erase_succeeded(c, jeb);
77 jeb->offset, ret);
80 list_move(&jeb->list, &c->erase_pending_list);
83 jeb->dirty_size = c->sector_size;
91 jeb->offset);
94 jeb->offset, ret);
96 jffs2_erase_failed(c, jeb, bad_offset);
101 struct jffs2_eraseblock *jeb;
112 jeb = list_entry(c->erase_complete_list.next, struct jffs2_eraseblock, list);
113 list_move(&jeb->list, &c->erase_checking_list);
116 jffs2_mark_erased_block(c, jeb);
125 jeb = list_entry(c->erase_pending_list.next, struct jffs2_eraseblock, list);
127 jeb->offset);
128 list_del(&jeb->list);
130 c->wasted_size -= jeb->wasted_size;
131 c->free_size -= jeb->free_size;
132 c->used_size -= jeb->used_size;
133 c->dirty_size -= jeb->dirty_size;
134 jeb->wasted_size = jeb->used_size = jeb->dirty_size = jeb->free_size = 0;
135 jffs2_free_jeb_node_refs(c, jeb);
136 list_add(&jeb->list, &c->erasing_list);
140 jffs2_erase_block(c, jeb);
159 static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
161 jffs2_dbg(1, "Erase completed successfully at 0x%08x\n", jeb->offset);
164 list_move_tail(&jeb->list, &c->erase_complete_list);
172 static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, uint32_t bad_offset)
179 if (!jffs2_write_nand_badblock(c, jeb, bad_offset)) {
183 list_move(&jeb->list, &c->erase_pending_list);
186 jeb->dirty_size = c->sector_size;
197 list_move(&jeb->list, &c->bad_list);
207 struct jffs2_raw_node_ref *ref, struct jffs2_eraseblock *jeb)
225 if (SECTOR_ADDR((*prev)->flash_offset) == jeb->offset) {
250 jeb->offset, jeb->offset + c->sector_size, ic->ino);
287 void jffs2_free_jeb_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
291 jeb->offset);
293 block = ref = jeb->first_node;
303 jffs2_remove_node_refs_from_ino_list(c, ref, jeb);
308 jeb->first_node = jeb->last_node = NULL;
311 static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, uint32_t *bad_offset)
319 ret = mtd_point(c->mtd, jeb->offset, c->sector_size, &retlen,
330 mtd_unpoint(c->mtd, jeb->offset, retlen);
339 mtd_unpoint(c->mtd, jeb->offset, c->sector_size);
343 jeb->offset +
353 jeb->offset);
357 jffs2_dbg(1, "Verifying erase at 0x%08x\n", jeb->offset);
359 for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {
360 uint32_t readlen = min((uint32_t)PAGE_SIZE, jeb->offset + c->sector_size - ofs);
398 static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
404 switch (jffs2_block_check_erase(c, jeb, &bad_offset)) {
410 jffs2_dbg(1, "Writing erased marker to block at 0x%08x\n", jeb->offset);
411 bad_offset = jeb->offset;
417 if (jffs2_write_nand_cleanmarker(c, jeb))
429 jffs2_prealloc_raw_node_refs(c, jeb, 1);
435 ret = jffs2_flash_direct_writev(c, vecs, 1, jeb->offset, &retlen);
440 jeb->offset, ret);
443 jeb->offset, sizeof(marker), retlen);
449 jeb->free_size = c->sector_size;
459 jffs2_link_node_ref(c, jeb, jeb->offset | REF_NORMAL, c->cleanmarker_size, NULL);
461 list_move_tail(&jeb->list, &c->free_list);
465 jffs2_dbg_acct_sanity_check_nolock(c, jeb);
466 jffs2_dbg_acct_paranoia_check_nolock(c, jeb);
474 jffs2_erase_failed(c, jeb, bad_offset);
482 list_move(&jeb->list, &c->erase_complete_list);