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
293ffd5f
Commit
293ffd5f
authored
Mar 20, 2007
by
Chris Mason
Committed by
David Woodhouse
Mar 20, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Btrfs: change dir-test to insert inode_items
Signed-off-by:
Chris Mason
<
chris.mason@oracle.com
>
parent
313a013b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
9 deletions
+43
-9
fs/btrfs/ctree.h
fs/btrfs/ctree.h
+6
-0
fs/btrfs/dir-test.c
fs/btrfs/dir-test.c
+30
-9
fs/btrfs/disk-io.c
fs/btrfs/disk-io.c
+2
-0
fs/btrfs/print-tree.c
fs/btrfs/print-tree.c
+5
-0
No files found.
fs/btrfs/ctree.h
View file @
293ffd5f
...
...
@@ -219,6 +219,7 @@ struct btrfs_fs_info {
struct
list_head
cache
;
u64
last_inode_alloc
;
u64
last_inode_alloc_dirid
;
u64
generation
;
int
cache_size
;
int
fp
;
struct
btrfs_trans_handle
*
running_transaction
;
...
...
@@ -802,4 +803,9 @@ int btrfs_insert_inode_map(struct btrfs_trans_handle *trans,
int
btrfs_lookup_inode_map
(
struct
btrfs_trans_handle
*
trans
,
struct
btrfs_root
*
root
,
struct
btrfs_path
*
path
,
u64
objectid
,
int
mod
);
int
btrfs_insert_inode
(
struct
btrfs_trans_handle
*
trans
,
struct
btrfs_root
*
root
,
u64
objectid
,
struct
btrfs_inode_item
*
inode_item
);
int
btrfs_lookup_inode
(
struct
btrfs_trans_handle
*
trans
,
struct
btrfs_root
*
root
,
struct
btrfs_path
*
path
,
u64
objectid
,
int
mod
);
#endif
fs/btrfs/dir-test.c
View file @
293ffd5f
...
...
@@ -39,6 +39,13 @@ static int find_num(struct radix_tree_root *root, unsigned long *num_ret,
return
0
;
}
static
void
initial_inode_init
(
struct
btrfs_root
*
root
,
struct
btrfs_inode_item
*
inode_item
)
{
memset
(
inode_item
,
0
,
sizeof
(
*
inode_item
));
btrfs_set_inode_generation
(
inode_item
,
root
->
fs_info
->
generation
);
}
static
int
ins_one
(
struct
btrfs_trans_handle
*
trans
,
struct
btrfs_root
*
root
,
struct
radix_tree_root
*
radix
)
{
...
...
@@ -48,6 +55,7 @@ static int ins_one(struct btrfs_trans_handle *trans, struct btrfs_root *root,
u64
objectid
;
struct
btrfs_path
path
;
struct
btrfs_key
inode_map
;
struct
btrfs_inode_item
inode_item
;
find_num
(
radix
,
&
oid
,
0
);
sprintf
(
buf
,
"str-%lu"
,
oid
);
...
...
@@ -61,6 +69,11 @@ static int ins_one(struct btrfs_trans_handle *trans, struct btrfs_root *root,
inode_map
.
offset
=
0
;
ret
=
btrfs_insert_inode_map
(
trans
,
root
,
objectid
,
&
inode_map
);
if
(
ret
)
goto
error
;
initial_inode_init
(
root
,
&
inode_item
);
ret
=
btrfs_insert_inode
(
trans
,
root
,
objectid
,
&
inode_item
);
if
(
ret
)
goto
error
;
ret
=
btrfs_insert_dir_item
(
trans
,
root
,
buf
,
strlen
(
buf
),
dir_oid
,
...
...
@@ -143,7 +156,6 @@ static int del_dir_item(struct btrfs_trans_handle *trans,
unsigned
long
*
ptr
;
u64
file_objectid
;
struct
btrfs_dir_item
*
di
;
struct
btrfs_path
map_path
;
/* find the inode number of the file */
di
=
btrfs_item_ptr
(
&
path
->
nodes
[
0
]
->
leaf
,
path
->
slots
[
0
],
...
...
@@ -153,20 +165,31 @@ static int del_dir_item(struct btrfs_trans_handle *trans,
/* delete the directory item */
ret
=
btrfs_del_item
(
trans
,
root
,
path
);
if
(
ret
)
goto
out
;
goto
out_release
;
btrfs_release_path
(
root
,
path
);
/* delete the inode */
btrfs_init_path
(
path
);
ret
=
btrfs_lookup_inode
(
trans
,
root
,
path
,
file_objectid
,
-
1
);
if
(
ret
)
goto
out_release
;
ret
=
btrfs_del_item
(
trans
,
root
,
path
);
if
(
ret
)
goto
out_release
;
btrfs_release_path
(
root
,
path
);
/* delete the inode mapping */
btrfs_init_path
(
&
map_
path
);
ret
=
btrfs_lookup_inode_map
(
trans
,
root
,
&
map_
path
,
file_objectid
,
-
1
);
btrfs_init_path
(
path
);
ret
=
btrfs_lookup_inode_map
(
trans
,
root
,
path
,
file_objectid
,
-
1
);
if
(
ret
)
goto
out_release
;
ret
=
btrfs_del_item
(
trans
,
root
->
fs_info
->
inode_root
,
&
map_
path
);
ret
=
btrfs_del_item
(
trans
,
root
->
fs_info
->
inode_root
,
path
);
if
(
ret
)
goto
out_release
;
if
(
root
->
fs_info
->
last_inode_alloc
>
file_objectid
)
root
->
fs_info
->
last_inode_alloc
=
file_objectid
;
btrfs_release_path
(
root
,
&
map_
path
);
btrfs_release_path
(
root
,
path
);
ptr
=
radix_tree_delete
(
radix
,
radix_index
);
if
(
!
ptr
)
{
ret
=
-
5555
;
...
...
@@ -174,7 +197,7 @@ static int del_dir_item(struct btrfs_trans_handle *trans,
}
return
0
;
out_release:
btrfs_release_path
(
root
,
&
map_
path
);
btrfs_release_path
(
root
,
path
);
out:
printf
(
"failed to delete %lu %d
\n
"
,
radix_index
,
ret
);
return
-
1
;
...
...
@@ -201,7 +224,6 @@ static int del_one(struct btrfs_trans_handle *trans, struct btrfs_root *root,
ret
=
del_dir_item
(
trans
,
root
,
radix
,
oid
,
&
path
);
if
(
ret
)
goto
out_release
;
btrfs_release_path
(
root
,
&
path
);
return
ret
;
out_release:
btrfs_release_path
(
root
,
&
path
);
...
...
@@ -312,7 +334,6 @@ static int empty_tree(struct btrfs_trans_handle *trans, struct btrfs_root
found
);
return
-
1
;
}
btrfs_release_path
(
root
,
&
path
);
if
(
!
keep_running
)
break
;
}
...
...
fs/btrfs/disk-io.c
View file @
293ffd5f
...
...
@@ -226,6 +226,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans, struct
ret
=
btrfs_del_root
(
trans
,
root
->
fs_info
->
tree_root
,
&
snap_key
);
BUG_ON
(
ret
);
root
->
fs_info
->
generation
=
root
->
root_key
.
offset
+
1
;
return
ret
;
}
...
...
@@ -328,6 +329,7 @@ struct btrfs_root *open_ctree(char *filename, struct btrfs_super_block *super)
root
->
commit_root
=
root
->
node
;
root
->
node
->
count
++
;
root
->
ref_cows
=
1
;
root
->
fs_info
->
generation
=
root
->
root_key
.
offset
+
1
;
return
root
;
}
...
...
fs/btrfs/print-tree.c
View file @
293ffd5f
...
...
@@ -14,6 +14,7 @@ void btrfs_print_leaf(struct btrfs_root *root, struct btrfs_leaf *l)
struct
btrfs_root_item
*
ri
;
struct
btrfs_dir_item
*
di
;
struct
btrfs_inode_map_item
*
mi
;
struct
btrfs_inode_item
*
ii
;
u32
type
;
printf
(
"leaf %Lu total ptrs %d free space %d
\n
"
,
...
...
@@ -32,6 +33,10 @@ void btrfs_print_leaf(struct btrfs_root *root, struct btrfs_leaf *l)
btrfs_item_size
(
item
));
switch
(
type
)
{
case
BTRFS_INODE_ITEM_KEY
:
ii
=
btrfs_item_ptr
(
l
,
i
,
struct
btrfs_inode_item
);
printf
(
"
\t\t
inode generation %Lu size %Lu
\n
"
,
btrfs_inode_generation
(
ii
),
btrfs_inode_size
(
ii
));
break
;
case
BTRFS_DIR_ITEM_KEY
:
di
=
btrfs_item_ptr
(
l
,
i
,
struct
btrfs_dir_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