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