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
gfs2
rgrp.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
3
* Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
4
*
5
* This copyrighted material is made available to anyone wishing to use,
6
* modify, copy, or redistribute it subject to the terms and conditions
7
* of the GNU General Public License version 2.
8
*/
9
10
#ifndef __RGRP_DOT_H__
11
#define __RGRP_DOT_H__
12
13
#include <linux/slab.h>
14
#include <
linux/uaccess.h
>
15
16
/* Since each block in the file system is represented by two bits in the
17
* bitmap, one 64-bit word in the bitmap will represent 32 blocks.
18
* By reserving 32 blocks at a time, we can optimize / shortcut how we search
19
* through the bitmaps by looking a word at a time.
20
*/
21
#define RGRP_RSRV_MINBYTES 8
22
#define RGRP_RSRV_MINBLKS ((u32)(RGRP_RSRV_MINBYTES * GFS2_NBBY))
23
24
struct
gfs2_rgrpd
;
25
struct
gfs2_sbd
;
26
struct
gfs2_holder
;
27
28
extern
void
gfs2_rgrp_verify
(
struct
gfs2_rgrpd
*rgd);
29
30
extern
struct
gfs2_rgrpd
*
gfs2_blk2rgrpd
(
struct
gfs2_sbd
*sdp,
u64
blk
,
bool
exact);
31
extern
struct
gfs2_rgrpd
*
gfs2_rgrpd_get_first
(
struct
gfs2_sbd
*sdp);
32
extern
struct
gfs2_rgrpd
*
gfs2_rgrpd_get_next
(
struct
gfs2_rgrpd
*rgd);
33
34
extern
void
gfs2_clear_rgrpd
(
struct
gfs2_sbd
*sdp);
35
extern
int
gfs2_rindex_update
(
struct
gfs2_sbd
*sdp);
36
extern
void
gfs2_free_clones
(
struct
gfs2_rgrpd
*rgd);
37
extern
int
gfs2_rgrp_go_lock
(
struct
gfs2_holder
*gh);
38
extern
void
gfs2_rgrp_go_unlock
(
struct
gfs2_holder
*gh);
39
40
extern
struct
gfs2_alloc *
gfs2_alloc_get
(
struct
gfs2_inode
*
ip
);
41
42
extern
int
gfs2_inplace_reserve
(
struct
gfs2_inode
*
ip
,
u32
requested);
43
extern
void
gfs2_inplace_release
(
struct
gfs2_inode
*
ip
);
44
45
extern
int
gfs2_alloc_blocks
(
struct
gfs2_inode
*
ip
,
u64
*bn,
unsigned
int
*
n
,
46
bool
dinode
,
u64
*
generation
);
47
48
extern
int
gfs2_rs_alloc
(
struct
gfs2_inode
*
ip
);
49
extern
void
gfs2_rs_deltree
(
struct
gfs2_inode
*
ip
,
struct
gfs2_blkreserv
*rs);
50
extern
void
gfs2_rs_delete
(
struct
gfs2_inode
*
ip
);
51
extern
void
__gfs2_free_blocks
(
struct
gfs2_inode
*
ip
,
u64
bstart,
u32
blen,
int
meta
);
52
extern
void
gfs2_free_meta
(
struct
gfs2_inode
*
ip
,
u64
bstart,
u32
blen);
53
extern
void
gfs2_free_di
(
struct
gfs2_rgrpd
*rgd,
struct
gfs2_inode
*
ip
);
54
extern
void
gfs2_unlink_di
(
struct
inode
*
inode
);
55
extern
int
gfs2_check_blk_type
(
struct
gfs2_sbd
*sdp,
u64
no_addr,
56
unsigned
int
type
);
57
58
struct
gfs2_rgrp_list
{
59
unsigned
int
rl_rgrps
;
60
unsigned
int
rl_space
;
61
struct
gfs2_rgrpd
**
rl_rgd
;
62
struct
gfs2_holder
*
rl_ghs
;
63
};
64
65
extern
void
gfs2_rlist_add
(
struct
gfs2_inode
*
ip
,
struct
gfs2_rgrp_list
*
rlist
,
66
u64
block
);
67
extern
void
gfs2_rlist_alloc
(
struct
gfs2_rgrp_list
*
rlist
,
unsigned
int
state
);
68
extern
void
gfs2_rlist_free
(
struct
gfs2_rgrp_list
*
rlist
);
69
extern
u64
gfs2_ri_total
(
struct
gfs2_sbd
*sdp);
70
extern
int
gfs2_rgrp_dump
(
struct
seq_file
*seq,
const
struct
gfs2_glock
*gl);
71
extern
int
gfs2_rgrp_send_discards
(
struct
gfs2_sbd
*sdp,
u64
offset
,
72
struct
buffer_head *bh,
73
const
struct
gfs2_bitmap
*
bi
,
unsigned
minlen,
u64
*ptrimmed);
74
extern
int
gfs2_fitrim
(
struct
file
*filp,
void
__user *
argp
);
75
76
/* This is how to tell if a reservation is in the rgrp tree: */
77
static
inline
bool
gfs2_rs_active(
struct
gfs2_blkreserv
*rs)
78
{
79
return
rs && !
RB_EMPTY_NODE
(&rs->
rs_node
);
80
}
81
82
#endif
/* __RGRP_DOT_H__ */
Generated on Thu Jan 10 2013 14:47:19 for Linux Kernel by
1.8.2