projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Btrfs: try not to ENOSPC on log replay
[firefly-linux-kernel-4.4.55.git]
/
fs
/
btrfs
/
extent_io.c
diff --git
a/fs/btrfs/extent_io.c
b/fs/btrfs/extent_io.c
index e7e7afb4a87268211e8b0ef881a6eeac0068eefd..84ceff6abbc11f66e8e3f96d24740d67cbacd1ed 100644
(file)
--- a/
fs/btrfs/extent_io.c
+++ b/
fs/btrfs/extent_io.c
@@
-1624,6
+1624,7
@@
again:
* shortening the size of the delalloc range we're searching
*/
free_extent_state(cached_state);
* shortening the size of the delalloc range we're searching
*/
free_extent_state(cached_state);
+ cached_state = NULL;
if (!loops) {
unsigned long offset = (*start) & (PAGE_CACHE_SIZE - 1);
max_bytes = PAGE_CACHE_SIZE - offset;
if (!loops) {
unsigned long offset = (*start) & (PAGE_CACHE_SIZE - 1);
max_bytes = PAGE_CACHE_SIZE - offset;
@@
-2356,7
+2357,7
@@
int end_extent_writepage(struct page *page, int err, u64 start, u64 end)
{
int uptodate = (err == 0);
struct extent_io_tree *tree;
{
int uptodate = (err == 0);
struct extent_io_tree *tree;
- int ret;
+ int ret
= 0
;
tree = &BTRFS_I(page->mapping->host)->io_tree;
tree = &BTRFS_I(page->mapping->host)->io_tree;
@@
-2370,6
+2371,8
@@
int end_extent_writepage(struct page *page, int err, u64 start, u64 end)
if (!uptodate) {
ClearPageUptodate(page);
SetPageError(page);
if (!uptodate) {
ClearPageUptodate(page);
SetPageError(page);
+ ret = ret < 0 ? ret : -EIO;
+ mapping_set_error(page->mapping, ret);
}
return 0;
}
}
return 0;
}