summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAndrew Morton <akpm@digeo.com>2002-10-13 02:59:10 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-10-13 02:59:10 -0700
commit2dcb8ff9ea7bfdc161eec1eeb8f94c2ba5c3c8a8 (patch)
tree950a304885d589d362e4aae076b30ac09452a179 /include/linux
parent59791303f2e94317415f09b3b0fe888ffaed9cdb (diff)
[PATCH] remove kiobufs
This patch from Christoph Hellwig removes the kiobuf/kiovec infrastructure. This affects three subsystems: video-buf.c: This patch includes an earlier diff from Gerd which converts video-buf.c to use get_user_pages() directly. Gerd has acked this patch. LVM1: Is now even more broken. drivers/mtd/devices/blkmtd.c: blkmtd is broken by this change. I contacted Simon Evans, who said "I had done a rewrite of blkmtd anyway and just need to convert it to BIO. Feel free to break it in the 2.5 tree, it will force me to finish my code." Neither EVMS nor LVM2 use kiobufs. The only remaining breakage of which I am aware is a proprietary MPEG2 streaming module. It could use get_user_pages().
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/buffer_head.h1
-rw-r--r--include/linux/iobuf.h88
2 files changed, 0 insertions, 89 deletions
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index 71732e1216fc..0760d97cd6f9 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -32,7 +32,6 @@ enum bh_state_bits {
#define MAX_BUF_PER_PAGE (PAGE_CACHE_SIZE / 512)
struct page;
-struct kiobuf;
struct buffer_head;
struct address_space;
typedef void (bh_end_io_t)(struct buffer_head *bh, int uptodate);
diff --git a/include/linux/iobuf.h b/include/linux/iobuf.h
deleted file mode 100644
index fb147b5c48a7..000000000000
--- a/include/linux/iobuf.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * iobuf.h
- *
- * Defines the structures used to track abstract kernel-space io buffers.
- *
- */
-
-#ifndef __LINUX_IOBUF_H
-#define __LINUX_IOBUF_H
-
-#include <linux/mm.h>
-#include <linux/init.h>
-#include <linux/wait.h>
-#include <asm/atomic.h>
-
-/*
- * The kiobuf structure describes a physical set of pages reserved
- * locked for IO. The reference counts on each page will have been
- * incremented, and the flags field will indicate whether or not we have
- * pre-locked all of the pages for IO.
- *
- * kiobufs may be passed in arrays to form a kiovec, but we must
- * preserve the property that no page is present more than once over the
- * entire iovec.
- */
-
-#define KIO_MAX_ATOMIC_IO 512 /* in kb */
-#define KIO_STATIC_PAGES (KIO_MAX_ATOMIC_IO / (PAGE_SIZE >> 10) + 1)
-#define KIO_MAX_SECTORS (KIO_MAX_ATOMIC_IO * 2)
-
-/* The main kiobuf struct */
-
-struct kiobuf
-{
- int nr_pages; /* Pages actually referenced */
- int array_len; /* Space in the allocated lists */
- int offset; /* Offset to start of valid data */
- int length; /* Number of valid bytes of data */
-
- /* Keep separate track of the physical addresses and page
- * structs involved. If we do IO to a memory-mapped device
- * region, there won't necessarily be page structs defined for
- * every address. */
-
- struct page ** maplist;
-
- unsigned int locked : 1; /* If set, pages has been locked */
-
- /* Always embed enough struct pages for atomic IO */
- struct page * map_array[KIO_STATIC_PAGES];
- sector_t blocks[KIO_MAX_SECTORS];
-
- /* Dynamic state for IO completion: */
- atomic_t io_count; /* IOs still in progress */
- int errno; /* Status of completed IO */
- void (*end_io) (struct kiobuf *); /* Completion callback */
- wait_queue_head_t wait_queue;
-};
-
-
-/* mm/memory.c */
-
-int map_user_kiobuf(int rw, struct kiobuf *, unsigned long va, size_t len);
-void unmap_kiobuf(struct kiobuf *iobuf);
-int lock_kiovec(int nr, struct kiobuf *iovec[], int wait);
-int unlock_kiovec(int nr, struct kiobuf *iovec[]);
-void mark_dirty_kiobuf(struct kiobuf *iobuf, int bytes);
-
-/* fs/iobuf.c */
-
-int end_kio_request(struct kiobuf *, int);
-void simple_wakeup_kiobuf(struct kiobuf *);
-int alloc_kiovec(int nr, struct kiobuf **);
-void free_kiovec(int nr, struct kiobuf **);
-int expand_kiobuf(struct kiobuf *, int);
-void kiobuf_wait_for_io(struct kiobuf *);
-extern int alloc_kiobuf_bhs(struct kiobuf *);
-extern void free_kiobuf_bhs(struct kiobuf *);
-
-/* fs/buffer.c */
-
-int brw_kiovec(int rw, int nr, struct kiobuf *iovec[],
- struct block_device *bdev, sector_t [], int size);
-
-/* fs/bio.c */
-void ll_rw_kio(int rw, struct kiobuf *kio, struct block_device *bdev, sector_t block);
-
-#endif /* __LINUX_IOBUF_H */