Skip to contentSkip to conversation

make <linux/blk.h> obsolete

PATCH In review Christoph Hellwig 4 participants 8 messages May 1, 2003 – May 2, 2003 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 make <linux/blk.h> obsolete

This file was _the_ header for block-device related stuff in earlier Linux versions, but nowdays there's just a few prototypes left that really belong into blkdev.h or genhd.h (and in one case elevator.h).

This patch moves them over and removes everything but including blkdev.h from blk.h Note that blkdev.h gets all the headers that were included in blk.h inmplicitly too. Now we can start removing all references to it an maybe kill it off before 2.6. *sniff*

include/linux/blk.h +1 -40
@@ -1,41 +1,2 @@
-#ifndef _BLK_H
-#define _BLK_H
-
+/* this file is obsolete, please use <linux/blkdev.h> instead */
 #include <linux/blkdev.h>
-#include <linux/elevator.h>
-#include <linux/config.h>
-#include <linux/spinlock.h>
-#include <linux/compiler.h>
-
-extern void set_device_ro(struct block_device *bdev, int flag);
-extern void set_disk_ro(struct gendisk *disk, int flag);
-extern void add_disk_randomness(struct gendisk *disk);
-extern void rand_initialize_disk(struct gendisk *disk);
-
-/*
- * end_request() and friends. Must be called with the request queue spinlock
- * acquired. All functions called within end_request() _must_be_ atomic.
- *
- * Several drivers define their own end_request and call
- * end_that_request_first() and end_that_request_last()
- * for parts of the original function. This prevents
- * code duplication in drivers.
- */
-
-extern int end_that_request_first(struct request *, int, int);
-extern int end_that_request_chunk(struct request *, int, int);
-extern void end_that_request_last(struct request *);
-extern void end_request(struct request *req, int uptodate);
-struct request *elv_next_request(request_queue_t *q);
-
-static inline void blkdev_dequeue_request(struct request *req)
-{
-	BUG_ON(list_empty(&req->queuelist));
-
-	list_del_init(&req->queuelist);
-
-	if (req->q)
-		elv_remove_request(req->q, req);
-}
-
-#endif /* _BLK_H */
include/linux/blkdev.h +24 -0
@@ -349,6 +349,30 @@
 }
 
 /*
+ * end_request() and friends. Must be called with the request queue spinlock
+ * acquired. All functions called within end_request() _must_be_ atomic.
+ *
+ * Several drivers define their own end_request and call
+ * end_that_request_first() and end_that_request_last()
+ * for parts of the original function. This prevents
+ * code duplication in drivers.
+ */
+extern int end_that_request_first(struct request *, int, int);
+extern int end_that_request_chunk(struct request *, int, int);
+extern void end_that_request_last(struct request *);
+extern void end_request(struct request *req, int uptodate);
+
+static inline void blkdev_dequeue_request(struct request *req)
+{
+	BUG_ON(list_empty(&req->queuelist));
+
+	list_del_init(&req->queuelist);
+
+	if (req->q)
+		elv_remove_request(req->q, req);
+}
+
+/*
  * get ready for proper ref counting
  */
 #define blk_put_queue(q)	do { } while (0)
include/linux/elevator.h +1 -0
@@ -54,6 +54,7 @@
 extern void elv_merged_request(request_queue_t *, struct request *);
 extern void elv_remove_request(request_queue_t *, struct request *);
 extern int elv_queue_empty(request_queue_t *);
+extern struct request *elv_next_request(struct request_queue *q);
 extern struct request *elv_former_request(request_queue_t *, struct request *);
 extern struct request *elv_latter_request(request_queue_t *, struct request *);
 extern int elv_register_queue(struct gendisk *);
include/linux/genhd.h +8 -0
@@ -190,6 +190,14 @@
 extern void del_gendisk(struct gendisk *gp);
 extern void unlink_gendisk(struct gendisk *gp);
 extern struct gendisk *get_gendisk(dev_t dev, int *part);
