node.c (55523519bc7227e651fd4febeb3aafdd22b8af1c) | node.c (ced2c7ea8e99b46755a270872cd5ba61c27cffad) |
---|---|
1/* 2 * fs/f2fs/node.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 --- 2448 unchanged lines hidden (view full) --- 2457 2458static int __get_nat_bitmaps(struct f2fs_sb_info *sbi) 2459{ 2460 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); 2461 struct f2fs_nm_info *nm_i = NM_I(sbi); 2462 unsigned int nat_bits_bytes = nm_i->nat_blocks / BITS_PER_BYTE; 2463 unsigned int i; 2464 __u64 cp_ver = cur_cp_version(ckpt); | 1/* 2 * fs/f2fs/node.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 --- 2448 unchanged lines hidden (view full) --- 2457 2458static int __get_nat_bitmaps(struct f2fs_sb_info *sbi) 2459{ 2460 struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); 2461 struct f2fs_nm_info *nm_i = NM_I(sbi); 2462 unsigned int nat_bits_bytes = nm_i->nat_blocks / BITS_PER_BYTE; 2463 unsigned int i; 2464 __u64 cp_ver = cur_cp_version(ckpt); |
2465 size_t crc_offset = le32_to_cpu(ckpt->checksum_offset); 2466 __u64 crc = le32_to_cpu(*((__le32 *) 2467 ((unsigned char *)ckpt + crc_offset))); | |
2468 block_t nat_bits_addr; 2469 2470 if (!enabled_nat_bits(sbi, NULL)) 2471 return 0; 2472 2473 nm_i->nat_bits_blocks = F2FS_BYTES_TO_BLK((nat_bits_bytes << 1) + 8 + 2474 F2FS_BLKSIZE - 1); 2475 nm_i->nat_bits = kzalloc(nm_i->nat_bits_blocks << F2FS_BLKSIZE_BITS, --- 6 unchanged lines hidden (view full) --- 2482 for (i = 0; i < nm_i->nat_bits_blocks; i++) { 2483 struct page *page = get_meta_page(sbi, nat_bits_addr++); 2484 2485 memcpy(nm_i->nat_bits + (i << F2FS_BLKSIZE_BITS), 2486 page_address(page), F2FS_BLKSIZE); 2487 f2fs_put_page(page, 1); 2488 } 2489 | 2465 block_t nat_bits_addr; 2466 2467 if (!enabled_nat_bits(sbi, NULL)) 2468 return 0; 2469 2470 nm_i->nat_bits_blocks = F2FS_BYTES_TO_BLK((nat_bits_bytes << 1) + 8 + 2471 F2FS_BLKSIZE - 1); 2472 nm_i->nat_bits = kzalloc(nm_i->nat_bits_blocks << F2FS_BLKSIZE_BITS, --- 6 unchanged lines hidden (view full) --- 2479 for (i = 0; i < nm_i->nat_bits_blocks; i++) { 2480 struct page *page = get_meta_page(sbi, nat_bits_addr++); 2481 2482 memcpy(nm_i->nat_bits + (i << F2FS_BLKSIZE_BITS), 2483 page_address(page), F2FS_BLKSIZE); 2484 f2fs_put_page(page, 1); 2485 } 2486 |
2490 cp_ver |= (crc << 32); | 2487 cp_ver |= (cur_cp_crc(ckpt) << 32); |
2491 if (cpu_to_le64(cp_ver) != *(__le64 *)nm_i->nat_bits) { 2492 disable_nat_bits(sbi, true); 2493 return 0; 2494 } 2495 2496 nm_i->full_nat_bits = nm_i->nat_bits + 8; 2497 nm_i->empty_nat_bits = nm_i->full_nat_bits + nat_bits_bytes; 2498 --- 176 unchanged lines hidden --- | 2488 if (cpu_to_le64(cp_ver) != *(__le64 *)nm_i->nat_bits) { 2489 disable_nat_bits(sbi, true); 2490 return 0; 2491 } 2492 2493 nm_i->full_nat_bits = nm_i->nat_bits + 8; 2494 nm_i->empty_nat_bits = nm_i->full_nat_bits + nat_bits_bytes; 2495 --- 176 unchanged lines hidden --- |