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
0cf6c620
Commit
0cf6c620
authored
Jun 09, 2007
by
Chris Mason
Committed by
David Woodhouse
Jun 09, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Btrfs: remove device tree
Signed-off-by:
Chris Mason
<
chris.mason@oracle.com
>
parent
ad693af6
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10 additions
and
413 deletions
+10
-413
fs/btrfs/ctree.h
fs/btrfs/ctree.h
+4
-101
fs/btrfs/disk-io.c
fs/btrfs/disk-io.c
+6
-218
fs/btrfs/super.c
fs/btrfs/super.c
+0
-88
fs/btrfs/transaction.c
fs/btrfs/transaction.c
+0
-6
No files found.
fs/btrfs/ctree.h
View file @
0cf6c620
...
...
@@ -16,11 +16,10 @@ extern struct kmem_cache *btrfs_path_cachep;
#define BTRFS_MAGIC "_BtRfS_M"
#define BTRFS_ROOT_TREE_OBJECTID 1ULL
#define BTRFS_DEV_TREE_OBJECTID 2ULL
#define BTRFS_EXTENT_TREE_OBJECTID 3ULL
#define BTRFS_FS_TREE_OBJECTID 4ULL
#define BTRFS_ROOT_TREE_DIR_OBJECTID 5ULL
#define BTRFS_FIRST_FREE_OBJECTID 6ULL
#define BTRFS_EXTENT_TREE_OBJECTID 2ULL
#define BTRFS_FS_TREE_OBJECTID 3ULL
#define BTRFS_ROOT_TREE_DIR_OBJECTID 4ULL
#define BTRFS_FIRST_FREE_OBJECTID 5ULL
/*
* we can actually store much bigger names, but lets not confuse the rest
...
...
@@ -111,12 +110,6 @@ struct btrfs_super_block {
__le64
total_blocks
;
__le64
blocks_used
;
__le64
root_dir_objectid
;
__le64
last_device_id
;
/* fields below here vary with the underlying disk */
__le64
device_block_start
;
__le64
device_num_blocks
;
__le64
device_root
;
__le64
device_id
;
}
__attribute__
((
__packed__
));
/*
...
...
@@ -251,11 +244,6 @@ struct btrfs_csum_item {
u8
csum
;
}
__attribute__
((
__packed__
));
struct
btrfs_device_item
{
__le16
pathlen
;
__le64
device_id
;
}
__attribute__
((
__packed__
));
/* tag for the radix tree of block groups in ram */
#define BTRFS_BLOCK_GROUP_DIRTY 0
#define BTRFS_BLOCK_GROUP_AVAIL 1
...
...
@@ -286,11 +274,9 @@ struct btrfs_fs_info {
spinlock_t
hash_lock
;
struct
btrfs_root
*
extent_root
;
struct
btrfs_root
*
tree_root
;
struct
btrfs_root
*
dev_root
;
struct
radix_tree_root
fs_roots_radix
;
struct
radix_tree_root
pending_del_radix
;
struct
radix_tree_root
pinned_radix
;
struct
radix_tree_root
dev_radix
;
struct
radix_tree_root
block_group_radix
;
struct
radix_tree_root
block_group_data_radix
;
struct
radix_tree_root
extent_map_radix
;
...
...
@@ -385,11 +371,6 @@ struct btrfs_root {
*/
#define BTRFS_BLOCK_GROUP_ITEM_KEY 34
/*
* dev items list the devices that make up the FS
*/
#define BTRFS_DEV_ITEM_KEY 35
/*
* string items are for debugging. They just store a short string of
* data in the FS
...
...
@@ -880,62 +861,6 @@ static inline void btrfs_set_super_root_dir(struct btrfs_super_block *s, u64
s
->
root_dir_objectid
=
cpu_to_le64
(
val
);
}
static
inline
u64
btrfs_super_last_device_id
(
struct
btrfs_super_block
*
s
)
{
return
le64_to_cpu
(
s
->
last_device_id
);
}
static
inline
void
btrfs_set_super_last_device_id
(
struct
btrfs_super_block
*
s
,
u64
val
)
{
s
->
last_device_id
=
cpu_to_le64
(
val
);
}
static
inline
u64
btrfs_super_device_id
(
struct
btrfs_super_block
*
s
)
{
return
le64_to_cpu
(
s
->
device_id
);
}
static
inline
void
btrfs_set_super_device_id
(
struct
btrfs_super_block
*
s
,
u64
val
)
{
s
->
device_id
=
cpu_to_le64
(
val
);
}
static
inline
u64
btrfs_super_device_block_start
(
struct
btrfs_super_block
*
s
)
{
return
le64_to_cpu
(
s
->
device_block_start
);
}
static
inline
void
btrfs_set_super_device_block_start
(
struct
btrfs_super_block
*
s
,
u64
val
)
{
s
->
device_block_start
=
cpu_to_le64
(
val
);
}
static
inline
u64
btrfs_super_device_num_blocks
(
struct
btrfs_super_block
*
s
)
{
return
le64_to_cpu
(
s
->
device_num_blocks
);
}
static
inline
void
btrfs_set_super_device_num_blocks
(
struct
btrfs_super_block
*
s
,
u64
val
)
{
s
->
device_num_blocks
=
cpu_to_le64
(
val
);
}
static
inline
u64
btrfs_super_device_root
(
struct
btrfs_super_block
*
s
)
{
return
le64_to_cpu
(
s
->
device_root
);
}
static
inline
void
btrfs_set_super_device_root
(
struct
btrfs_super_block
*
s
,
u64
val
)
{
s
->
device_root
=
cpu_to_le64
(
val
);
}
static
inline
u8
*
btrfs_leaf_data
(
struct
btrfs_leaf
*
l
)
{
return
(
u8
*
)
l
->
items
;
...
...
@@ -1031,28 +956,6 @@ static inline void btrfs_set_file_extent_num_blocks(struct
e
->
num_blocks
=
cpu_to_le64
(
val
);
}
static
inline
u16
btrfs_device_pathlen
(
struct
btrfs_device_item
*
d
)
{
return
le16_to_cpu
(
d
->
pathlen
);
}
static
inline
void
btrfs_set_device_pathlen
(
struct
btrfs_device_item
*
d
,
u16
val
)
{
d
->
pathlen
=
cpu_to_le16
(
val
);
}
static
inline
u64
btrfs_device_id
(
struct
btrfs_device_item
*
d
)
{
return
le64_to_cpu
(
d
->
device_id
);
}
static
inline
void
btrfs_set_device_id
(
struct
btrfs_device_item
*
d
,
u64
val
)
{
d
->
device_id
=
cpu_to_le64
(
val
);
}
static
inline
struct
btrfs_root
*
btrfs_sb
(
struct
super_block
*
sb
)
{
return
sb
->
s_fs_info
;
...
...
fs/btrfs/disk-io.c
View file @
0cf6c620
This diff is collapsed.
Click to expand it.
fs/btrfs/super.c
View file @
0cf6c620
...
...
@@ -2566,83 +2566,6 @@ static int create_snapshot(struct btrfs_root *root, char *name, int namelen)
return
0
;
}
static
int
add_disk
(
struct
btrfs_root
*
root
,
char
*
name
,
int
namelen
)
{
struct
block_device
*
bdev
;
struct
btrfs_path
*
path
;
struct
super_block
*
sb
=
root
->
fs_info
->
sb
;
struct
btrfs_root
*
dev_root
=
root
->
fs_info
->
dev_root
;
struct
btrfs_trans_handle
*
trans
;
struct
btrfs_device_item
*
dev_item
;
struct
btrfs_key
key
;
u16
item_size
;
u64
num_blocks
;
u64
new_blocks
;
u64
device_id
;
int
ret
;
printk
(
"adding disk %s
\n
"
,
name
);
path
=
btrfs_alloc_path
();
if
(
!
path
)
return
-
ENOMEM
;
num_blocks
=
btrfs_super_total_blocks
(
root
->
fs_info
->
disk_super
);
bdev
=
open_bdev_excl
(
name
,
O_RDWR
,
sb
);
if
(
IS_ERR
(
bdev
))
{
ret
=
PTR_ERR
(
bdev
);
printk
(
"open bdev excl failed ret %d
\n
"
,
ret
);
goto
out_nolock
;
}
set_blocksize
(
bdev
,
sb
->
s_blocksize
);
new_blocks
=
bdev
->
bd_inode
->
i_size
>>
sb
->
s_blocksize_bits
;
key
.
objectid
=
num_blocks
;
key
.
offset
=
new_blocks
;
key
.
flags
=
0
;
btrfs_set_key_type
(
&
key
,
BTRFS_DEV_ITEM_KEY
);
mutex_lock
(
&
dev_root
->
fs_info
->
fs_mutex
);
trans
=
btrfs_start_transaction
(
dev_root
,
1
);
item_size
=
sizeof
(
*
dev_item
)
+
namelen
;
printk
(
"insert empty on %Lu %Lu %u size %d
\n
"
,
num_blocks
,
new_blocks
,
key
.
flags
,
item_size
);
ret
=
btrfs_insert_empty_item
(
trans
,
dev_root
,
path
,
&
key
,
item_size
);
if
(
ret
)
{
printk
(
"insert failed %d
\n
"
,
ret
);
close_bdev_excl
(
bdev
);
if
(
ret
>
0
)
ret
=
-
EEXIST
;
goto
out
;
}
dev_item
=
btrfs_item_ptr
(
btrfs_buffer_leaf
(
path
->
nodes
[
0
]),
path
->
slots
[
0
],
struct
btrfs_device_item
);
btrfs_set_device_pathlen
(
dev_item
,
namelen
);
memcpy
(
dev_item
+
1
,
name
,
namelen
);
device_id
=
btrfs_super_last_device_id
(
root
->
fs_info
->
disk_super
)
+
1
;
btrfs_set_super_last_device_id
(
root
->
fs_info
->
disk_super
,
device_id
);
btrfs_set_device_id
(
dev_item
,
device_id
);
mark_buffer_dirty
(
path
->
nodes
[
0
]);
ret
=
btrfs_insert_dev_radix
(
root
,
bdev
,
device_id
,
num_blocks
,
new_blocks
);
if
(
!
ret
)
{
btrfs_set_super_total_blocks
(
root
->
fs_info
->
disk_super
,
num_blocks
+
new_blocks
);
i_size_write
(
root
->
fs_info
->
btree_inode
,
(
num_blocks
+
new_blocks
)
<<
root
->
fs_info
->
btree_inode
->
i_blkbits
);
}
out:
ret
=
btrfs_commit_transaction
(
trans
,
dev_root
);
BUG_ON
(
ret
);
mutex_unlock
(
&
root
->
fs_info
->
fs_mutex
);
out_nolock:
btrfs_free_path
(
path
);
btrfs_btree_balance_dirty
(
root
);
return
ret
;
}
static
int
btrfs_ioctl
(
struct
inode
*
inode
,
struct
file
*
filp
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
...
...
@@ -2682,17 +2605,6 @@ static int btrfs_ioctl(struct inode *inode, struct file *filp, unsigned int
ret
=
create_snapshot
(
root
,
vol_args
.
name
,
namelen
);
WARN_ON
(
ret
);
break
;
case
BTRFS_IOC_ADD_DISK
:
if
(
copy_from_user
(
&
vol_args
,
(
struct
btrfs_ioctl_vol_args
__user
*
)
arg
,
sizeof
(
vol_args
)))
return
-
EFAULT
;
namelen
=
strlen
(
vol_args
.
name
);
if
(
namelen
>
BTRFS_VOL_NAME_MAX
)
return
-
EINVAL
;
vol_args
.
name
[
namelen
]
=
'\0'
;
ret
=
add_disk
(
root
,
vol_args
.
name
,
namelen
);
break
;
default:
return
-
ENOTTY
;
}
...
...
fs/btrfs/transaction.c
View file @
0cf6c620
...
...
@@ -150,13 +150,7 @@ int btrfs_commit_tree_roots(struct btrfs_trans_handle *trans,
struct
btrfs_fs_info
*
fs_info
=
root
->
fs_info
;
struct
btrfs_root
*
tree_root
=
fs_info
->
tree_root
;
struct
btrfs_root
*
extent_root
=
fs_info
->
extent_root
;
struct
btrfs_root
*
dev_root
=
fs_info
->
dev_root
;
if
(
btrfs_super_device_root
(
fs_info
->
disk_super
)
!=
bh_blocknr
(
dev_root
->
node
))
{
btrfs_set_super_device_root
(
fs_info
->
disk_super
,
bh_blocknr
(
dev_root
->
node
));
}
btrfs_write_dirty_block_groups
(
trans
,
extent_root
);
while
(
1
)
{
old_extent_block
=
btrfs_root_blocknr
(
&
extent_root
->
root_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