From 98de8e9133b023ead5481614ca7c6651903d0bd3 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sat, 9 Nov 2002 02:40:34 -0800 Subject: [PATCH] [PATCH] switch over loop.c to ->sendfile last direct call into fs code is gone --- drivers/block/loop.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/block/loop.c b/drivers/block/loop.c index d0c2add3964a..de7c3e9cbec3 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -303,22 +303,22 @@ do_lo_receive(struct loop_device *lo, struct bio_vec *bvec, int bsize, loff_t pos) { struct lo_read_data cookie; - read_descriptor_t desc; struct file *file; + int error; cookie.lo = lo; cookie.data = kmap(bvec->bv_page) + bvec->bv_offset; cookie.bsize = bsize; - desc.written = 0; - desc.count = bvec->bv_len; - desc.buf = (char*)&cookie; - desc.error = 0; + + /* umm, what does this lock actually try to protect? */ spin_lock_irq(&lo->lo_lock); file = lo->lo_backing_file; spin_unlock_irq(&lo->lo_lock); - do_generic_file_read(file, &pos, &desc, lo_read_actor); + + error = file->f_op->sendfile(file, &pos, bvec->bv_len, + lo_read_actor, &cookie); kunmap(bvec->bv_page); - return desc.error; + return error; } static int @@ -682,7 +682,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file, * If we can't read - sorry. If we only can't write - well, * it's going to be read-only. */ - if (!aops->readpage) + if (!inode->i_fop->sendfile) goto out_putf; if (!aops->prepare_write || !aops->commit_write) -- 2.39.5