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 --- |