diff options
author | Matthew Wilcox <matthew.r.wilcox@intel.com> | 2015-02-16 18:59:06 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-16 20:56:03 -0500 |
commit | 4c0ccfef2e9f7418a6eb0bf07a2fc8f216365b18 (patch) | |
tree | ca1c0bebddf210eab5e5428bb0416d6bfc71495b /mm | |
parent | f7ca90b160307d63aaedab8bd451c24a182db20f (diff) |
dax,ext2: replace xip_truncate_page with dax_truncate_page
It takes a get_block parameter just like nobh_truncate_page() and
block_truncate_page()
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Andreas Dilger <andreas.dilger@intel.com>
Cc: Boaz Harrosh <boaz@plexistor.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/filemap_xip.c | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c index 59fb387b2238..8e3f99b61959 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c | |||
@@ -22,43 +22,3 @@ | |||
22 | #include <asm/tlbflush.h> | 22 | #include <asm/tlbflush.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | 24 | ||
25 | /* | ||
26 | * truncate a page used for execute in place | ||
27 | * functionality is analog to block_truncate_page but does use get_xip_mem | ||
28 | * to get the page instead of page cache | ||
29 | */ | ||
30 | int | ||
31 | xip_truncate_page(struct address_space *mapping, loff_t from) | ||
32 | { | ||
33 | pgoff_t index = from >> PAGE_CACHE_SHIFT; | ||
34 | unsigned offset = from & (PAGE_CACHE_SIZE-1); | ||
35 | unsigned blocksize; | ||
36 | unsigned length; | ||
37 | void *xip_mem; | ||
38 | unsigned long xip_pfn; | ||
39 | int err; | ||
40 | |||
41 | BUG_ON(!mapping->a_ops->get_xip_mem); | ||
42 | |||
43 | blocksize = 1 << mapping->host->i_blkbits; | ||
44 | length = offset & (blocksize - 1); | ||
45 | |||
46 | /* Block boundary? Nothing to do */ | ||
47 | if (!length) | ||
48 | return 0; | ||
49 | |||
50 | length = blocksize - length; | ||
51 | |||
52 | err = mapping->a_ops->get_xip_mem(mapping, index, 0, | ||
53 | &xip_mem, &xip_pfn); | ||
54 | if (unlikely(err)) { | ||
55 | if (err == -ENODATA) | ||
56 | /* Hole? No need to truncate */ | ||
57 | return 0; | ||
58 | else | ||
59 | return err; | ||
60 | } | ||
61 | memset(xip_mem + offset, 0, length); | ||
62 | return 0; | ||
63 | } | ||
64 | EXPORT_SYMBOL_GPL(xip_truncate_page); | ||