Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
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 @@ again:
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