diff options
Diffstat (limited to 'fs/hpfs/super.c')
-rw-r--r-- | fs/hpfs/super.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index f2feaa06bf26..aa53842c599c 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include <linux/magic.h> | 14 | #include <linux/magic.h> |
15 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
16 | #include <linux/smp_lock.h> | 16 | #include <linux/smp_lock.h> |
17 | #include <linux/bitmap.h> | ||
18 | #include <linux/slab.h> | ||
17 | 19 | ||
18 | /* Mark the filesystem dirty, so that chkdsk checks it when os/2 booted */ | 20 | /* Mark the filesystem dirty, so that chkdsk checks it when os/2 booted */ |
19 | 21 | ||
@@ -115,15 +117,13 @@ static void hpfs_put_super(struct super_block *s) | |||
115 | unsigned hpfs_count_one_bitmap(struct super_block *s, secno secno) | 117 | unsigned hpfs_count_one_bitmap(struct super_block *s, secno secno) |
116 | { | 118 | { |
117 | struct quad_buffer_head qbh; | 119 | struct quad_buffer_head qbh; |
118 | unsigned *bits; | 120 | unsigned long *bits; |
119 | unsigned i, count; | 121 | unsigned count; |
120 | if (!(bits = hpfs_map_4sectors(s, secno, &qbh, 4))) return 0; | 122 | |
121 | count = 0; | 123 | bits = hpfs_map_4sectors(s, secno, &qbh, 4); |
122 | for (i = 0; i < 2048 / sizeof(unsigned); i++) { | 124 | if (!bits) |
123 | unsigned b; | 125 | return 0; |
124 | if (!bits[i]) continue; | 126 | count = bitmap_weight(bits, 2048 * BITS_PER_BYTE); |
125 | for (b = bits[i]; b; b>>=1) count += b & 1; | ||
126 | } | ||
127 | hpfs_brelse4(&qbh); | 127 | hpfs_brelse4(&qbh); |
128 | return count; | 128 | return count; |
129 | } | 129 | } |