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 jffs2_build_xattr_subsystem(c); in jffs2_build_filesystem()
215 c->flags &= ~JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
220 jffs2_rotate_lists(c); in jffs2_build_filesystem()
226 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
233 jffs2_clear_xattr_subsystem(c); in jffs2_build_filesystem()
239 static void jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *c, in jffs2_build_remove_unlinked_inode() argument
252 jffs2_mark_node_obsolete(c, raw); in jffs2_build_remove_unlinked_inode()
277 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_remove_unlinked_inode()
308 static void jffs2_calc_trigger_levels(struct jffs2_sb_info *c) in jffs2_calc_trigger_levels() argument
315 c->resv_blocks_deletion = 2; in jffs2_calc_trigger_levels()
322 size = c->flash_size / 50; /* 2% of flash size */ in jffs2_calc_trigger_levels()
323 size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */ in jffs2_calc_trigger_levels()
324 size += c->sector_size - 1; /* ... and round up */ in jffs2_calc_trigger_levels()
326 c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size); in jffs2_calc_trigger_levels()
330 c->resv_blocks_gctrigger = c->resv_blocks_write + 1; in jffs2_calc_trigger_levels()
334 c->resv_blocks_gcmerge = c->resv_blocks_deletion + 1; in jffs2_calc_trigger_levels()
338 c->resv_blocks_gcbad = 0;//c->resv_blocks_deletion + 2; in jffs2_calc_trigger_levels()
344 c->vdirty_blocks_gctrigger = c->resv_blocks_gctrigger; in jffs2_calc_trigger_levels()
345 if (jffs2_can_mark_obsolete(c)) in jffs2_calc_trigger_levels()
346 c->vdirty_blocks_gctrigger *= 10; in jffs2_calc_trigger_levels()
350 c->nospc_dirty_size = c->sector_size + (c->flash_size / 100); in jffs2_calc_trigger_levels()
353 c->flash_size / 1024, c->sector_size / 1024, c->nr_blocks); in jffs2_calc_trigger_levels()
355 c->resv_blocks_deletion, c->resv_blocks_deletion*c->sector_size/1024); in jffs2_calc_trigger_levels()
357 c->resv_blocks_write, c->resv_blocks_write*c->sector_size/1024); in jffs2_calc_trigger_levels()
359 c->resv_blocks_gctrigger, c->resv_blocks_gctrigger*c->sector_size/1024); in jffs2_calc_trigger_levels()
361 c->resv_blocks_gcmerge, c->resv_blocks_gcmerge*c->sector_size/1024); in jffs2_calc_trigger_levels()
363 c->resv_blocks_gcbad, c->resv_blocks_gcbad*c->sector_size/1024); in jffs2_calc_trigger_levels()
365 c->nospc_dirty_size); in jffs2_calc_trigger_levels()
367 c->vdirty_blocks_gctrigger); in jffs2_calc_trigger_levels()
370 int jffs2_do_mount_fs(struct jffs2_sb_info *c) in jffs2_do_mount_fs() argument
376 c->free_size = c->flash_size; in jffs2_do_mount_fs()
377 c->nr_blocks = c->flash_size / c->sector_size; in jffs2_do_mount_fs()
378 size = sizeof(struct jffs2_eraseblock) * c->nr_blocks; in jffs2_do_mount_fs()
380 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
381 c->blocks = vzalloc(size); in jffs2_do_mount_fs()
384 c->blocks = kzalloc(size, GFP_KERNEL); in jffs2_do_mount_fs()
385 if (!c->blocks) in jffs2_do_mount_fs()
388 for (i=0; i<c->nr_blocks; i++) { in jffs2_do_mount_fs()
389 INIT_LIST_HEAD(&c->blocks[i].list); in jffs2_do_mount_fs()
390 c->blocks[i].offset = i * c->sector_size; in jffs2_do_mount_fs()
391 c->blocks[i].free_size = c->sector_size; in jffs2_do_mount_fs()
394 INIT_LIST_HEAD(&c->clean_list); in jffs2_do_mount_fs()
395 INIT_LIST_HEAD(&c->very_dirty_list); in jffs2_do_mount_fs()
396 INIT_LIST_HEAD(&c->dirty_list); in jffs2_do_mount_fs()
397 INIT_LIST_HEAD(&c->erasable_list); in jffs2_do_mount_fs()
398 INIT_LIST_HEAD(&c->erasing_list); in jffs2_do_mount_fs()
399 INIT_LIST_HEAD(&c->erase_checking_list); in jffs2_do_mount_fs()
400 INIT_LIST_HEAD(&c->erase_pending_list); in jffs2_do_mount_fs()
401 INIT_LIST_HEAD(&c->erasable_pending_wbuf_list); in jffs2_do_mount_fs()
402 INIT_LIST_HEAD(&c->erase_complete_list); in jffs2_do_mount_fs()
403 INIT_LIST_HEAD(&c->free_list); in jffs2_do_mount_fs()
404 INIT_LIST_HEAD(&c->bad_list); in jffs2_do_mount_fs()
405 INIT_LIST_HEAD(&c->bad_used_list); in jffs2_do_mount_fs()
406 c->highest_ino = 1; in jffs2_do_mount_fs()
407 c->summary = NULL; in jffs2_do_mount_fs()
409 ret = jffs2_sum_init(c); in jffs2_do_mount_fs()
413 if (jffs2_build_filesystem(c)) { in jffs2_do_mount_fs()
415 jffs2_free_ino_caches(c); in jffs2_do_mount_fs()
416 jffs2_free_raw_node_refs(c); in jffs2_do_mount_fs()
421 jffs2_calc_trigger_levels(c); in jffs2_do_mount_fs()
426 kvfree(c->blocks); in jffs2_do_mount_fs()