diff options
author | Andi Kleen <andi@firstfloor.org> | 2009-09-16 05:50:13 -0400 |
---|---|---|
committer | Andi Kleen <ak@linux.intel.com> | 2009-09-16 05:50:13 -0400 |
commit | 257187362123f15d9d1e09918cf87cebbea4e786 (patch) | |
tree | 92b768ad3f2afeda13a2acadc6d5766090ebcc60 /include/linux | |
parent | 83f786680aec8d030184f7ced1a0a3dd8ac81764 (diff) |
HWPOISON: Define a new error_remove_page address space op for async truncation
Truncating metadata pages is not safe right now before
we haven't audited all file systems.
To enable truncation only for data address space define
a new address_space callback error_remove_page.
This is used for memory_failure.c memory error handling.
This can be then set to truncate_inode_page()
This patch just defines the new operation and adds documentation.
Callers and users come in followon patches.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/fs.h | 1 | ||||
-rw-r--r-- | include/linux/mm.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index b21cf6b9c80b..4f47afd37647 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -595,6 +595,7 @@ struct address_space_operations { | |||
595 | int (*launder_page) (struct page *); | 595 | int (*launder_page) (struct page *); |
596 | int (*is_partially_uptodate) (struct page *, read_descriptor_t *, | 596 | int (*is_partially_uptodate) (struct page *, read_descriptor_t *, |
597 | unsigned long); | 597 | unsigned long); |
598 | int (*error_remove_page)(struct address_space *, struct page *); | ||
598 | }; | 599 | }; |
599 | 600 | ||
600 | /* | 601 | /* |
diff --git a/include/linux/mm.h b/include/linux/mm.h index b05bbde0296d..a16018f7d61c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -795,6 +795,7 @@ extern int vmtruncate(struct inode * inode, loff_t offset); | |||
795 | extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end); | 795 | extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end); |
796 | 796 | ||
797 | int truncate_inode_page(struct address_space *mapping, struct page *page); | 797 | int truncate_inode_page(struct address_space *mapping, struct page *page); |
798 | int generic_error_remove_page(struct address_space *mapping, struct page *page); | ||
798 | 799 | ||
799 | int invalidate_inode_page(struct page *page); | 800 | int invalidate_inode_page(struct page *page); |
800 | 801 | ||