summaryrefslogtreecommitdiff
path: root/include/linux/loop.h
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2004-02-18 04:46:25 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-02-18 04:46:25 -0800
commit3185e663d57141fd19980417b753c48f0c9918c8 (patch)
tree826d71ea727e66b755ec7bbbd1b2c723a8ded7a7 /include/linux/loop.h
parenta34c0ae9ebd6ba36cb5b3b12ffe8b3ef83a50c0b (diff)
[PATCH] remove useless highmem bounce from loop/cryptoloop
From: Ben Slusky <sluskyb@paranoiacs.org> The attached patch changes the loop device transfer functions (including cryptoloop transfers) to accept page/offset pairs instead of virtual addresses, and removes the redundant kmaps in do_lo_send, do_lo_receive, and loop_transfer_bio. Per Andrew Morton's request a while back.
Diffstat (limited to 'include/linux/loop.h')
-rw-r--r--include/linux/loop.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/include/linux/loop.h b/include/linux/loop.h
index a9a6525c2112..31754df95143 100644
--- a/include/linux/loop.h
+++ b/include/linux/loop.h
@@ -34,8 +34,9 @@ struct loop_device {
loff_t lo_sizelimit;
int lo_flags;
int (*transfer)(struct loop_device *, int cmd,
- char *raw_buf, char *loop_buf, int size,
- sector_t real_block);
+ struct page *raw_page, unsigned raw_off,
+ struct page *loop_page, unsigned loop_off,
+ int size, sector_t real_block);
char lo_file_name[LO_NAME_SIZE];
char lo_crypt_name[LO_NAME_SIZE];
char lo_encrypt_key[LO_KEY_SIZE];
@@ -127,8 +128,10 @@ struct loop_info64 {
/* Support for loadable transfer modules */
struct loop_func_table {
int number; /* filter type */
- int (*transfer)(struct loop_device *lo, int cmd, char *raw_buf,
- char *loop_buf, int size, sector_t real_block);
+ int (*transfer)(struct loop_device *lo, int cmd,
+ struct page *raw_page, unsigned raw_off,
+ struct page *loop_page, unsigned loop_off,
+ int size, sector_t real_block);
int (*init)(struct loop_device *, const struct loop_info64 *);
/* release is called from loop_unregister_transfer or clr_fd */
int (*release)(struct loop_device *);