ceph: use default file splice read callback
authorYan, Zheng <zyan@redhat.com>
Wed, 9 Nov 2016 08:47:54 +0000 (16:47 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 10 Nov 2016 19:13:04 +0000 (20:13 +0100)
Splice read/write implementation changed recently. When using
generic_file_splice_read(), iov_iter with type == ITER_PIPE is
passed to filesystem's read_iter callback. But ceph_sync_read()
can't serve ITER_PIPE iov_iter correctly (ITER_PIPE iov_iter
expects pages from page cache).

Fixing ceph_sync_read() requires a big patch. So use default
splice read callback for now.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/file.c

index 18630e80020809f18a6a534b2a88249bfa81bd80..f995e3528a33107bfa1caab3b09b2b5f5af8cf32 100644 (file)
@@ -1770,7 +1770,6 @@ const struct file_operations ceph_file_fops = {
        .fsync = ceph_fsync,
        .lock = ceph_lock,
        .flock = ceph_flock,
-       .splice_read = generic_file_splice_read,
        .splice_write = iter_file_splice_write,
        .unlocked_ioctl = ceph_ioctl,
        .compat_ioctl   = ceph_ioctl,