+
+extern void set_device_ro(struct block_device *bdev, int flag);
+extern void set_disk_ro(struct gendisk *disk, int flag);
+
+/* drivers/char/random.c */
+extern void add_disk_randomness(struct gendisk *disk);
+extern void rand_initialize_disk(struct gendisk *disk);
+
 static inline sector_t get_start_sect(struct block_device *bdev)
 {
 	return bdev->bd_offset;
#1 lore raw
Quoted 3 lines · Christoph Hellwig

...
+/* this file is obsolete, please use <linux/blkdev.h> instead */
...

#warning linux/blk.h is deprecated, use linux/blkdev.h instead. #include <linux/blkdev.h>

or simply remove the blk.h and fix all files trying to include it?

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed
#2 lore raw
Quoted 9 lines · Adrian Bunk
Quoted 3 lines · Christoph Hellwig

...
+/* this file is obsolete, please use <linux/blkdev.h> instead */
...

#warning linux/blk.h is deprecated, use linux/blkdev.h instead. #include <linux/blkdev.h>

or simply remove the blk.h and fix all files trying to include it?

Later. First thing is to kill the content, next the users. Adding the warning now would make a normal compile very verbose..

#3 lore raw
Quoted 6 lines · Christoph Hellwig
Quoted 5 lines · Adrian Bunk
Quoted 3 lines · Christoph Hellwig

...
+/* this file is obsolete, please use <linux/blkdev.h> instead */
...

Quoted 7 lines
Quoted 4 lines

#warning linux/blk.h is deprecated, use linux/blkdev.h instead. #include <linux/blkdev.h>

or simply remove the blk.h and fix all files trying to include it?

Later. First thing is to kill the content, next the users. Adding the warning now would make a normal compile very verbose..

Shall I prepare a patch removing all #include <linux/blk.h>'s?

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed
#4 lore raw
Quoted 4 lines · Adrian Bunk
Quoted 2 lines

Later. First thing is to kill the content, next the users. Adding the warning now would make a normal compile very verbose..

Shall I prepare a patch removing all #include <linux/blk.h>'s?

Please do so. That means I'll have less work to do :)

#5 lore raw
Quoted 7 lines · Christoph Hellwig
Quoted 4 lines · Adrian Bunk
Quoted 2 lines

Later. First thing is to kill the content, next the users. Adding the warning now would make a normal compile very verbose..

Shall I prepare a patch removing all #include <linux/blk.h>'s?

Please do so. That means I'll have less work to do :)

A patch against 2.5.68-bk11 plus your patch is attached.

I removed all references to blk.h and blk.h does now #error. If people want their drivers to run unmodified under 2.4 it might be necessary to do a
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,69)
#include <linux/blk.h>
#endif

I've tested the compilation with a .config that tries to compile as much drivers as possible.

cu
Adrian

Signature · 4 lines
       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed
#6 lore raw
In reply to Christoph Hellwig
Quoted 8 lines · Christoph Hellwig
Quoted 4 lines · Adrian Bunk

#warning linux/blk.h is deprecated, use linux/blkdev.h instead. #include <linux/blkdev.h>

or simply remove the blk.h and fix all files trying to include it?

Later. First thing is to kill the content, next the users. Adding the warning now would make a normal compile very verbose..

And if you leave it around for a while (with warning) after you remove the in-kernel users, people who have out-of-tree users of that header at least have an idea of what to do to fix their code.

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/

#7 lore raw
In reply to Christoph Hellwig
Followup to:  <[email protected]>
By author:    Christoph Hellwig <[email protected]>
In newsgroup: linux.dev.kernel
Quoted 3 lines

Later. First thing is to kill the content, next the users.

I'm not using it! I promise!

-hpa

Signature · 3 lines
<[email protected]> at work, <[email protected]> in private!
"Unix gives you enough rope to shoot yourself in the foot."
Architectures needed: ia64 m68k mips64 ppc ppc64 s390 s390x sh v850 x86-64