super.c (5c57132eaf5265937e46340bfbfb97ffb078c423) super.c (dc6b20551044a05cd4d8ad2356a6bd888570f52a)
1/*
2 * fs/f2fs/super.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 635 unchanged lines hidden (view full) ---

644 iput(sbi->meta_inode);
645
646 /* destroy f2fs internal modules */
647 destroy_node_manager(sbi);
648 destroy_segment_manager(sbi);
649
650 kfree(sbi->ckpt);
651
1/*
2 * fs/f2fs/super.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

--- 635 unchanged lines hidden (view full) ---

644 iput(sbi->meta_inode);
645
646 /* destroy f2fs internal modules */
647 destroy_node_manager(sbi);
648 destroy_segment_manager(sbi);
649
650 kfree(sbi->ckpt);
651
652 f2fs_exit_sysfs(sbi);
652 f2fs_unregister_sysfs(sbi);
653
654 sb->s_fs_info = NULL;
655 if (sbi->s_chksum_driver)
656 crypto_free_shash(sbi->s_chksum_driver);
657 kfree(sbi->raw_super);
658
659 destroy_device_list(sbi);
660 mempool_destroy(sbi->write_io_dummy);

--- 1479 unchanged lines hidden (view full) ---

2140 }
2141
2142 sb->s_root = d_make_root(root); /* allocate root dentry */
2143 if (!sb->s_root) {
2144 err = -ENOMEM;
2145 goto free_root_inode;
2146 }
2147
653
654 sb->s_fs_info = NULL;
655 if (sbi->s_chksum_driver)
656 crypto_free_shash(sbi->s_chksum_driver);
657 kfree(sbi->raw_super);
658
659 destroy_device_list(sbi);
660 mempool_destroy(sbi->write_io_dummy);

--- 1479 unchanged lines hidden (view full) ---

