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
35ebb934
Commit
35ebb934
authored
Oct 30, 2007
by
Chris Mason
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Btrfs: Fix PAGE_CACHE_SHIFT shifts on 32 bit machines
Signed-off-by:
Chris Mason
<
chris.mason@oracle.com
>
parent
2ff3e9b6
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
22 deletions
+26
-22
fs/btrfs/disk-io.c
fs/btrfs/disk-io.c
+1
-1
fs/btrfs/extent_map.c
fs/btrfs/extent_map.c
+15
-12
fs/btrfs/file.c
fs/btrfs/file.c
+2
-1
fs/btrfs/inode.c
fs/btrfs/inode.c
+7
-7
fs/btrfs/transaction.c
fs/btrfs/transaction.c
+1
-1
No files found.
fs/btrfs/disk-io.c
View file @
35ebb934
...
...
@@ -159,7 +159,7 @@ static int csum_tree_block(struct btrfs_root *root, struct extent_buffer *buf,
int
csum_dirty_buffer
(
struct
btrfs_root
*
root
,
struct
page
*
page
)
{
struct
extent_map_tree
*
tree
;
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
found_start
;
int
found_level
;
unsigned
long
len
;
...
...
fs/btrfs/extent_map.c
View file @
35ebb934
...
...
@@ -1229,7 +1229,7 @@ EXPORT_SYMBOL(test_range_bit);
static
int
check_page_uptodate
(
struct
extent_map_tree
*
tree
,
struct
page
*
page
)
{
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
if
(
test_range_bit
(
tree
,
start
,
end
,
EXTENT_UPTODATE
,
1
))
SetPageUptodate
(
page
);
...
...
@@ -1243,7 +1243,7 @@ static int check_page_uptodate(struct extent_map_tree *tree,
static
int
check_page_locked
(
struct
extent_map_tree
*
tree
,
struct
page
*
page
)
{
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
if
(
!
test_range_bit
(
tree
,
start
,
end
,
EXTENT_LOCKED
,
0
))
unlock_page
(
page
);
...
...
@@ -1257,7 +1257,7 @@ static int check_page_locked(struct extent_map_tree *tree,
static
int
check_page_writeback
(
struct
extent_map_tree
*
tree
,
struct
page
*
page
)
{
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
if
(
!
test_range_bit
(
tree
,
start
,
end
,
EXTENT_WRITEBACK
,
0
))
end_page_writeback
(
page
);
...
...
@@ -1296,7 +1296,8 @@ static int end_bio_extent_writepage(struct bio *bio,
do
{
struct
page
*
page
=
bvec
->
bv_page
;
start
=
(
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
start
=
((
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
end
=
start
+
bvec
->
bv_len
-
1
;
if
(
bvec
->
bv_offset
==
0
&&
bvec
->
bv_len
==
PAGE_CACHE_SIZE
)
...
...
@@ -1361,7 +1362,8 @@ static int end_bio_extent_readpage(struct bio *bio,
do
{
struct
page
*
page
=
bvec
->
bv_page
;
start
=
(
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
start
=
((
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
end
=
start
+
bvec
->
bv_len
-
1
;
if
(
bvec
->
bv_offset
==
0
&&
bvec
->
bv_len
==
PAGE_CACHE_SIZE
)
...
...
@@ -1427,7 +1429,8 @@ static int end_bio_extent_preparewrite(struct bio *bio,
do
{
struct
page
*
page
=
bvec
->
bv_page
;
start
=
(
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
start
=
((
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
)
+
bvec
->
bv_offset
;
end
=
start
+
bvec
->
bv_len
-
1
;
if
(
--
bvec
>=
bio
->
bi_io_vec
)
...
...
@@ -1503,7 +1506,7 @@ int extent_read_full_page(struct extent_map_tree *tree, struct page *page,
get_extent_t
*
get_extent
)
{
struct
inode
*
inode
=
page
->
mapping
->
host
;
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_end
=
start
+
PAGE_CACHE_SIZE
-
1
;
u64
end
;
u64
cur
=
start
;
...
...
@@ -1608,7 +1611,7 @@ int extent_write_full_page(struct extent_map_tree *tree, struct page *page,
struct
writeback_control
*
wbc
)
{
struct
inode
*
inode
=
page
->
mapping
->
host
;
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_end
=
start
+
PAGE_CACHE_SIZE
-
1
;
u64
end
;
u64
cur
=
start
;
...
...
@@ -1750,7 +1753,7 @@ EXPORT_SYMBOL(extent_write_full_page);
int
extent_invalidatepage
(
struct
extent_map_tree
*
tree
,
struct
page
*
page
,
unsigned
long
offset
)
{
u64
start
=
(
page
->
index
<<
PAGE_CACHE_SHIFT
);
u64
start
=
(
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
);
u64
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
size_t
blocksize
=
page
->
mapping
->
host
->
i_sb
->
s_blocksize
;
...
...
@@ -1792,7 +1795,7 @@ int extent_prepare_write(struct extent_map_tree *tree,
struct
inode
*
inode
,
struct
page
*
page
,
unsigned
from
,
unsigned
to
,
get_extent_t
*
get_extent
)
{
u64
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_end
=
page_start
+
PAGE_CACHE_SIZE
-
1
;
u64
block_start
;
u64
orig_block_start
;
...
...
@@ -1890,7 +1893,7 @@ EXPORT_SYMBOL(extent_prepare_write);
int
try_release_extent_mapping
(
struct
extent_map_tree
*
tree
,
struct
page
*
page
)
{
struct
extent_map
*
em
;
u64
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
u64
orig_start
=
start
;
int
ret
=
1
;
...
...
@@ -2202,7 +2205,7 @@ int clear_extent_buffer_dirty(struct extent_map_tree *tree,
if
((
i
==
0
&&
(
eb
->
start
&
(
PAGE_CACHE_SIZE
-
1
)))
||
((
i
==
num_pages
-
1
)
&&
((
eb
->
start
+
eb
->
len
)
&
(
PAGE_CACHE_SIZE
-
1
))))
{
start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
end
=
start
+
PAGE_CACHE_SIZE
-
1
;
if
(
test_range_bit
(
tree
,
start
,
end
,
EXTENT_DIRTY
,
0
))
{
...
...
fs/btrfs/file.c
View file @
35ebb934
...
...
@@ -301,7 +301,8 @@ static int dirty_and_release_pages(struct btrfs_trans_handle *trans,
SetPageUptodate
(
p
);
set_page_dirty
(
p
);
}
last_end
=
pages
[
num_pages
-
1
]
->
index
<<
PAGE_CACHE_SHIFT
;
last_end
=
(
u64
)(
pages
[
num_pages
-
1
]
->
index
)
<<
PAGE_CACHE_SHIFT
;
last_end
+=
PAGE_CACHE_SIZE
-
1
;
set_extent_delalloc
(
em_tree
,
start_pos
,
end_of_last_block
,
GFP_NOFS
);
...
...
fs/btrfs/inode.c
View file @
35ebb934
...
...
@@ -111,7 +111,7 @@ int btrfs_writepage_io_hook(struct page *page, u64 start, u64 end)
struct
btrfs_trans_handle
*
trans
;
char
*
kaddr
;
int
ret
;
u64
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
size_t
offset
=
start
-
page_start
;
mutex_lock
(
&
root
->
fs_info
->
fs_mutex
);
...
...
@@ -160,7 +160,7 @@ out:
int
btrfs_readpage_end_io_hook
(
struct
page
*
page
,
u64
start
,
u64
end
)
{
size_t
offset
=
start
-
(
page
->
index
<<
PAGE_CACHE_SHIFT
);
size_t
offset
=
start
-
(
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
);
struct
inode
*
inode
=
page
->
mapping
->
host
;
struct
extent_map_tree
*
em_tree
=
&
BTRFS_I
(
inode
)
->
extent_tree
;
char
*
kaddr
;
...
...
@@ -688,7 +688,7 @@ static int btrfs_cow_one_page(struct inode *inode, struct page *page,
char
*
kaddr
;
int
ret
=
0
;
struct
extent_map_tree
*
em_tree
=
&
BTRFS_I
(
inode
)
->
extent_tree
;
u64
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
u64
page_end
=
page_start
+
PAGE_CACHE_SIZE
-
1
;
set_page_extent_mapped
(
page
);
...
...
@@ -739,7 +739,7 @@ static int btrfs_truncate_page(struct address_space *mapping, loff_t from)
goto
out
;
}
}
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
ret
=
btrfs_cow_one_page
(
inode
,
page
,
offset
);
...
...
@@ -1618,7 +1618,7 @@ again:
goto
out
;
}
extent_offset
=
(
page
->
index
<<
PAGE_CACHE_SHIFT
)
-
extent_offset
=
(
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
)
-
extent_start
+
page_offset
;
copy_size
=
min_t
(
u64
,
PAGE_CACHE_SIZE
-
page_offset
,
size
-
extent_offset
);
...
...
@@ -1769,7 +1769,7 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct page *page)
lock_page
(
page
);
wait_on_page_writeback
(
page
);
size
=
i_size_read
(
inode
);
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
if
((
page
->
mapping
!=
inode
->
i_mapping
)
||
(
page_start
>
size
))
{
...
...
@@ -2065,7 +2065,7 @@ int btrfs_defrag_file(struct file *file) {
goto
out_unlock
;
}
}
page_start
=
page
->
index
<<
PAGE_CACHE_SHIFT
;
page_start
=
(
u64
)
page
->
index
<<
PAGE_CACHE_SHIFT
;
page_end
=
page_start
+
PAGE_CACHE_SIZE
-
1
;
lock_extent
(
em_tree
,
page_start
,
page_end
,
GFP_NOFS
);
...
...
fs/btrfs/transaction.c
View file @
35ebb934
...
...
@@ -169,7 +169,7 @@ int btrfs_write_and_wait_transaction(struct btrfs_trans_handle *trans,
clear_extent_dirty
(
dirty_pages
,
start
,
end
,
GFP_NOFS
);
while
(
start
<=
end
)
{
index
=
start
>>
PAGE_CACHE_SHIFT
;
start
=
(
index
+
1
)
<<
PAGE_CACHE_SHIFT
;
start
=
(
u64
)(
index
+
1
)
<<
PAGE_CACHE_SHIFT
;
page
=
find_lock_page
(
btree_inode
->
i_mapping
,
index
);
if
(
!
page
)
continue
;
...
...
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