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
btrfs
locking.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2008 Oracle. All rights reserved.
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public
6
* License v2 as published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
* General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public
14
* License along with this program; if not, write to the
15
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16
* Boston, MA 021110-1307, USA.
17
*/
18
19
#ifndef __BTRFS_LOCKING_
20
#define __BTRFS_LOCKING_
21
22
#define BTRFS_WRITE_LOCK 1
23
#define BTRFS_READ_LOCK 2
24
#define BTRFS_WRITE_LOCK_BLOCKING 3
25
#define BTRFS_READ_LOCK_BLOCKING 4
26
27
void
btrfs_tree_lock
(
struct
extent_buffer
*
eb
);
28
void
btrfs_tree_unlock
(
struct
extent_buffer
*
eb
);
29
int
btrfs_try_spin_lock
(
struct
extent_buffer
*
eb
);
30
31
void
btrfs_tree_read_lock
(
struct
extent_buffer
*
eb
);
32
void
btrfs_tree_read_unlock
(
struct
extent_buffer
*
eb
);
33
void
btrfs_tree_read_unlock_blocking
(
struct
extent_buffer
*
eb
);
34
void
btrfs_set_lock_blocking_rw
(
struct
extent_buffer
*
eb
,
int
rw
);
35
void
btrfs_clear_lock_blocking_rw
(
struct
extent_buffer
*
eb
,
int
rw
);
36
void
btrfs_assert_tree_locked
(
struct
extent_buffer
*
eb
);
37
int
btrfs_try_tree_read_lock
(
struct
extent_buffer
*
eb
);
38
int
btrfs_try_tree_write_lock
(
struct
extent_buffer
*
eb
);
39
40
static
inline
void
btrfs_tree_unlock_rw(
struct
extent_buffer
*
eb
,
int
rw
)
41
{
42
if
(rw ==
BTRFS_WRITE_LOCK
|| rw ==
BTRFS_WRITE_LOCK_BLOCKING
)
43
btrfs_tree_unlock
(eb);
44
else
if
(rw ==
BTRFS_READ_LOCK_BLOCKING
)
45
btrfs_tree_read_unlock_blocking
(eb);
46
else
if
(rw ==
BTRFS_READ_LOCK
)
47
btrfs_tree_read_unlock
(eb);
48
else
49
BUG
();
50
}
51
52
static
inline
void
btrfs_set_lock_blocking(
struct
extent_buffer
*eb)
53
{
54
btrfs_set_lock_blocking_rw
(eb,
BTRFS_WRITE_LOCK
);
55
}
56
57
static
inline
void
btrfs_clear_lock_blocking(
struct
extent_buffer
*eb)
58
{
59
btrfs_clear_lock_blocking_rw
(eb,
BTRFS_WRITE_LOCK_BLOCKING
);
60
}
61
#endif
Generated on Thu Jan 10 2013 14:45:34 for Linux Kernel by
1.8.2