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
21df1193
Commit
21df1193
authored
Jan 10, 2004
by
Nathan Scott
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[XFS] Fix an XFS release_page case where unwritten extents may cause I/O incorrectly.
SGI Modid: 2.5.x-xfs:slinx:163128a
parent
957fb7ef
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
6 additions
and
5 deletions
+6
-5
fs/xfs/linux/xfs_aops.c
fs/xfs/linux/xfs_aops.c
+6
-5
No files found.
fs/xfs/linux/xfs_aops.c
View file @
21df1193
...
@@ -394,6 +394,7 @@ map_unwritten(
...
@@ -394,6 +394,7 @@ map_unwritten(
unsigned
long
p_offset
,
unsigned
long
p_offset
,
int
block_bits
,
int
block_bits
,
xfs_iomap_t
*
iomapp
,
xfs_iomap_t
*
iomapp
,
int
startio
,
int
all_bh
)
int
all_bh
)
{
{
struct
buffer_head
*
bh
=
curr
;
struct
buffer_head
*
bh
=
curr
;
...
@@ -469,7 +470,7 @@ map_unwritten(
...
@@ -469,7 +470,7 @@ map_unwritten(
break
;
break
;
nblocks
+=
bs
;
nblocks
+=
bs
;
atomic_add
(
bs
,
&
pb
->
pb_io_remaining
);
atomic_add
(
bs
,
&
pb
->
pb_io_remaining
);
convert_page
(
inode
,
page
,
iomapp
,
pb
,
1
,
all_bh
);
convert_page
(
inode
,
page
,
iomapp
,
pb
,
startio
,
all_bh
);
}
}
if
(
tindex
==
tlast
&&
if
(
tindex
==
tlast
&&
...
@@ -479,7 +480,7 @@ map_unwritten(
...
@@ -479,7 +480,7 @@ map_unwritten(
if
(
page
)
{
if
(
page
)
{
nblocks
+=
bs
;
nblocks
+=
bs
;
atomic_add
(
bs
,
&
pb
->
pb_io_remaining
);
atomic_add
(
bs
,
&
pb
->
pb_io_remaining
);
convert_page
(
inode
,
page
,
iomapp
,
pb
,
1
,
all_bh
);
convert_page
(
inode
,
page
,
iomapp
,
pb
,
startio
,
all_bh
);
}
}
}
}
}
}
...
@@ -584,7 +585,7 @@ convert_page(
...
@@ -584,7 +585,7 @@ convert_page(
if
(
buffer_unwritten
(
bh
)
&&
!
bh
->
b_end_io
)
{
if
(
buffer_unwritten
(
bh
)
&&
!
bh
->
b_end_io
)
{
ASSERT
(
tmp
->
iomap_flags
&
IOMAP_UNWRITTEN
);
ASSERT
(
tmp
->
iomap_flags
&
IOMAP_UNWRITTEN
);
map_unwritten
(
inode
,
page
,
head
,
bh
,
map_unwritten
(
inode
,
page
,
head
,
bh
,
offset
,
bbits
,
tmp
,
all_bh
);
offset
,
bbits
,
tmp
,
startio
,
all_bh
);
}
else
if
(
!
(
buffer_unwritten
(
bh
)
&&
buffer_locked
(
bh
)))
{
}
else
if
(
!
(
buffer_unwritten
(
bh
)
&&
buffer_locked
(
bh
)))
{
map_buffer_at_offset
(
page
,
bh
,
offset
,
bbits
,
tmp
);
map_buffer_at_offset
(
page
,
bh
,
offset
,
bbits
,
tmp
);
if
(
buffer_unwritten
(
bh
))
{
if
(
buffer_unwritten
(
bh
))
{
...
@@ -717,8 +718,8 @@ page_state_convert(
...
@@ -717,8 +718,8 @@ page_state_convert(
if
(
!
bh
->
b_end_io
)
{
if
(
!
bh
->
b_end_io
)
{
err
=
map_unwritten
(
inode
,
page
,
err
=
map_unwritten
(
inode
,
page
,
head
,
bh
,
p_offset
,
head
,
bh
,
p_offset
,
inode
->
i_blkbits
,
inode
->
i_blkbits
,
iomp
,
iomp
,
unmapped
);
startio
,
unmapped
);
if
(
err
)
{
if
(
err
)
{
goto
error
;
goto
error
;
}
}
...
...
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