Blame view
fs/ext4/bitmap.c
2.64 KB
ac27a0ec1 [PATCH] ext4: ini... |
1 |
/* |
617ba13b3 [PATCH] ext4: ren... |
2 |
* linux/fs/ext4/bitmap.c |
ac27a0ec1 [PATCH] ext4: ini... |
3 4 5 6 7 8 9 10 |
* * Copyright (C) 1992, 1993, 1994, 1995 * Remy Card (card@masi.ibp.fr) * Laboratoire MASI - Institut Blaise Pascal * Universite Pierre et Marie Curie (Paris VI) */ #include <linux/buffer_head.h> |
3dcf54515 ext4: move header... |
11 |
#include "ext4.h" |
ac27a0ec1 [PATCH] ext4: ini... |
12 |
|
f6fb99cad ext4: pass a char... |
13 |
unsigned int ext4_count_free(char *bitmap, unsigned int numchars) |
ac27a0ec1 [PATCH] ext4: ini... |
14 |
{ |
6017b485c ext4: use memweig... |
15 |
return numchars * BITS_PER_BYTE - memweight(bitmap, numchars); |
ac27a0ec1 [PATCH] ext4: ini... |
16 |
} |
41a246d1f ext4: calculate a... |
17 18 19 20 21 22 23 |
int ext4_inode_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz) { __u32 hi; __u32 provided, calculated; struct ext4_sb_info *sbi = EXT4_SB(sb); |
9aa5d32ba ext4: Replace ope... |
24 |
if (!ext4_has_metadata_csum(sb)) |
41a246d1f ext4: calculate a... |
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
return 1; provided = le16_to_cpu(gdp->bg_inode_bitmap_csum_lo); calculated = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) { hi = le16_to_cpu(gdp->bg_inode_bitmap_csum_hi); provided |= (hi << 16); } else calculated &= 0xFFFF; return provided == calculated; } void ext4_inode_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz) { __u32 csum; struct ext4_sb_info *sbi = EXT4_SB(sb); |
9aa5d32ba ext4: Replace ope... |
44 |
if (!ext4_has_metadata_csum(sb)) |
41a246d1f ext4: calculate a... |
45 46 47 48 49 50 51 |
return; csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); gdp->bg_inode_bitmap_csum_lo = cpu_to_le16(csum & 0xFFFF); if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) gdp->bg_inode_bitmap_csum_hi = cpu_to_le16(csum >> 16); } |
fa77dcfaf ext4: calculate a... |
52 53 54 |
int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, |
79f1ba495 ext4: Checksum th... |
55 |
struct buffer_head *bh) |
fa77dcfaf ext4: calculate a... |
56 57 58 59 |
{ __u32 hi; __u32 provided, calculated; struct ext4_sb_info *sbi = EXT4_SB(sb); |
79f1ba495 ext4: Checksum th... |
60 |
int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; |
fa77dcfaf ext4: calculate a... |
61 |
|
9aa5d32ba ext4: Replace ope... |
62 |
if (!ext4_has_metadata_csum(sb)) |
fa77dcfaf ext4: calculate a... |
63 64 65 66 67 68 69 70 71 72 73 74 |
return 1; provided = le16_to_cpu(gdp->bg_block_bitmap_csum_lo); calculated = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END) { hi = le16_to_cpu(gdp->bg_block_bitmap_csum_hi); provided |= (hi << 16); } else calculated &= 0xFFFF; if (provided == calculated) return 1; |
fa77dcfaf ext4: calculate a... |
75 76 77 78 79 |
return 0; } void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, |
79f1ba495 ext4: Checksum th... |
80 |
struct buffer_head *bh) |
fa77dcfaf ext4: calculate a... |
81 |
{ |
79f1ba495 ext4: Checksum th... |
82 |
int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; |
fa77dcfaf ext4: calculate a... |
83 84 |
__u32 csum; struct ext4_sb_info *sbi = EXT4_SB(sb); |
9aa5d32ba ext4: Replace ope... |
85 |
if (!ext4_has_metadata_csum(sb)) |
fa77dcfaf ext4: calculate a... |
86 87 88 89 90 91 92 |
return; csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); gdp->bg_block_bitmap_csum_lo = cpu_to_le16(csum & 0xFFFF); if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END) gdp->bg_block_bitmap_csum_hi = cpu_to_le16(csum >> 16); } |