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
0afbaf8c
Commit
0afbaf8c
authored
Apr 18, 2008
by
Chris Mason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Btrfs: Set the btree inode i_size to OFFSET_MAX
Signed-off-by:
Chris Mason
<
chris.mason@oracle.com
>
parent
a40a90a0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
7 deletions
+26
-7
fs/btrfs/disk-io.c
fs/btrfs/disk-io.c
+26
-7
No files found.
fs/btrfs/disk-io.c
View file @
0afbaf8c
...
...
@@ -88,19 +88,35 @@ struct extent_map *btree_get_extent(struct inode *inode, struct page *page,
goto
out
;
}
em
->
start
=
0
;
em
->
len
=
i_size_read
(
inode
)
;
em
->
len
=
(
u64
)
-
1
;
em
->
block_start
=
0
;
em
->
bdev
=
inode
->
i_sb
->
s_bdev
;
spin_lock
(
&
em_tree
->
lock
);
ret
=
add_extent_mapping
(
em_tree
,
em
);
if
(
ret
==
-
EEXIST
)
{
u64
failed_start
=
em
->
start
;
u64
failed_len
=
em
->
len
;
printk
(
"failed to insert %Lu %Lu -> %Lu into tree
\n
"
,
em
->
start
,
em
->
len
,
em
->
block_start
);
free_extent_map
(
em
);
em
=
lookup_extent_mapping
(
em_tree
,
start
,
len
);
if
(
em
)
if
(
em
)
{
printk
(
"after failing, found %Lu %Lu %Lu
\n
"
,
em
->
start
,
em
->
len
,
em
->
block_start
);
ret
=
0
;
else
}
else
{
em
=
lookup_extent_mapping
(
em_tree
,
failed_start
,
failed_len
);
if
(
em
)
{
printk
(
"double failure lookup gives us "
"%Lu %Lu -> %Lu
\n
"
,
em
->
start
,
em
->
len
,
em
->
block_start
);
free_extent_map
(
em
);
}
ret
=
-
EIO
;
}
}
else
if
(
ret
)
{
free_extent_map
(
em
);
em
=
NULL
;
...
...
@@ -1108,7 +1124,13 @@ struct btrfs_root *open_ctree(struct super_block *sb,
fs_info
->
btree_inode
=
new_inode
(
sb
);
fs_info
->
btree_inode
->
i_ino
=
1
;
fs_info
->
btree_inode
->
i_nlink
=
1
;
fs_info
->
btree_inode
->
i_size
=
sb
->
s_bdev
->
bd_inode
->
i_size
;
/*
* we set the i_size on the btree inode to the max possible int.
* the real end of the address space is determined by all of
* the devices in the system
*/
fs_info
->
btree_inode
->
i_size
=
OFFSET_MAX
;
fs_info
->
btree_inode
->
i_mapping
->
a_ops
=
&
btree_aops
;
fs_info
->
btree_inode
->
i_mapping
->
backing_dev_info
=
&
fs_info
->
bdi
;
...
...
@@ -1196,9 +1218,6 @@ struct btrfs_root *open_ctree(struct super_block *sb,
tree_root
->
stripesize
=
stripesize
;
sb_set_blocksize
(
sb
,
sectorsize
);
i_size_write
(
fs_info
->
btree_inode
,
btrfs_super_total_bytes
(
disk_super
));
if
(
strncmp
((
char
*
)(
&
disk_super
->
magic
),
BTRFS_MAGIC
,
sizeof
(
disk_super
->
magic
)))
{
printk
(
"btrfs: valid FS not found on %s
\n
"
,
sb
->
s_id
);
...
...
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