recovery.c (9e1e6df412a28cdbbd2909de5c6189eda4a3383d) recovery.c (aaec2b1d18792a5f27b69ff37f34f43f89f5aa3b)
1/*
2 * fs/f2fs/recovery.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

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

622
623 if (err) {
624 truncate_inode_pages_final(NODE_MAPPING(sbi));
625 truncate_inode_pages_final(META_MAPPING(sbi));
626 }
627
628 clear_sbi_flag(sbi, SBI_POR_DOING);
629 if (err)
1/*
2 * fs/f2fs/recovery.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

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

622
623 if (err) {
624 truncate_inode_pages_final(NODE_MAPPING(sbi));
625 truncate_inode_pages_final(META_MAPPING(sbi));
626 }
627
628 clear_sbi_flag(sbi, SBI_POR_DOING);
629 if (err)
630 set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG);
630 set_ckpt_flags(sbi, CP_ERROR_FLAG);
631 mutex_unlock(&sbi->cp_mutex);
632
633 /* let's drop all the directory inodes for clean checkpoint */
634 destroy_fsync_dnodes(&dir_list);
635
636 if (!err && need_writecp) {
637 struct cp_control cpc = {
638 .reason = CP_RECOVERY,
639 };
640 err = write_checkpoint(sbi, &cpc);
641 }
642
643 kmem_cache_destroy(fsync_entry_slab);
644 return ret ? ret: err;
645}
631 mutex_unlock(&sbi->cp_mutex);
632
633 /* let's drop all the directory inodes for clean checkpoint */
634 destroy_fsync_dnodes(&dir_list);
635
636 if (!err && need_writecp) {
637 struct cp_control cpc = {
638 .reason = CP_RECOVERY,
639 };
640 err = write_checkpoint(sbi, &cpc);
641 }
642
643 kmem_cache_destroy(fsync_entry_slab);
644 return ret ? ret: err;
645}