projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[deliverable/linux.git]
/
fs
/
btrfs
/
ordered-data.c
diff --git
a/fs/btrfs/ordered-data.c
b/fs/btrfs/ordered-data.c
index f107312970405da1e3218118a8d0555894955c59..e5ed56729607a82246cac22a229d105efa562509 100644
(file)
--- a/
fs/btrfs/ordered-data.c
+++ b/
fs/btrfs/ordered-data.c
@@
-836,9
+836,16
@@
int btrfs_ordered_update_i_size(struct inode *inode, u64 offset,
* if the disk i_size is already at the inode->i_size, or
* this ordered extent is inside the disk i_size, we're done
*/
* if the disk i_size is already at the inode->i_size, or
* this ordered extent is inside the disk i_size, we're done
*/
- if (disk_i_size == i_size || offset <= disk_i_size) {
+ if (disk_i_size == i_size)
+ goto out;
+
+ /*
+ * We still need to update disk_i_size if outstanding_isize is greater
+ * than disk_i_size.
+ */
+ if (offset <= disk_i_size &&
+ (!ordered || ordered->outstanding_isize <= disk_i_size))
goto out;
goto out;
- }
/*
* walk backward from this ordered extent to disk_i_size.
/*
* walk backward from this ordered extent to disk_i_size.
@@
-870,7
+877,7
@@
int btrfs_ordered_update_i_size(struct inode *inode, u64 offset,
break;
if (test->file_offset >= i_size)
break;
break;
if (test->file_offset >= i_size)
break;
- if (
test->file_offset >=
disk_i_size) {
+ if (
entry_end(test) >
disk_i_size) {
/*
* we don't update disk_i_size now, so record this
* undealt i_size. Or we will not know the real
/*
* we don't update disk_i_size now, so record this
* undealt i_size. Or we will not know the real
This page took
0.023716 seconds
and
5
git commands to generate.