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