Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
cf27e1ee
Commit
cf27e1ee
authored
Mar 13, 2007
by
Chris Mason
Committed by
David Woodhouse
Mar 13, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Btrfs: struct extent_item endian
Signed-off-by:
Chris Mason
<
chris.mason@oracle.com
>
parent
1d4f8a0c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
15 deletions
+39
-15
fs/btrfs/ctree.h
fs/btrfs/ctree.h
+22
-2
fs/btrfs/extent-tree.c
fs/btrfs/extent-tree.c
+13
-9
fs/btrfs/mkfs.c
fs/btrfs/mkfs.c
+4
-4
No files found.
fs/btrfs/ctree.h
View file @
cf27e1ee
...
...
@@ -136,8 +136,8 @@ struct node {
* owner of the block and the number of references
*/
struct
extent_item
{
u
32
refs
;
u
64
owner
;
__le
32
refs
;
__le
64
owner
;
}
__attribute__
((
__packed__
));
/*
...
...
@@ -153,6 +153,26 @@ struct ctree_path {
int
slots
[
MAX_LEVEL
];
};
static
inline
u64
btrfs_extent_owner
(
struct
extent_item
*
ei
)
{
return
le64_to_cpu
(
ei
->
owner
);
}
static
inline
void
btrfs_set_extent_owner
(
struct
extent_item
*
ei
,
u64
val
)
{
ei
->
owner
=
cpu_to_le64
(
val
);
}
static
inline
u32
btrfs_extent_refs
(
struct
extent_item
*
ei
)
{
return
le32_to_cpu
(
ei
->
refs
);
}
static
inline
void
btrfs_set_extent_refs
(
struct
extent_item
*
ei
,
u32
val
)
{
ei
->
refs
=
cpu_to_le32
(
val
);
}
static
inline
u64
btrfs_node_blockptr
(
struct
node
*
n
,
int
nr
)
{
return
le64_to_cpu
(
n
->
blockptrs
[
nr
]);
...
...
fs/btrfs/extent-tree.c
View file @
cf27e1ee
...
...
@@ -29,6 +29,7 @@ static int inc_block_ref(struct ctree_root *root, u64 blocknr)
struct
leaf
*
l
;
struct
extent_item
*
item
;
struct
btrfs_key
ins
;
u32
refs
;
find_free_extent
(
root
->
extent_root
,
0
,
0
,
(
u64
)
-
1
,
&
ins
);
init_path
(
&
path
);
...
...
@@ -42,7 +43,8 @@ static int inc_block_ref(struct ctree_root *root, u64 blocknr)
l
=
&
path
.
nodes
[
0
]
->
leaf
;
item
=
(
struct
extent_item
*
)(
l
->
data
+
btrfs_item_offset
(
l
->
items
+
path
.
slots
[
0
]));
item
->
refs
++
;
refs
=
btrfs_extent_refs
(
item
);
btrfs_set_extent_refs
(
item
,
refs
+
1
);
BUG_ON
(
list_empty
(
&
path
.
nodes
[
0
]
->
dirty
));
release_path
(
root
->
extent_root
,
&
path
);
...
...
@@ -69,7 +71,7 @@ static int lookup_block_ref(struct ctree_root *root, u64 blocknr, u32 *refs)
item
=
(
struct
extent_item
*
)(
l
->
data
+
btrfs_item_offset
(
l
->
items
+
path
.
slots
[
0
]));
*
refs
=
item
->
refs
;
*
refs
=
btrfs_extent_refs
(
item
)
;
release_path
(
root
->
extent_root
,
&
path
);
return
0
;
}
...
...
@@ -120,9 +122,9 @@ static int finish_current_insert(struct ctree_root *extent_root)
int
i
;
int
ret
;
extent_item
.
refs
=
1
;
extent_item
.
owner
=
btrfs_header_parentid
(
&
extent_root
->
node
->
node
.
header
);
btrfs_set_extent_refs
(
&
extent_item
,
1
)
;
btrfs_set_extent_owner
(
&
extent_item
,
btrfs_header_parentid
(
&
extent_root
->
node
->
node
.
header
)
)
;
ins
.
offset
=
1
;
ins
.
flags
=
0
;
...
...
@@ -148,6 +150,7 @@ int __free_extent(struct ctree_root *root, u64 blocknr, u64 num_blocks)
struct
btrfs_item
*
item
;
struct
extent_item
*
ei
;
struct
btrfs_key
ins
;
u32
refs
;
key
.
objectid
=
blocknr
;
key
.
flags
=
0
;
...
...
@@ -166,8 +169,9 @@ int __free_extent(struct ctree_root *root, u64 blocknr, u64 num_blocks)
ei
=
(
struct
extent_item
*
)(
path
.
nodes
[
0
]
->
leaf
.
data
+
btrfs_item_offset
(
item
));
BUG_ON
(
ei
->
refs
==
0
);
ei
->
refs
--
;
if
(
ei
->
refs
==
0
)
{
refs
=
btrfs_extent_refs
(
ei
)
-
1
;
btrfs_set_extent_refs
(
ei
,
refs
);
if
(
refs
==
0
)
{
if
(
root
==
extent_root
)
{
int
err
;
radix_tree_preload
(
GFP_KERNEL
);
...
...
@@ -368,8 +372,8 @@ int alloc_extent(struct ctree_root *root, u64 num_blocks, u64 search_start,
struct
ctree_root
*
extent_root
=
root
->
extent_root
;
struct
extent_item
extent_item
;
extent_item
.
refs
=
1
;
extent_item
.
owner
=
owner
;
btrfs_set_extent_refs
(
&
extent_item
,
1
)
;
btrfs_set_extent_owner
(
&
extent_item
,
owner
)
;
if
(
root
==
extent_root
)
{
BUG_ON
(
extent_root
->
current_insert
.
offset
==
0
);
...
...
fs/btrfs/mkfs.c
View file @
cf27e1ee
...
...
@@ -51,8 +51,8 @@ int mkfs(int fd)
btrfs_set_item_offset
(
&
item
,
LEAF_DATA_SIZE
-
sizeof
(
struct
extent_item
));
btrfs_set_item_size
(
&
item
,
sizeof
(
struct
extent_item
));
extent_item
.
refs
=
1
;
extent_item
.
owner
=
0
;
btrfs_set_extent_refs
(
&
extent_item
,
1
)
;
btrfs_set_extent_owner
(
&
extent_item
,
0
)
;
memcpy
(
empty_leaf
.
items
,
&
item
,
sizeof
(
item
));
memcpy
(
empty_leaf
.
data
+
btrfs_item_offset
(
&
item
),
&
extent_item
,
btrfs_item_size
(
&
item
));
...
...
@@ -62,7 +62,7 @@ int mkfs(int fd)
btrfs_set_key_offset
(
&
item
.
key
,
1
);
btrfs_set_item_offset
(
&
item
,
LEAF_DATA_SIZE
-
sizeof
(
struct
extent_item
)
*
2
);
extent_item
.
owner
=
1
;
btrfs_set_extent_owner
(
&
extent_item
,
1
)
;
memcpy
(
empty_leaf
.
items
+
1
,
&
item
,
sizeof
(
item
));
memcpy
(
empty_leaf
.
data
+
btrfs_item_offset
(
&
item
),
&
extent_item
,
btrfs_item_size
(
&
item
));
...
...
@@ -72,7 +72,7 @@ int mkfs(int fd)
btrfs_set_key_offset
(
&
item
.
key
,
1
);
btrfs_set_item_offset
(
&
item
,
LEAF_DATA_SIZE
-
sizeof
(
struct
extent_item
)
*
3
);
extent_item
.
owner
=
2
;
btrfs_set_extent_owner
(
&
extent_item
,
2
)
;
memcpy
(
empty_leaf
.
items
+
2
,
&
item
,
sizeof
(
item
));
memcpy
(
empty_leaf
.
data
+
btrfs_item_offset
(
&
item
),
&
extent_item
,
btrfs_item_size
(
&
item
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment