Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
qnx4
bitmap.c
Go to the documentation of this file.
1
/*
2
* QNX4 file system, Linux implementation.
3
*
4
* Version : 0.2.1
5
*
6
* Using parts of the xiafs filesystem.
7
*
8
* History :
9
*
10
* 28-05-1998 by Richard Frowijn : first release.
11
* 20-06-1998 by Frank Denis : basic optimisations.
12
* 25-06-1998 by Frank Denis : qnx4_is_free, qnx4_set_bitmap, qnx4_bmap .
13
* 28-06-1998 by Frank Denis : qnx4_free_inode (to be fixed) .
14
*/
15
16
#include <
linux/buffer_head.h
>
17
#include <linux/bitops.h>
18
#include "
qnx4.h
"
19
20
unsigned
long
qnx4_count_free_blocks
(
struct
super_block
*
sb
)
21
{
22
int
start
=
le32_to_cpu
(qnx4_sb(sb)->BitMap->di_first_xtnt.xtnt_blk) - 1;
23
int
total = 0;
24
int
total_free = 0;
25
int
offset
= 0;
26
int
size
=
le32_to_cpu
(qnx4_sb(sb)->BitMap->di_size);
27
struct
buffer_head *bh;
28
29
while
(total < size) {
30
int
bytes
=
min
(size - total,
QNX4_BLOCK_SIZE
);
31
32
if
((bh = sb_bread(sb, start + offset)) ==
NULL
) {
33
printk
(
KERN_ERR
"qnx4: I/O error in counting free blocks\n"
);
34
break
;
35
}
36
total_free += bytes *
BITS_PER_BYTE
-
37
memweight
(bh->b_data, bytes);
38
brelse(bh);
39
total +=
bytes
;
40
offset++;
41
}
42
43
return
total_free;
44
}
Generated on Thu Jan 10 2013 13:16:46 for Linux Kernel by
1.8.2