|
@@ -391,6 +391,7 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
|
|
|
pgoff_t next;
|
|
|
int i;
|
|
|
int ret = 0;
|
|
|
+ int ret2 = 0;
|
|
|
int did_range_unmap = 0;
|
|
|
int wrapped = 0;
|
|
|
|
|
@@ -438,9 +439,13 @@ int invalidate_inode_pages2_range(struct address_space *mapping,
|
|
|
}
|
|
|
}
|
|
|
BUG_ON(page_mapped(page));
|
|
|
- ret = do_launder_page(mapping, page);
|
|
|
- if (ret == 0 && !invalidate_complete_page2(mapping, page))
|
|
|
- ret = -EIO;
|
|
|
+ ret2 = do_launder_page(mapping, page);
|
|
|
+ if (ret2 == 0) {
|
|
|
+ if (!invalidate_complete_page2(mapping, page))
|
|
|
+ ret2 = -EIO;
|
|
|
+ }
|
|
|
+ if (ret2 < 0)
|
|
|
+ ret = ret2;
|
|
|
unlock_page(page);
|
|
|
}
|
|
|
pagevec_release(&pvec);
|