patch-2.3.46 linux/drivers/block/hd.c
Next file: linux/drivers/block/ide-cd.c
Previous file: linux/drivers/block/genhd.c
Back to the patch index
Back to the overall index
- Lines: 90
- Date:
Wed Feb 16 15:42:05 2000
- Orig file:
v2.3.45/linux/drivers/block/hd.c
- Orig date:
Fri Jan 21 18:19:16 2000
diff -u --recursive --new-file v2.3.45/linux/drivers/block/hd.c linux/drivers/block/hd.c
@@ -32,6 +32,7 @@
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/fs.h>
+#include <linux/devfs_fs_kernel.h>
#include <linux/kernel.h>
#include <linux/hdreg.h>
#include <linux/genhd.h>
@@ -145,7 +146,7 @@
unsigned long flags;
char devc;
- devc = CURRENT ? 'a' + DEVICE_NR(CURRENT->rq_dev) : '?';
+ devc = !QUEUE_EMPTY ? 'a' + DEVICE_NR(CURRENT->rq_dev) : '?';
save_flags (flags);
sti();
#ifdef VERBOSE_ERRORS
@@ -174,7 +175,7 @@
if (hd_error & (BBD_ERR|ECC_ERR|ID_ERR|MARK_ERR)) {
printk(", CHS=%d/%d/%d", (inb(HD_HCYL)<<8) + inb(HD_LCYL),
inb(HD_CURRENT) & 0xf, inb(HD_SECTOR));
- if (CURRENT)
+ if (!QUEUE_EMPTY)
printk(", sector=%ld", CURRENT->sector);
}
printk("\n");
@@ -351,7 +352,7 @@
{
int dev;
- if (!CURRENT)
+ if (QUEUE_EMPTY)
return;
dev = DEVICE_NR(CURRENT->rq_dev);
if (++CURRENT->errors >= MAX_ERRORS || (hd_error & BBD_ERR)) {
@@ -414,7 +415,7 @@
#if (HD_DELAY > 0)
last_req = read_timer();
#endif
- if (CURRENT)
+ if (!QUEUE_EMPTY)
hd_request();
return;
}
@@ -475,7 +476,7 @@
unsigned int dev;
DEVICE_INTR = NULL;
- if (!CURRENT)
+ if (QUEUE_EMPTY)
return;
disable_irq(HD_IRQ);
sti();
@@ -522,7 +523,7 @@
{
unsigned int dev, block, nsect, sec, track, head, cyl;
- if (CURRENT && CURRENT->rq_status == RQ_INACTIVE) return;
+ if (!QUEUE_EMPTY && CURRENT->rq_status == RQ_INACTIVE) return;
if (DEVICE_INTR)
return;
repeat:
@@ -662,6 +663,8 @@
return 0;
}
+extern struct block_device_operations hd_fops;
+
static struct gendisk hd_gendisk = {
MAJOR_NR, /* Major number */
"hd", /* Major name */
@@ -671,7 +674,8 @@
hd_sizes, /* block sizes */
0, /* number */
NULL, /* internal use, not presently used */
- NULL /* next */
+ NULL, /* next */
+ &hd_fops, /* file operations */
};
static void hd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -800,7 +804,7 @@
int __init hd_init(void)
{
- if (register_blkdev(MAJOR_NR,"hd",&hd_fops)) {
+ if (devfs_register_blkdev(MAJOR_NR,"hd",&hd_fops)) {
printk("hd: unable to get major %d for hard disk\n",MAJOR_NR);
return -1;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)