On Mon, 7 Apr 2003, Nicholas Wourms wrote:
Peter Osterlund wrote: [SNIP]
The loop driver is doing the same thing. Is there a reason to behave differently than the loop driver in this case?
I have uploaded a new patch with the minor changes I have made so far:
http://w1.894.telia.com/~u89404340/patches/packet/2.5/packet-2.5.66-2.patch....
Peter,
It might be a good idea to convert the kdevname() function calls to something more appropriate now, since it has been removed in 2.5.66-bk current. See the " [PATCH] remove kdevname() before someone starts using it again" thread on the LKML for more info on this subject and discussions of possible replacement functions.
OK, this patch will be in the next release: --- linux/drivers/block/pktcdvd.c.orig Mon Apr 7 18:11:59 2003 +++ linux/drivers/block/pktcdvd.c Mon Apr 7 18:11:28 2003 @@ -644,6 +644,9 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) { struct request *rq = pkt->rq; +#if PACKET_DEBUG > 1 + char b[BDEVNAME_SIZE]; +#endif sector_t start_s, end_s; unsigned int sectors; @@ -660,7 +663,7 @@ end_s = start_s + pd->settings.size; VPRINTK("pkt_gather_data: rw=%ld\n", rq_data_dir(rq)); - VPRINTK("need %d sectors for %s\n", sectors, kdevname(pd->dev)); + VPRINTK("need %d sectors for %s\n", sectors, bdevname(pd->bdev, b)); VPRINTK("from %llu to %llu\n", (unsigned long long)start_s, (unsigned long long)end_s); pkt->sector = start_s; @@ -2285,13 +2288,14 @@ static int pkt_make_request(request_queue_t *q, struct bio *bio) { struct pktcdvd_device *pd; + char b[BDEVNAME_SIZE]; - if (minor(to_kdev_t(bio->bi_bdev->bd_dev)) >= MAX_WRITERS) { - printk("pktcdvd: %s out of range\n", kdevname(to_kdev_t(bio->bi_bdev->bd_dev))); + pd = q->queuedata; + if (!pd) { + printk("pktcdvd: %s incorrect request queue\n", bdevname(bio->bi_bdev, b)); goto end_io; } - pd = &pkt_devs[minor(to_kdev_t(bio->bi_bdev->bd_dev))]; if (kdev_none(pd->dev)) { printk("pktcdvd: request received for non-active pd\n"); goto end_io; @@ -2410,8 +2414,10 @@ char *b = buf, *msg; struct list_head *foo; int i; + char bdev_buf[BDEVNAME_SIZE]; - b += sprintf(b, "\nWriter %s (%s):\n", pd->name, kdevname(pd->dev)); + b += sprintf(b, "\nWriter %s mapped to %s:\n", pd->name, + __bdevname(kdev_t_to_nr(pd->dev), bdev_buf)); b += sprintf(b, "\nSettings:\n"); b += sprintf(b, "\tpacket size:\t\t%dkB\n", pd->settings.size / 2); @@ -2514,7 +2520,7 @@ for (minor = 0; minor < MAX_WRITERS; minor++) { if (kdev_same(pkt_devs[minor].dev, dev)) { - printk("pktcdvd: %s already setup\n", kdevname(dev)); + printk("pktcdvd: %s already setup\n", bdevname(bdev, b)); return -EBUSY; } } -- Peter Osterlund - petero2@telia.com http://w1.894.telia.com/~u89404340