diff options
author | Carsten Otte <cotte@de.ibm.com> | 2007-06-15 02:16:22 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-07-10 02:04:15 -0400 |
commit | d054fe3d10cc1f9aec01378c38caa32dffdd0090 (patch) | |
tree | 3c54ddbac87b25eb44526cf2ad4303f21dbe3cdd | |
parent | 932cc6d4f7c35bbf70bce8cc865b6033ff49c9c0 (diff) |
xip sendfile removal
This patch removes xip_file_sendfile, the sendfile implementation for
xip without replacement. Those customers that use xip on s390 are not
using sendfile() as far as we know, and so far s390 is the only platform
this could potentially be used on so far.
Having sendfile is not a popular feature for execute in place file
systems, however we have a working implementation of splice_read() based
on fs/splice.c if anyone asks for it.
At this point in time, it does not seem preferable to merge
splice_read() for xip because it causes extra maintenence effort due to
code duplication and it requires struct page behind the xip memory
segment. We'd like to get rid of that in favor of supporting flash based
embedded platforms (Monta Vista work) soon.
Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r-- | fs/ext2/file.c | 1 | ||||
-rw-r--r-- | include/linux/fs.h | 3 | ||||
-rw-r--r-- | mm/filemap_xip.c | 22 |
3 files changed, 0 insertions, 26 deletions
diff --git a/fs/ext2/file.c b/fs/ext2/file.c index 072a1909b2bc..04afeecaaef3 100644 --- a/fs/ext2/file.c +++ b/fs/ext2/file.c | |||
@@ -70,7 +70,6 @@ const struct file_operations ext2_xip_file_operations = { | |||
70 | .open = generic_file_open, | 70 | .open = generic_file_open, |
71 | .release = ext2_release_file, | 71 | .release = ext2_release_file, |
72 | .fsync = ext2_sync_file, | 72 | .fsync = ext2_sync_file, |
73 | .sendfile = xip_file_sendfile, | ||
74 | }; | 73 | }; |
75 | #endif | 74 | #endif |
76 | 75 | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 87c1d3e9d6cb..894620e9402c 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1791,9 +1791,6 @@ extern int nonseekable_open(struct inode * inode, struct file * filp); | |||
1791 | #ifdef CONFIG_FS_XIP | 1791 | #ifdef CONFIG_FS_XIP |
1792 | extern ssize_t xip_file_read(struct file *filp, char __user *buf, size_t len, | 1792 | extern ssize_t xip_file_read(struct file *filp, char __user *buf, size_t len, |
1793 | loff_t *ppos); | 1793 | loff_t *ppos); |
1794 | extern ssize_t xip_file_sendfile(struct file *in_file, loff_t *ppos, | ||
1795 | size_t count, read_actor_t actor, | ||
1796 | void *target); | ||
1797 | extern int xip_file_mmap(struct file * file, struct vm_area_struct * vma); | 1794 | extern int xip_file_mmap(struct file * file, struct vm_area_struct * vma); |
1798 | extern ssize_t xip_file_write(struct file *filp, const char __user *buf, | 1795 | extern ssize_t xip_file_write(struct file *filp, const char __user *buf, |
1799 | size_t len, loff_t *ppos); | 1796 | size_t len, loff_t *ppos); |
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c index fa360e566d88..65ffc321f0c0 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c | |||
@@ -159,28 +159,6 @@ xip_file_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) | |||
159 | } | 159 | } |
160 | EXPORT_SYMBOL_GPL(xip_file_read); | 160 | EXPORT_SYMBOL_GPL(xip_file_read); |
161 | 161 | ||
162 | ssize_t | ||
163 | xip_file_sendfile(struct file *in_file, loff_t *ppos, | ||
164 | size_t count, read_actor_t actor, void *target) | ||
165 | { | ||
166 | read_descriptor_t desc; | ||
167 | |||
168 | if (!count) | ||
169 | return 0; | ||
170 | |||
171 | desc.written = 0; | ||
172 | desc.count = count; | ||
173 | desc.arg.data = target; | ||
174 | desc.error = 0; | ||
175 | |||
176 | do_xip_mapping_read(in_file->f_mapping, &in_file->f_ra, in_file, | ||
177 | ppos, &desc, actor); | ||
178 | if (desc.written) | ||
179 | return desc.written; | ||
180 | return desc.error; | ||
181 | } | ||
182 | EXPORT_SYMBOL_GPL(xip_file_sendfile); | ||
183 | |||
184 | /* | 162 | /* |
185 | * __xip_unmap is invoked from xip_unmap and | 163 | * __xip_unmap is invoked from xip_unmap and |
186 | * xip_write | 164 | * xip_write |