Lines Matching refs:c
26 first_inode_chain(int *i, struct jffs2_sb_info *c) in first_inode_chain() argument
28 for (; *i < c->inocache_hashsize; (*i)++) { in first_inode_chain()
29 if (c->inocache_list[*i]) in first_inode_chain()
30 return c->inocache_list[*i]; in first_inode_chain()
36 next_inode(int *i, struct jffs2_inode_cache *ic, struct jffs2_sb_info *c) in next_inode() argument
42 return first_inode_chain(i, c); in next_inode()
45 #define for_each_inode(i, c, ic) \ argument
46 for (i = 0, ic = first_inode_chain(&i, (c)); \
48 ic = next_inode(&i, ic, (c)))
51 static void jffs2_build_inode_pass1(struct jffs2_sb_info *c, in jffs2_build_inode_pass1() argument
67 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_inode_pass1()
71 jffs2_mark_node_obsolete(c, fd->raw); in jffs2_build_inode_pass1()
98 static int jffs2_build_filesystem(struct jffs2_sb_info *c) in jffs2_build_filesystem() argument
110 c->flags |= JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
111 ret = jffs2_scan_medium(c); in jffs2_build_filesystem()
112 c->flags &= ~JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
117 jffs2_dbg_dump_block_lists_nolock(c); in jffs2_build_filesystem()
120 c->flags |= JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
122 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
124 jffs2_build_inode_pass1(c, ic, &dir_hardlinks); in jffs2_build_filesystem()
138 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
142 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
152 ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_filesystem()
155 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
169 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
177 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
213 jffs2_build_xattr_subsystem(c); in jffs2_build_filesystem()
214 c->flags &= ~JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
219 jffs2_rotate_lists(c); in jffs2_build_filesystem()
225 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
232 jffs2_clear_xattr_subsystem(c); in jffs2_build_filesystem()
238 static void jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *c, in jffs2_build_remove_unlinked_inode() argument
251 jffs2_mark_node_obsolete(c, raw); in jffs2_build_remove_unlinked_inode()
276 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_remove_unlinked_inode()
307 static void jffs2_calc_trigger_levels(struct jffs2_sb_info *c) in jffs2_calc_trigger_levels() argument
314 c->resv_blocks_deletion = 2; in jffs2_calc_trigger_levels()
321 size = c->flash_size / 50; /* 2% of flash size */ in jffs2_calc_trigger_levels()
322 size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */ in jffs2_calc_trigger_levels()
323 size += c->sector_size - 1; /* ... and round up */ in jffs2_calc_trigger_levels()
325 c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size); in jffs2_calc_trigger_levels()
329 c->resv_blocks_gctrigger = c->resv_blocks_write + 1; in jffs2_calc_trigger_levels()
333 c->resv_blocks_gcmerge = c->resv_blocks_deletion + 1; in jffs2_calc_trigger_levels()
337 c->resv_blocks_gcbad = 0;//c->resv_blocks_deletion + 2; in jffs2_calc_trigger_levels()
343 c->vdirty_blocks_gctrigger = c->resv_blocks_gctrigger; in jffs2_calc_trigger_levels()
344 if (jffs2_can_mark_obsolete(c)) in jffs2_calc_trigger_levels()
345 c->vdirty_blocks_gctrigger *= 10; in jffs2_calc_trigger_levels()
349 c->nospc_dirty_size = c->sector_size + (c->flash_size / 100); in jffs2_calc_trigger_levels()
352 c->flash_size / 1024, c->sector_size / 1024, c->nr_blocks); in jffs2_calc_trigger_levels()
354 c->resv_blocks_deletion, c->resv_blocks_deletion*c->sector_size/1024); in jffs2_calc_trigger_levels()
356 c->resv_blocks_write, c->resv_blocks_write*c->sector_size/1024); in jffs2_calc_trigger_levels()
358 c->resv_blocks_gctrigger, c->resv_blocks_gctrigger*c->sector_size/1024); in jffs2_calc_trigger_levels()
360 c->resv_blocks_gcmerge, c->resv_blocks_gcmerge*c->sector_size/1024); in jffs2_calc_trigger_levels()
362 c->resv_blocks_gcbad, c->resv_blocks_gcbad*c->sector_size/1024); in jffs2_calc_trigger_levels()
364 c->nospc_dirty_size); in jffs2_calc_trigger_levels()
366 c->vdirty_blocks_gctrigger); in jffs2_calc_trigger_levels()
369 int jffs2_do_mount_fs(struct jffs2_sb_info *c) in jffs2_do_mount_fs() argument
375 c->free_size = c->flash_size; in jffs2_do_mount_fs()
376 c->nr_blocks = c->flash_size / c->sector_size; in jffs2_do_mount_fs()
377 size = sizeof(struct jffs2_eraseblock) * c->nr_blocks; in jffs2_do_mount_fs()
379 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
380 c->blocks = vzalloc(size); in jffs2_do_mount_fs()
383 c->blocks = kzalloc(size, GFP_KERNEL); in jffs2_do_mount_fs()
384 if (!c->blocks) in jffs2_do_mount_fs()
387 for (i=0; i<c->nr_blocks; i++) { in jffs2_do_mount_fs()
388 INIT_LIST_HEAD(&c->blocks[i].list); in jffs2_do_mount_fs()
389 c->blocks[i].offset = i * c->sector_size; in jffs2_do_mount_fs()
390 c->blocks[i].free_size = c->sector_size; in jffs2_do_mount_fs()
393 INIT_LIST_HEAD(&c->clean_list); in jffs2_do_mount_fs()
394 INIT_LIST_HEAD(&c->very_dirty_list); in jffs2_do_mount_fs()
395 INIT_LIST_HEAD(&c->dirty_list); in jffs2_do_mount_fs()
396 INIT_LIST_HEAD(&c->erasable_list); in jffs2_do_mount_fs()
397 INIT_LIST_HEAD(&c->erasing_list); in jffs2_do_mount_fs()
398 INIT_LIST_HEAD(&c->erase_checking_list); in jffs2_do_mount_fs()
399 INIT_LIST_HEAD(&c->erase_pending_list); in jffs2_do_mount_fs()
400 INIT_LIST_HEAD(&c->erasable_pending_wbuf_list); in jffs2_do_mount_fs()
401 INIT_LIST_HEAD(&c->erase_complete_list); in jffs2_do_mount_fs()
402 INIT_LIST_HEAD(&c->free_list); in jffs2_do_mount_fs()
403 INIT_LIST_HEAD(&c->bad_list); in jffs2_do_mount_fs()
404 INIT_LIST_HEAD(&c->bad_used_list); in jffs2_do_mount_fs()
405 c->highest_ino = 1; in jffs2_do_mount_fs()
406 c->summary = NULL; in jffs2_do_mount_fs()
408 ret = jffs2_sum_init(c); in jffs2_do_mount_fs()
412 if (jffs2_build_filesystem(c)) { in jffs2_do_mount_fs()
414 jffs2_free_ino_caches(c); in jffs2_do_mount_fs()
415 jffs2_free_raw_node_refs(c); in jffs2_do_mount_fs()
420 jffs2_calc_trigger_levels(c); in jffs2_do_mount_fs()
426 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
427 vfree(c->blocks); in jffs2_do_mount_fs()
430 kfree(c->blocks); in jffs2_do_mount_fs()