checkpoint.c (36951b38d13ac7cce9fcf89e0e01c22ed0d05688) checkpoint.c (8508e44ae98622f841f5ef29d0bf3d5db4e0c1cc)
1/*
2 * fs/f2fs/checkpoint.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

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

767
768 cp_block = (struct f2fs_checkpoint *)page_address(cur_page);
769 memcpy(sbi->ckpt, cp_block, blk_size);
770
771 /* Sanity checking of checkpoint */
772 if (sanity_check_ckpt(sbi))
773 goto fail_no_cp;
774
1/*
2 * fs/f2fs/checkpoint.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

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

767
768 cp_block = (struct f2fs_checkpoint *)page_address(cur_page);
769 memcpy(sbi->ckpt, cp_block, blk_size);
770
771 /* Sanity checking of checkpoint */
772 if (sanity_check_ckpt(sbi))
773 goto fail_no_cp;
774
775 if (cur_page == cp1)
776 sbi->cur_cp_pack = 1;
777 else
778 sbi->cur_cp_pack = 2;
779
775 if (cp_blks <= 1)
776 goto done;
777
778 cp_blk_no = le32_to_cpu(fsb->cp_blkaddr);
779 if (cur_page == cp2)
780 cp_blk_no += 1 << le32_to_cpu(fsb->log_blocks_per_seg);
781
782 for (i = 1; i < cp_blks; i++) {

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

1122 get_sit_bitmap(sbi, __bitmap_ptr(sbi, SIT_BITMAP));
1123 get_nat_bitmap(sbi, __bitmap_ptr(sbi, NAT_BITMAP));
1124
1125 crc32 = f2fs_crc32(sbi, ckpt, le32_to_cpu(ckpt->checksum_offset));
1126 *((__le32 *)((unsigned char *)ckpt +
1127 le32_to_cpu(ckpt->checksum_offset)))
1128 = cpu_to_le32(crc32);
1129
780 if (cp_blks <= 1)
781 goto done;
782
783 cp_blk_no = le32_to_cpu(fsb->cp_blkaddr);
784 if (cur_page == cp2)
785 cp_blk_no += 1 << le32_to_cpu(fsb->log_blocks_per_seg);
786
787 for (i = 1; i < cp_blks; i++) {

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

1127 get_sit_bitmap(sbi, __bitmap_ptr(sbi, SIT_BITMAP));
1128 get_nat_bitmap(sbi, __bitmap_ptr(sbi, NAT_BITMAP));
1129
1130 crc32 = f2fs_crc32(sbi, ckpt, le32_to_cpu(ckpt->checksum_offset));
1131 *((__le32 *)((unsigned char *)ckpt +
1132 le32_to_cpu(ckpt->checksum_offset)))
1133 = cpu_to_le32(crc32);
1134
1130 start_blk = __start_cp_addr(sbi);
1135 start_blk = __start_cp_next_addr(sbi);
1131
1132 /* need to wait for end_io results */
1133 wait_on_all_pages_writeback(sbi);
1134 if (unlikely(f2fs_cp_error(sbi)))
1135 return -EIO;
1136
1137 /* write out checkpoint buffer at block 0 */
1138 update_meta_page(sbi, ckpt, start_blk++);

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

1185
1186 release_ino_entry(sbi, false);
1187
1188 if (unlikely(f2fs_cp_error(sbi)))
1189 return -EIO;
1190
1191 clear_sbi_flag(sbi, SBI_IS_DIRTY);
1192 clear_sbi_flag(sbi, SBI_NEED_CP);
1136
1137 /* need to wait for end_io results */
1138 wait_on_all_pages_writeback(sbi);
1139 if (unlikely(f2fs_cp_error(sbi)))
1140 return -EIO;
1141
1142 /* write out checkpoint buffer at block 0 */
1143 update_meta_page(sbi, ckpt, start_blk++);

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

1190
1191 release_ino_entry(sbi, false);
1192
1193 if (unlikely(f2fs_cp_error(sbi)))
1194 return -EIO;
1195
1196 clear_sbi_flag(sbi, SBI_IS_DIRTY);
1197 clear_sbi_flag(sbi, SBI_NEED_CP);
1198 __set_cp_next_pack(sbi);
1193
1194 /*
1195 * redirty superblock if metadata like node page or inode cache is
1196 * updated during writing checkpoint.
1197 */
1198 if (get_pages(sbi, F2FS_DIRTY_NODES) ||
1199 get_pages(sbi, F2FS_DIRTY_IMETA))
1200 set_sbi_flag(sbi, SBI_IS_DIRTY);

--- 126 unchanged lines hidden ---
1199
1200 /*
1201 * redirty superblock if metadata like node page or inode cache is
1202 * updated during writing checkpoint.
1203 */
1204 if (get_pages(sbi, F2FS_DIRTY_NODES) ||
1205 get_pages(sbi, F2FS_DIRTY_IMETA))
1206 set_sbi_flag(sbi, SBI_IS_DIRTY);

--- 126 unchanged lines hidden ---