@@ -41,6 +41,8 @@
#include <linux/pagevec.h>
#include <linux/writeback.h>
+STATIC void xfs_vm_invalidatepage(struct page *, unsigned long);
+
STATIC void
xfs_count_page_state(
struct page *page,
@@ -1061,7 +1063,7 @@ error:
*/
if (err != -EAGAIN) {
if (!unmapped)
- block_invalidatepage(page, 0);
+ xfs_vm_invalidatepage(page, 0);
We pass in an offset of zero here...
@@ -1458,6 +1468,32 @@ xfs_vm_invalidatepage(
{
xfs_page_trace(XFS_INVALIDPAGE_ENTER,
page->mapping->host, page, offset);
+
+ /*
+ * Need to clear private flags from buffers on partial
+ * page truncations ourselves. Same inner loop as
+ * block_invalidatepage() is used.
+ */
+ if (offset && page_has_buffers(page)) {
And only do this code for non-zero offsets. Are you sure this is correct?
|