public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@zip.com.au>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: lkml <linux-kernel@vger.kernel.org>, Jens Axboe <axboe@suse.de>
Subject: [patch 13/19] take bio.h out of highmem.h
Date: Sun, 16 Jun 2002 23:53:01 -0700	[thread overview]
Message-ID: <3D0D874D.5464CAC8@zip.com.au> (raw)



highmem.h includes bio.h, so just about every compilation unit in the
kernel gets to process bio.h.

The patch moves the BIO-related functions out of highmem.h and into
bio-related headers.  The nested include is removed and all files which
need to include bio.h now do so.



--- 2.5.22/fs/bio.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/fs/bio.c	Sun Jun 16 22:50:19 2002
@@ -17,6 +17,7 @@
  *
  */
 #include <linux/mm.h>
+#include <linux/bio.h>
 #include <linux/blk.h>
 #include <linux/slab.h>
 #include <linux/iobuf.h>
--- 2.5.22/include/linux/highmem.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/highmem.h	Sun Jun 16 22:50:19 2002
@@ -2,7 +2,6 @@
 #define _LINUX_HIGHMEM_H
 
 #include <linux/config.h>
-#include <linux/bio.h>
 #include <linux/fs.h>
 #include <asm/cacheflush.h>
 
@@ -15,45 +14,8 @@ extern struct page *highmem_start_page;
 /* declarations for linux/mm/highmem.c */
 unsigned int nr_free_highpages(void);
 
-extern void create_bounce(unsigned long pfn, int gfp, struct bio **bio_orig);
 extern void check_highmem_ptes(void);
 
-/*
- * remember to add offset! and never ever reenable interrupts between a
- * bio_kmap_irq and bio_kunmap_irq!!
- */
-static inline char *bio_kmap_irq(struct bio *bio, unsigned long *flags)
-{
-	unsigned long addr;
-
-	__save_flags(*flags);
-
-	/*
-	 * could be low
-	 */
-	if (!PageHighMem(bio_page(bio)))
-		return bio_data(bio);
-
-	/*
-	 * it's a highmem page
-	 */
-	__cli();
-	addr = (unsigned long) kmap_atomic(bio_page(bio), KM_BIO_SRC_IRQ);
-
-	if (addr & ~PAGE_MASK)
-		BUG();
-
-	return (char *) addr + bio_offset(bio);
-}
-
-static inline void bio_kunmap_irq(char *buffer, unsigned long *flags)
-{
-	unsigned long ptr = (unsigned long) buffer & PAGE_MASK;
-
-	kunmap_atomic((void *) ptr, KM_BIO_SRC_IRQ);
-	__restore_flags(*flags);
-}
-
 #else /* CONFIG_HIGHMEM */
 
 static inline unsigned int nr_free_highpages(void) { return 0; }
