Lines Matching refs:c

27 first_inode_chain(int *i, struct jffs2_sb_info *c)  in first_inode_chain()  argument
29 for (; *i < c->inocache_hashsize; (*i)++) { in first_inode_chain()
30 if (c->inocache_list[*i]) in first_inode_chain()
31 return c->inocache_list[*i]; in first_inode_chain()
37 next_inode(int *i, struct jffs2_inode_cache *ic, struct jffs2_sb_info *c) in next_inode() argument
43 return first_inode_chain(i, c); in next_inode()
46 #define for_each_inode(i, c, ic) \ argument
47 for (i = 0, ic = first_inode_chain(&i, (c)); \
49 ic = next_inode(&i, ic, (c)))
52 static void jffs2_build_inode_pass1(struct jffs2_sb_info *c, in jffs2_build_inode_pass1() argument
68 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_inode_pass1()
72 jffs2_mark_node_obsolete(c, fd->raw); in jffs2_build_inode_pass1()
99 static int jffs2_build_filesystem(struct jffs2_sb_info *c) in jffs2_build_filesystem() argument
111 c->flags |= JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
112 ret = jffs2_scan_medium(c); in jffs2_build_filesystem()
113 c->flags &= ~JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
118 jffs2_dbg_dump_block_lists_nolock(c); in jffs2_build_filesystem()
121 c->flags |= JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
123 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
125 jffs2_build_inode_pass1(c, ic, &dir_hardlinks); in jffs2_build_filesystem()
139 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
143 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
153 ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_filesystem()
156 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
170 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
178 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
214 ret = jffs2_build_xattr_subsystem(c); in jffs2_build_filesystem()
218 c->flags &= ~JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
223 jffs2_rotate_lists(c); in jffs2_build_filesystem()
229 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
236 jffs2_clear_xattr_subsystem(c); in jffs2_build_filesystem()
242 static void jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *c, in jffs2_build_remove_unlinked_inode() argument
255 jffs2_mark_node_obsolete(c, raw); in jffs2_build_remove_unlinked_inode()
280 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_remove_unlinked_inode()
311 static void jffs2_calc_trigger_levels(struct jffs2_sb_info *c) in jffs2_calc_trigger_levels() argument
318 c->resv_blocks_deletion = 2; in jffs2_calc_trigger_levels()
325 size = c->flash_size / 50; /* 2% of flash size */ in jffs2_calc_trigger_levels()
326 size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */ in jffs2_calc_trigger_levels()
327 size += c->sector_size - 1; /* ... and round up */ in jffs2_calc_trigger_levels()
329 c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size); in jffs2_calc_trigger_levels()
333 c->resv_blocks_gctrigger = c->resv_blocks_write + 1; in jffs2_calc_trigger_levels()
337 c->resv_blocks_gcmerge = c->resv_blocks_deletion + 1; in jffs2_calc_trigger_levels()
341 c->resv_blocks_gcbad = 0;//c->resv_blocks_deletion + 2; in jffs2_calc_trigger_levels()
347 c->vdirty_blocks_gctrigger = c->resv_blocks_gctrigger; in jffs2_calc_trigger_levels()
348 if (jffs2_can_mark_obsolete(c)) in jffs2_calc_trigger_levels()
349 c->vdirty_blocks_gctrigger *= 10; in jffs2_calc_trigger_levels()
353 c->nospc_dirty_size = c->sector_size + (c->flash_size / 100); in jffs2_calc_trigger_levels()
356 c->flash_size / 1024, c->sector_size / 1024, c->nr_blocks); in jffs2_calc_trigger_levels()
358 c->resv_blocks_deletion, c->resv_blocks_deletion*c->sector_size/1024); in jffs2_calc_trigger_levels()
360 c->resv_blocks_write, c->resv_blocks_write*c->sector_size/1024); in jffs2_calc_trigger_levels()
362 c->resv_blocks_gctrigger, c->resv_blocks_gctrigger*c->sector_size/1024); in jffs2_calc_trigger_levels()
364 c->resv_blocks_gcmerge, c->resv_blocks_gcmerge*c->sector_size/1024); in jffs2_calc_trigger_levels()
366 c->resv_blocks_gcbad, c->resv_blocks_gcbad*c->sector_size/1024); in jffs2_calc_trigger_levels()
368 c->nospc_dirty_size); in jffs2_calc_trigger_levels()
370 c->vdirty_blocks_gctrigger); in jffs2_calc_trigger_levels()
373 int jffs2_do_mount_fs(struct jffs2_sb_info *c) in jffs2_do_mount_fs() argument
379 c->free_size = c->flash_size; in jffs2_do_mount_fs()
380 c->nr_blocks = c->flash_size / c->sector_size; in jffs2_do_mount_fs()
381 size = sizeof(struct jffs2_eraseblock) * c->nr_blocks; in jffs2_do_mount_fs()
383 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
384 c->blocks = vzalloc(size); in jffs2_do_mount_fs()
387 c->blocks = kzalloc(size, GFP_KERNEL); in jffs2_do_mount_fs()
388 if (!c->blocks) in jffs2_do_mount_fs()
391 for (i=0; i<c->nr_blocks; i++) { in jffs2_do_mount_fs()
392 INIT_LIST_HEAD(&c->blocks[i].list); in jffs2_do_mount_fs()
393 c->blocks[i].offset = i * c->sector_size; in jffs2_do_mount_fs()
394 c->blocks[i].free_size = c->sector_size; in jffs2_do_mount_fs()
397 INIT_LIST_HEAD(&c->clean_list); in jffs2_do_mount_fs()
398 INIT_LIST_HEAD(&c->very_dirty_list); in jffs2_do_mount_fs()
399 INIT_LIST_HEAD(&c->dirty_list); in jffs2_do_mount_fs()
400 INIT_LIST_HEAD(&c->erasable_list); in jffs2_do_mount_fs()
401 INIT_LIST_HEAD(&c->erasing_list); in jffs2_do_mount_fs()
402 INIT_LIST_HEAD(&c->erase_checking_list); in jffs2_do_mount_fs()
403 INIT_LIST_HEAD(&c->erase_pending_list); in jffs2_do_mount_fs()
404 INIT_LIST_HEAD(&c->erasable_pending_wbuf_list); in jffs2_do_mount_fs()
405 INIT_LIST_HEAD(&c->erase_complete_list); in jffs2_do_mount_fs()
406 INIT_LIST_HEAD(&c->free_list); in jffs2_do_mount_fs()
407 INIT_LIST_HEAD(&c->bad_list); in jffs2_do_mount_fs()
408 INIT_LIST_HEAD(&c->bad_used_list); in jffs2_do_mount_fs()
409 c->highest_ino = 1; in jffs2_do_mount_fs()
410 c->summary = NULL; in jffs2_do_mount_fs()
412 ret = jffs2_sum_init(c); in jffs2_do_mount_fs()
416 if (jffs2_build_filesystem(c)) { in jffs2_do_mount_fs()
418 jffs2_free_ino_caches(c); in jffs2_do_mount_fs()
419 jffs2_free_raw_node_refs(c); in jffs2_do_mount_fs()
424 jffs2_calc_trigger_levels(c); in jffs2_do_mount_fs()
429 jffs2_sum_exit(c); in jffs2_do_mount_fs()
431 kvfree(c->blocks); in jffs2_do_mount_fs()