aboutsummaryrefslogtreecommitdiffstats
path: root/fs/hpfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/hpfs/super.c')
-rw-r--r--fs/hpfs/super.c18
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)
115unsigned hpfs_count_one_bitmap(struct super_block *s, secno secno) 117unsigned 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}