Lines Matching refs:c
23 first_inode_chain(int *i, struct jffs2_sb_info *c) in first_inode_chain() argument
26 if (c->inocache_list[*i]) in first_inode_chain()
27 return c->inocache_list[*i]; in first_inode_chain()
33 next_inode(int *i, struct jffs2_inode_cache *ic, struct jffs2_sb_info *c) in next_inode() argument
39 return first_inode_chain(i, c); in next_inode()
42 #define for_each_inode(i, c, ic) \ argument
43 for (i = 0, ic = first_inode_chain(&i, (c)); \
45 ic = next_inode(&i, ic, (c)))
48 static void jffs2_build_inode_pass1(struct jffs2_sb_info *c, in jffs2_build_inode_pass1() argument
63 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_inode_pass1()
67 jffs2_mark_node_obsolete(c, fd->raw); in jffs2_build_inode_pass1()
92 static int jffs2_build_filesystem(struct jffs2_sb_info *c) in jffs2_build_filesystem() argument
105 c->flags |= JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
106 ret = jffs2_scan_medium(c); in jffs2_build_filesystem()
107 c->flags &= ~JFFS2_SB_FLAG_SCANNING; in jffs2_build_filesystem()
112 jffs2_dbg_dump_block_lists_nolock(c); in jffs2_build_filesystem()
115 c->flags |= JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
117 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
119 jffs2_build_inode_pass1(c, ic); in jffs2_build_filesystem()
133 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
137 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
147 ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_filesystem()
150 jffs2_build_remove_unlinked_inode(c, ic, &dead_fds); in jffs2_build_filesystem()
158 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
167 jffs2_build_xattr_subsystem(c); in jffs2_build_filesystem()
168 c->flags &= ~JFFS2_SB_FLAG_BUILDING; in jffs2_build_filesystem()
173 jffs2_rotate_lists(c); in jffs2_build_filesystem()
179 for_each_inode(i, c, ic) { in jffs2_build_filesystem()
186 jffs2_clear_xattr_subsystem(c); in jffs2_build_filesystem()
192 static void jffs2_build_remove_unlinked_inode(struct jffs2_sb_info *c, in jffs2_build_remove_unlinked_inode() argument
205 jffs2_mark_node_obsolete(c, raw); in jffs2_build_remove_unlinked_inode()
230 child_ic = jffs2_get_ino_cache(c, fd->ino); in jffs2_build_remove_unlinked_inode()
265 static void jffs2_calc_trigger_levels(struct jffs2_sb_info *c) in jffs2_calc_trigger_levels() argument
272 c->resv_blocks_deletion = 2; in jffs2_calc_trigger_levels()
279 size = c->flash_size / 50; /* 2% of flash size */ in jffs2_calc_trigger_levels()
280 size += c->nr_blocks * 100; /* And 100 bytes per eraseblock */ in jffs2_calc_trigger_levels()
281 size += c->sector_size - 1; /* ... and round up */ in jffs2_calc_trigger_levels()
283 c->resv_blocks_write = c->resv_blocks_deletion + (size / c->sector_size); in jffs2_calc_trigger_levels()
287 c->resv_blocks_gctrigger = c->resv_blocks_write + 1; in jffs2_calc_trigger_levels()
291 c->resv_blocks_gcmerge = c->resv_blocks_deletion + 1; in jffs2_calc_trigger_levels()
295 c->resv_blocks_gcbad = 0;//c->resv_blocks_deletion + 2; in jffs2_calc_trigger_levels()
301 c->vdirty_blocks_gctrigger = c->resv_blocks_gctrigger; in jffs2_calc_trigger_levels()
302 if (jffs2_can_mark_obsolete(c)) in jffs2_calc_trigger_levels()
303 c->vdirty_blocks_gctrigger *= 10; in jffs2_calc_trigger_levels()
307 c->nospc_dirty_size = c->sector_size + (c->flash_size / 100); in jffs2_calc_trigger_levels()
310 c->flash_size / 1024, c->sector_size / 1024, c->nr_blocks); in jffs2_calc_trigger_levels()
312 c->resv_blocks_deletion, c->resv_blocks_deletion*c->sector_size/1024); in jffs2_calc_trigger_levels()
314 c->resv_blocks_write, c->resv_blocks_write*c->sector_size/1024); in jffs2_calc_trigger_levels()
316 c->resv_blocks_gctrigger, c->resv_blocks_gctrigger*c->sector_size/1024); in jffs2_calc_trigger_levels()
318 c->resv_blocks_gcmerge, c->resv_blocks_gcmerge*c->sector_size/1024); in jffs2_calc_trigger_levels()
320 c->resv_blocks_gcbad, c->resv_blocks_gcbad*c->sector_size/1024); in jffs2_calc_trigger_levels()
322 c->nospc_dirty_size); in jffs2_calc_trigger_levels()
324 c->vdirty_blocks_gctrigger); in jffs2_calc_trigger_levels()
327 int jffs2_do_mount_fs(struct jffs2_sb_info *c) in jffs2_do_mount_fs() argument
333 c->free_size = c->flash_size; in jffs2_do_mount_fs()
334 c->nr_blocks = c->flash_size / c->sector_size; in jffs2_do_mount_fs()
335 size = sizeof(struct jffs2_eraseblock) * c->nr_blocks; in jffs2_do_mount_fs()
337 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
338 c->blocks = vmalloc(size); in jffs2_do_mount_fs()
341 c->blocks = kmalloc(size, GFP_KERNEL); in jffs2_do_mount_fs()
342 if (!c->blocks) in jffs2_do_mount_fs()
345 memset(c->blocks, 0, size); in jffs2_do_mount_fs()
346 for (i=0; i<c->nr_blocks; i++) { in jffs2_do_mount_fs()
347 INIT_LIST_HEAD(&c->blocks[i].list); in jffs2_do_mount_fs()
348 c->blocks[i].offset = i * c->sector_size; in jffs2_do_mount_fs()
349 c->blocks[i].free_size = c->sector_size; in jffs2_do_mount_fs()
352 INIT_LIST_HEAD(&c->clean_list); in jffs2_do_mount_fs()
353 INIT_LIST_HEAD(&c->very_dirty_list); in jffs2_do_mount_fs()
354 INIT_LIST_HEAD(&c->dirty_list); in jffs2_do_mount_fs()
355 INIT_LIST_HEAD(&c->erasable_list); in jffs2_do_mount_fs()
356 INIT_LIST_HEAD(&c->erasing_list); in jffs2_do_mount_fs()
357 INIT_LIST_HEAD(&c->erase_checking_list); in jffs2_do_mount_fs()
358 INIT_LIST_HEAD(&c->erase_pending_list); in jffs2_do_mount_fs()
359 INIT_LIST_HEAD(&c->erasable_pending_wbuf_list); in jffs2_do_mount_fs()
360 INIT_LIST_HEAD(&c->erase_complete_list); in jffs2_do_mount_fs()
361 INIT_LIST_HEAD(&c->free_list); in jffs2_do_mount_fs()
362 INIT_LIST_HEAD(&c->bad_list); in jffs2_do_mount_fs()
363 INIT_LIST_HEAD(&c->bad_used_list); in jffs2_do_mount_fs()
364 c->highest_ino = 1; in jffs2_do_mount_fs()
365 c->summary = NULL; in jffs2_do_mount_fs()
367 ret = jffs2_sum_init(c); in jffs2_do_mount_fs()
371 if (jffs2_build_filesystem(c)) { in jffs2_do_mount_fs()
373 jffs2_free_ino_caches(c); in jffs2_do_mount_fs()
374 jffs2_free_raw_node_refs(c); in jffs2_do_mount_fs()
379 jffs2_calc_trigger_levels(c); in jffs2_do_mount_fs()
385 if (jffs2_blocks_use_vmalloc(c)) in jffs2_do_mount_fs()
386 vfree(c->blocks); in jffs2_do_mount_fs()
389 kfree(c->blocks); in jffs2_do_mount_fs()