2140 }
2141
2142 sb->s_root = d_make_root(root); /* allocate root dentry */
2143 if (!sb->s_root) {
2144 err = -ENOMEM;
2145 goto free_root_inode;
2146 }
2147
2148 err = f2fs_init_sysfs(sbi);
2148 err = f2fs_register_sysfs(sbi);
2149 if (err)
2150 goto free_root_inode;
2151
2152 /* recover fsynced data */
2153 if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) {
2154 /*
2155 * mount should be failed, when device has readonly mode, and
2156 * previous checkpoint was not done by clean system shutdown.

--- 54 unchanged lines hidden (view full) ---

2211 f2fs_msg(sbi->sb, KERN_NOTICE, "Mounted with checkpoint version = %llx",
2212 cur_cp_version(F2FS_CKPT(sbi)));
2213 f2fs_update_time(sbi, CP_TIME);
2214 f2fs_update_time(sbi, REQ_TIME);
2215 return 0;
2216
2217free_sysfs:
2218 f2fs_sync_inode_meta(sbi);
2149 if (err)
2150 goto free_root_inode;
2151
2152 /* recover fsynced data */
2153 if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) {
2154 /*
2155 * mount should be failed, when device has readonly mode, and
2156 * previous checkpoint was not done by clean system shutdown.

--- 54 unchanged lines hidden (view full) ---

2211 f2fs_msg(sbi->sb, KERN_NOTICE, "Mounted with checkpoint version = %llx",
2212 cur_cp_version(F2FS_CKPT(sbi)));
2213 f2fs_update_time(sbi, CP_TIME);
2214 f2fs_update_time(sbi, REQ_TIME);
2215 return 0;
2216
2217free_sysfs:
2218 f2fs_sync_inode_meta(sbi);
2219 f2fs_exit_sysfs(sbi);
2219 f2fs_unregister_sysfs(sbi);
2220free_root_inode:
2221 dput(sb->s_root);
2222 sb->s_root = NULL;
2223free_node_inode:
2224 truncate_inode_pages_final(NODE_MAPPING(sbi));
2225 mutex_lock(&sbi->umount_mutex);
2226 release_ino_entry(sbi, true);
2227 f2fs_leave_shrinker(sbi);

--- 101 unchanged lines hidden (view full) ---

2329 if (err)
2330 goto free_node_manager_caches;
2331 err = create_checkpoint_caches();
2332 if (err)
2333 goto free_segment_manager_caches;
2334 err = create_extent_cache();
2335 if (err)
2336 goto free_checkpoint_caches;
2220free_root_inode:
2221 dput(sb->s_root);
2222 sb->s_root = NULL;
2223free_node_inode:
2224 truncate_inode_pages_final(NODE_MAPPING(sbi));
2225 mutex_lock(&sbi->umount_mutex);
2226 release_ino_entry(sbi, true);
2227 f2fs_leave_shrinker(sbi);

--- 101 unchanged lines hidden (view full) ---

2329 if (err)
2330 goto free_node_manager_caches;
2331 err = create_checkpoint_caches();
2332 if (err)
2333 goto free_segment_manager_caches;
2334 err = create_extent_cache();
2335 if (err)
2336 goto free_checkpoint_caches;
2337 err = f2fs_register_sysfs();
2337 err = f2fs_init_sysfs();
2338 if (err)
2339 goto free_extent_cache;
2340 err = register_shrinker(&f2fs_shrinker_info);
2341 if (err)
2342 goto free_sysfs;
2343 err = register_filesystem(&f2fs_fs_type);
2344 if (err)
2345 goto free_shrinker;
2346 err = f2fs_create_root_stats();
2347 if (err)
2348 goto free_filesystem;
2349 return 0;
2350
2351free_filesystem:
2352 unregister_filesystem(&f2fs_fs_type);
2353free_shrinker:
2354 unregister_shrinker(&f2fs_shrinker_info);
2355free_sysfs:
2338 if (err)
2339 goto free_extent_cache;
2340 err = register_shrinker(&f2fs_shrinker_info);
2341 if (err)
2342 goto free_sysfs;
2343 err = register_filesystem(&f2fs_fs_type);
2344 if (err)
2345 goto free_shrinker;
2346 err = f2fs_create_root_stats();
2347 if (err)
2348 goto free_filesystem;
2349 return 0;
2350
2351free_filesystem:
2352 unregister_filesystem(&f2fs_fs_type);
2353free_shrinker:
2354 unregister_shrinker(&f2fs_shrinker_info);
2355free_sysfs:
2356 f2fs_unregister_sysfs();
2356 f2fs_exit_sysfs();
2357free_extent_cache:
2358 destroy_extent_cache();
2359free_checkpoint_caches:
2360 destroy_checkpoint_caches();
2361free_segment_manager_caches:
2362 destroy_segment_manager_caches();
2363free_node_manager_caches:
2364 destroy_node_manager_caches();
2365free_inodecache:
2366 destroy_inodecache();
2367fail:
2368 return err;
2369}
2370
2371static void __exit exit_f2fs_fs(void)
2372{
2373 f2fs_destroy_root_stats();
2374 unregister_filesystem(&f2fs_fs_type);
2375 unregister_shrinker(&f2fs_shrinker_info);
2357free_extent_cache:
2358 destroy_extent_cache();
2359free_checkpoint_caches:
2360 destroy_checkpoint_caches();
2361free_segment_manager_caches:
2362 destroy_segment_manager_caches();
2363free_node_manager_caches:
2364 destroy_node_manager_caches();
2365free_inodecache:
2366 destroy_inodecache();
2367fail:
2368 return err;
2369}
2370
2371static void __exit exit_f2fs_fs(void)
2372{
2373 f2fs_destroy_root_stats();
2374 unregister_filesystem(&f2fs_fs_type);
2375 unregister_shrinker(&f2fs_shrinker_info);
2376 f2fs_unregister_sysfs();
2376 f2fs_exit_sysfs();
2377 destroy_extent_cache();
2378 destroy_checkpoint_caches();
2379 destroy_segment_manager_caches();
2380 destroy_node_manager_caches();
2381 destroy_inodecache();
2382 f2fs_destroy_trace_ios();
2383}
2384
2385module_init(init_f2fs_fs)
2386module_exit(exit_f2fs_fs)
2387
2388MODULE_AUTHOR("Samsung Electronics's Praesto Team");
2389MODULE_DESCRIPTION("Flash Friendly File System");
2390MODULE_LICENSE("GPL");
2391
2377 destroy_extent_cache();
2378 destroy_checkpoint_caches();
2379 destroy_segment_manager_caches();
2380 destroy_node_manager_caches();
2381 destroy_inodecache();
2382 f2fs_destroy_trace_ios();
2383}
2384
2385module_init(init_f2fs_fs)
2386module_exit(exit_f2fs_fs)
2387
2388MODULE_AUTHOR("Samsung Electronics's Praesto Team");
2389MODULE_DESCRIPTION("Flash Friendly File System");
2390MODULE_LICENSE("GPL");
2391