@@ -65,12 +27,6 @@ static inline void *kmap(struct page *pa
 #define kmap_atomic(page,idx)		kmap(page)
 #define kunmap_atomic(page,idx)		kunmap(page)
 
-#define bh_kmap(bh)	((bh)->b_data)
-#define bh_kunmap(bh)	do { } while (0)
-
-#define bio_kmap_irq(bio, flags)	(bio_data(bio))
-#define bio_kunmap_irq(buf, flags)	do { *(flags) = 0; } while (0)
-
 #endif /* CONFIG_HIGHMEM */
 
 /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */
--- 2.5.22/include/linux/bio.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/bio.h	Sun Jun 16 22:50:19 2002
@@ -21,6 +21,8 @@
 #define __LINUX_BIO_H
 
 #include <linux/kdev_t.h>
+#include <linux/highmem.h>
+
 /* Platforms may set this to teach the BIO layer about IOMMU hardware. */
 #include <asm/io.h>
 #ifndef BIO_VMERGE_BOUNDARY
@@ -47,9 +49,6 @@ struct bio_vec {
 	unsigned int	bv_offset;
 };
 
-/*
- * weee, c forward decl...
- */
 struct bio;
 typedef void (bio_end_io_t) (struct bio *);
 typedef void (bio_destructor_t) (struct bio *);
@@ -206,4 +205,49 @@ extern inline void bio_init(struct bio *
 
 extern int bio_ioctl(kdev_t, unsigned int, unsigned long);
 
+#ifdef CONFIG_HIGHMEM
+/*
+ * remember to add offset! and never ever reenable interrupts between a
+ * bio_kmap_irq and bio_kunmap_irq!!
+ *
+ * This function MUST be inlined - it plays with the CPU interrupt flags.
+ * Hence the `extern inline'.
+ */
+extern inline char *bio_kmap_irq(struct bio *bio, unsigned long *flags)
+{
+	unsigned long addr;
+
+	__save_flags(*flags);
+
+	/*
+	 * could be low
+	 */
+	if (!PageHighMem(bio_page(bio)))
+		return bio_data(bio);
+
+	/*
+	 * it's a highmem page
+	 */
+	__cli();
+	addr = (unsigned long) kmap_atomic(bio_page(bio), KM_BIO_SRC_IRQ);
+
+	if (addr & ~PAGE_MASK)
+		BUG();
+
+	return (char *) addr + bio_offset(bio);
+}
+
+extern inline void bio_kunmap_irq(char *buffer, unsigned long *flags)
+{
+	unsigned long ptr = (unsigned long) buffer & PAGE_MASK;
+
+	kunmap_atomic((void *) ptr, KM_BIO_SRC_IRQ);
+	__restore_flags(*flags);
+}
+
+#else
+#define bio_kmap_irq(bio, flags)	(bio_data(bio))
+#define bio_kunmap_irq(buf, flags)	do { *(flags) = 0; } while (0)
+#endif
+
 #endif /* __LINUX_BIO_H */
--- 2.5.22/include/linux/buffer_head.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/buffer_head.h	Sun Jun 16 23:22:45 2002
@@ -106,12 +106,7 @@ BUFFER_FNS(Async_Read, async_read)
 BUFFER_FNS(Async_Write, async_write)
 BUFFER_FNS(Boundary, boundary)
 
-/*
- * FIXME: this is used only by bh_kmap, which is used only by RAID5.
- * Move all that stuff into raid5.c
- */
 #define bh_offset(bh)		((unsigned long)(bh)->b_data & ~PAGE_MASK)
-
 #define touch_buffer(bh)	mark_page_accessed(bh->b_page)
 
 /* If we *know* page->private refers to buffer_heads */
--- 2.5.22/include/linux/blkdev.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/blkdev.h	Sun Jun 16 22:50:19 2002
@@ -246,12 +246,7 @@ extern unsigned long blk_max_low_pfn, bl
 #define BLK_BOUNCE_ISA		(ISA_DMA_THRESHOLD)
 
 extern int init_emergency_isa_pool(void);
-extern void create_bounce(unsigned long pfn, int gfp, struct bio **bio_orig);
-
-extern inline void blk_queue_bounce(request_queue_t *q, struct bio **bio)
-{
-	create_bounce(q->bounce_pfn, q->bounce_gfp, bio);
-}
+void blk_queue_bounce(request_queue_t *q, struct bio **bio);
 
 #define rq_for_each_bio(bio, rq)	\
 	if ((rq->bio))			\
--- 2.5.22/kernel/ksyms.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/kernel/ksyms.c	Sun Jun 16 23:22:44 2002
@@ -120,7 +120,7 @@ EXPORT_SYMBOL(vmtruncate);
 EXPORT_SYMBOL(find_vma);
 EXPORT_SYMBOL(get_unmapped_area);
 EXPORT_SYMBOL(init_mm);
-EXPORT_SYMBOL(create_bounce);
+EXPORT_SYMBOL(blk_queue_bounce);
 #ifdef CONFIG_HIGHMEM
 EXPORT_SYMBOL(kmap_high);
 EXPORT_SYMBOL(kunmap_high);
--- 2.5.22/mm/highmem.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/mm/highmem.c	Sun Jun 16 22:50:19 2002
@@ -17,6 +17,7 @@
  */
 
 #include <linux/mm.h>
+#include <linux/bio.h>
 #include <linux/pagemap.h>
 #include <linux/mempool.h>
 #include <linux/blkdev.h>
@@ -347,13 +348,15 @@ static void bounce_end_io_read_isa(struc
 	return __bounce_end_io_read(bio, isa_page_pool);
 }
 
-void create_bounce(unsigned long pfn, int gfp, struct bio **bio_orig)
+void blk_queue_bounce(request_queue_t *q, struct bio **bio_orig)
 {
 	struct page *page;
 	struct bio *bio = NULL;
 	int i, rw = bio_data_dir(*bio_orig), bio_gfp;
 	struct bio_vec *to, *from;
 	mempool_t *pool;
+	unsigned long pfn = q->bounce_pfn;
+	int gfp = q->bounce_gfp;
 
 	BUG_ON((*bio_orig)->bi_idx);
 
--- 2.5.22/drivers/block/elevator.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/elevator.c	Sun Jun 16 22:50:19 2002
@@ -28,6 +28,7 @@
 #include <linux/fs.h>
 #include <linux/blkdev.h>
 #include <linux/elevator.h>
+#include <linux/bio.h>
 #include <linux/blk.h>
 #include <linux/config.h>
 #include <linux/module.h>
--- 2.5.22/drivers/block/ll_rw_blk.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/ll_rw_blk.c	Sun Jun 16 22:50:19 2002
@@ -18,6 +18,7 @@
 #include <linux/errno.h>
 #include <linux/string.h>
 #include <linux/config.h>
+#include <linux/bio.h>
 #include <linux/mm.h>
 #include <linux/swap.h>
 #include <linux/init.h>
--- 2.5.22/drivers/block/floppy.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/floppy.c	Sun Jun 16 22:50:19 2002
@@ -165,6 +165,7 @@ static int print_unex=1;
 #include <linux/errno.h>
 #include <linux/slab.h>
 #include <linux/mm.h>
+#include <linux/bio.h>
 #include <linux/string.h>
 #include <linux/fcntl.h>
 #include <linux/delay.h>
--- 2.5.22/drivers/block/loop.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/loop.c	Sun Jun 16 22:50:19 2002
@@ -60,6 +60,7 @@
 #include <linux/sched.h>
 #include <linux/fs.h>
 #include <linux/file.h>
+#include <linux/bio.h>
 #include <linux/stat.h>
 #include <linux/errno.h>
 #include <linux/major.h>
--- 2.5.22/include/linux/ide.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/ide.h	Sun Jun 16 22:50:19 2002
@@ -15,6 +15,7 @@
 #include <linux/devfs_fs_kernel.h>
 #include <linux/interrupt.h>
 #include <linux/bitops.h>
+#include <linux/bio.h>
 #include <asm/byteorder.h>
 #include <asm/hdreg.h>
 
--- 2.5.22/drivers/block/rd.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/rd.c	Sun Jun 16 22:50:19 2002
@@ -45,6 +45,8 @@
 #include <linux/config.h>
 #include <linux/string.h>
 #include <linux/slab.h>
+#include <asm/atomic.h>
+#include <linux/bio.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/devfs_fs_kernel.h>
--- 2.5.22/drivers/md/linear.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/linear.c	Sun Jun 16 22:50:19 2002
@@ -20,7 +20,7 @@
 
 #include <linux/raid/md.h>
 #include <linux/slab.h>
-
+#include <linux/bio.h>
 #include <linux/raid/linear.h>
 
 #define MAJOR_NR MD_MAJOR
--- 2.5.22/drivers/md/raid0.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/raid0.c	Sun Jun 16 22:50:19 2002
@@ -20,6 +20,7 @@
 
 #include <linux/module.h>
 #include <linux/raid/raid0.h>
+#include <linux/bio.h>
 
 #define MAJOR_NR MD_MAJOR
 #define MD_DRIVER
--- 2.5.22/drivers/md/md.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/md.c	Sun Jun 16 22:50:19 2002
@@ -33,6 +33,7 @@
 #include <linux/linkage.h>
 #include <linux/raid/md.h>
 #include <linux/sysctl.h>
+#include <linux/bio.h>
 #include <linux/raid/xor.h>
 #include <linux/devfs_fs_kernel.h>
 
--- 2.5.22/drivers/scsi/scsi_lib.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/scsi/scsi_lib.c	Sun Jun 16 22:50:19 2002
@@ -23,6 +23,7 @@
 #include <linux/timer.h>
 #include <linux/string.h>
 #include <linux/slab.h>
+#include <linux/bio.h>
 #include <linux/ioport.h>
 #include <linux/kernel.h>
 #include <linux/stat.h>
--- 2.5.22/drivers/scsi/sd.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/scsi/sd.c	Sun Jun 16 22:50:19 2002
@@ -36,6 +36,7 @@
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/mm.h>
+#include <linux/bio.h>
 #include <linux/string.h>
 #include <linux/hdreg.h>
 #include <linux/errno.h>
--- 2.5.22/drivers/block/cpqarray.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/cpqarray.c	Sun Jun 16 22:50:19 2002
@@ -24,6 +24,7 @@
 #include <linux/version.h>
 #include <linux/types.h>
 #include <linux/pci.h>
+#include <linux/bio.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
--- 2.5.22/drivers/block/DAC960.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/DAC960.c	Sun Jun 16 22:50:19 2002
@@ -28,6 +28,7 @@
 #include <linux/types.h>
 #include <linux/blk.h>
 #include <linux/blkdev.h>
+#include <linux/bio.h>
 #include <linux/completion.h>
 #include <linux/delay.h>
 #include <linux/genhd.h>
--- 2.5.22/drivers/block/cciss.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/cciss.c	Sun Jun 16 22:50:19 2002
@@ -30,6 +30,7 @@
 #include <linux/delay.h>
 #include <linux/major.h>
 #include <linux/fs.h>
+#include <linux/bio.h>
 #include <linux/blkpg.h>
 #include <linux/timer.h>
 #include <linux/proc_fs.h>
--- 2.5.22/drivers/block/umem.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/umem.c	Sun Jun 16 22:50:19 2002
@@ -37,6 +37,7 @@
 #include <linux/config.h>
 #include <linux/sched.h>
 #include <linux/fs.h>
+#include <linux/bio.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/mman.h>
--- 2.5.22/drivers/block/nbd.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/block/nbd.c	Sun Jun 16 22:50:19 2002
@@ -39,6 +39,7 @@
 #include <linux/init.h>
 #include <linux/sched.h>
 #include <linux/fs.h>
+#include <linux/bio.h>
 #include <linux/stat.h>
 #include <linux/errno.h>
 #include <linux/file.h>
--- 2.5.22/drivers/md/raid1.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/raid1.c	Sun Jun 16 22:50:19 2002
@@ -23,6 +23,7 @@
  */
 
 #include <linux/raid/raid1.h>
+#include <linux/bio.h>
 
 #define MAJOR_NR MD_MAJOR
 #define MD_DRIVER
--- 2.5.22/drivers/md/raid5.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/raid5.c	Sun Jun 16 22:50:19 2002
@@ -20,6 +20,7 @@
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/raid/raid5.h>
+#include <linux/bio.h>
 #include <asm/bitops.h>
 #include <asm/atomic.h>
 
--- 2.5.22/drivers/md/lvm.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/lvm.c	Sun Jun 16 22:50:19 2002
@@ -209,6 +209,7 @@
 #include <linux/hdreg.h>
 #include <linux/stat.h>
 #include <linux/fs.h>
+#include <linux/bio.h>
 #include <linux/proc_fs.h>
 #include <linux/blkdev.h>
 #include <linux/genhd.h>
--- 2.5.22/drivers/md/multipath.c~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/drivers/md/multipath.c	Sun Jun 16 22:50:19 2002
@@ -23,6 +23,7 @@
 #include <linux/slab.h>
 #include <linux/spinlock.h>
 #include <linux/raid/multipath.h>
+#include <linux/bio.h>
 #include <linux/buffer_head.h>
 #include <asm/atomic.h>
 
--- 2.5.22/include/linux/raid/raid5.h~cleanup-highmem-no-bio	Sun Jun 16 22:50:19 2002
+++ 2.5.22-akpm/include/linux/raid/raid5.h	Sun Jun 16 22:50:19 2002
@@ -3,6 +3,7 @@
 
 #include <linux/raid/md.h>
 #include <linux/raid/xor.h>
+#include <linux/bio.h>
 
 /*
  *
--- 2.5.22/fs/jfs/jfs_logmgr.c~cleanup-highmem-no-bio	Sun Jun 16 22:58:59 2002
+++ 2.5.22-akpm/fs/jfs/jfs_logmgr.c	Sun Jun 16 22:59:02 2002
@@ -65,6 +65,7 @@
 #include <linux/smp_lock.h>
 #include <linux/completion.h>
 #include <linux/buffer_head.h>		/* for sync_blockdev() */
+#include <linux/bio.h>
 #include "jfs_incore.h"
 #include "jfs_filsys.h"
 #include "jfs_metapage.h"
--- 2.5.22/drivers/scsi/cpqfcTSinit.c~cleanup-highmem-no-bio	Sun Jun 16 23:04:57 2002
+++ 2.5.22-akpm/drivers/scsi/cpqfcTSinit.c	Sun Jun 16 23:05:06 2002
@@ -39,6 +39,7 @@
 #include <linux/pci.h>
 #include <linux/delay.h>
 #include <linux/timer.h>
+#include <linux/init.h>
 #include <linux/ioport.h>  // request_region() prototype
 #include <linux/vmalloc.h> // ioremap()
 //#if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,7)
--- 2.5.22/drivers/scsi/sr.c~cleanup-highmem-no-bio	Sun Jun 16 23:06:44 2002
+++ 2.5.22-akpm/drivers/scsi/sr.c	Sun Jun 16 23:06:53 2002
@@ -39,6 +39,7 @@
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/mm.h>
+#include <linux/bio.h>
 #include <linux/string.h>
 #include <linux/errno.h>
 #include <linux/cdrom.h>

-

                 reply	other threads:[~2002-06-17  6:51 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D0D874D.5464CAC8@zip.com.au \
    --to=akpm@zip.com.au \
    --cc=axboe@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox