Blame view
fs/qnx4/bitmap.c
1.08 KB
b24413180 License cleanup: ... |
1 |
// SPDX-License-Identifier: GPL-2.0 |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/* * QNX4 file system, Linux implementation. * * Version : 0.2.1 * * Using parts of the xiafs filesystem. * * History : * * 28-05-1998 by Richard Frowijn : first release. * 20-06-1998 by Frank Denis : basic optimisations. * 25-06-1998 by Frank Denis : qnx4_is_free, qnx4_set_bitmap, qnx4_bmap . * 28-06-1998 by Frank Denis : qnx4_free_inode (to be fixed) . */ |
1da177e4c Linux-2.6.12-rc2 |
16 17 |
#include <linux/buffer_head.h> #include <linux/bitops.h> |
964f53696 fs/qnx4: sanitize... |
18 |
#include "qnx4.h" |
1da177e4c Linux-2.6.12-rc2 |
19 |
|
1da177e4c Linux-2.6.12-rc2 |
20 21 22 23 24 25 26 27 28 29 |
unsigned long qnx4_count_free_blocks(struct super_block *sb) { int start = le32_to_cpu(qnx4_sb(sb)->BitMap->di_first_xtnt.xtnt_blk) - 1; int total = 0; int total_free = 0; int offset = 0; int size = le32_to_cpu(qnx4_sb(sb)->BitMap->di_size); struct buffer_head *bh; while (total < size) { |
9b58f6d4a qnx4fs: use memwe... |
30 |
int bytes = min(size - total, QNX4_BLOCK_SIZE); |
1da177e4c Linux-2.6.12-rc2 |
31 |
if ((bh = sb_bread(sb, start + offset)) == NULL) { |
891ddb95d qnx4fs: add missi... |
32 33 |
printk(KERN_ERR "qnx4: I/O error in counting free blocks "); |
1da177e4c Linux-2.6.12-rc2 |
34 35 |
break; } |
9b58f6d4a qnx4fs: use memwe... |
36 37 |
total_free += bytes * BITS_PER_BYTE - memweight(bh->b_data, bytes); |
1da177e4c Linux-2.6.12-rc2 |
38 |
brelse(bh); |
9b58f6d4a qnx4fs: use memwe... |
39 |
total += bytes; |
1da177e4c Linux-2.6.12-rc2 |
40 41 42 43 44 |
offset++; } return total_free; } |