pktcdvd: silence static checker warning
Subsystems (2)
PATCH 1/1 pktcdvd: silence static checker warning
Static checkers complain about widening the binary "not" operations here because sectors are u64 and "(pd)->settings.size" is unsigned int. It unintentionally clears the high 32 bits of the sector. This means that the driver won't work for devices with over 2TB of space. Since this is a DVD drive, we're unlikely to reach that limit, but we may as well silence the warning.
drivers/block/pktcdvd.c +2 -1
@@ -83,7 +83,8 @@#define MAX_SPEED 0xffff -#define ZONE (sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) +#define ZONE (sector, pd) (((sector) + (pd)->offset) & \ + ~(sector_t)((pd)->settings.size - 1))static DEFINE_MUTEX (pktcdvd_mutex);static struct pktcdvd_device *pkt_devs[MAX_WRITERS ];
Quoted 14 lines · Dan Carpenter
Static checkers complain about widening the binary "not" operations here because sectors are u64 and "(pd)->settings.size" is unsigned int. It unintentionally clears the high 32 bits of the sector. This means that the driver won't work for devices with over 2TB of space. Since this is a DVD drive, we're unlikely to reach that limit, but we may as well silence the warning.
Signed-off-by Dan Carpenter <[email protected]>drivers/block/pktcdvd.c +0
-0
drivers/block/pktcdvd.c line 90
Quoted 9 lines
drivers/block/pktcdvd.c +2
-1@@ -83,7 +83,8 @@#define MAX_SPEED 0xffff -#define ZONE (sector, pd) (((sector) + (pd)->offset) & ~((pd)->settings.size - 1)) +#define ZONE (sector, pd) (((sector) + (pd)->offset) & \ + ~(sector_t)((pd)->settings.size - 1))static DEFINE_MUTEX (pktcdvd_mutex);static struct pktcdvd_device *pkt_devs[MAX_WRITERS ];
Makes sense. Applied, thanks Dan.
Signature · 2 lines
Jiri Kosina SUSE Labs
cover pktcdvd: A few more neatenings
Joe Perches (3):
pktcdvd: Convert ZONE macro to static function get_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macros
drivers/block/pktcdvd.c | 248 ++++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 122 deletions(-)
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH 1/3 pktcdvd: Convert ZONE macro to static function get_zone()
Macros should be converted to functions where feasible to verify arguments and the like.
--- drivers/block/pktcdvd.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
drivers/block/pktcdvd.c +11 -11
@@ -60,7 +60,7 @@#include <linux/mutex.h> #include <linux/slab.h> #include <scsi/scsi_cmnd.h> -#include <scsi/scsi_ioctl.h> +l#include <scsi/scsi_ioctl.h>#include <scsi/scsi.h> #include <linux/debugfs.h> #include <linux/device.h>
@@ -83,9 +83,6 @@#define MAX_SPEED 0xffff -#define ZONE (sector, pd) (((sector) + (pd)->offset) & \ - ~(sector_t)((pd)->settings.size - 1)) -static DEFINE_MUTEX (pktcdvd_mutex);static struct pktcdvd_device *pkt_devs[MAX_WRITERS ];static struct proc_dir_entry *pkt_proc;
@@ -103,7 +100,10 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev);static int pkt_remove_dev (dev_t pkt_dev);static int pkt_seq_show (struct seq_file *m,void *p); - +static sector_t get_zone (sector_t sector,struct pktcdvd_device *pd) +{ +return (sector + pd->offset) & ~(sector_t)(pd->settings.size -1 ); +}/* * create and register a pktcdvd kernel object.
@@ -1226,7 +1226,7 @@ static int pkt_handle_queue(struct pktcdvd_device *pd) node = first_node;while (node) { bio = node->bio; - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);list_for_each_entry (p, &pd->cdrw.pkt_active_list, list) {if (p->sector == zone) { bio =NULL ;
@@ -1266,8 +1266,8 @@ try_next_bio:while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio;VPRINTK ("pkt_handle_queue: found zone=%llx\n" , - (unsigned long long )ZONE (bio->bi_sector, pd)); -if (ZONE (bio->bi_sector, pd) != zone) + (unsigned long long )get_zone (bio->bi_sector, pd)); +if (get_zone (bio->bi_sector, pd) != zone)break ;pkt_rbtree_erase (pd, node);spin_lock (&pkt->lock);
@@ -2397,7 +2397,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2408,7 +2408,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)sector_t last_zone;int first_sectors; - last_zone =ZONE (bio_end_sector (bio) -1 , pd); + last_zone =get_zone (bio_end_sector (bio) -1 , pd);if (last_zone != zone) {BUG_ON (last_zone != zone + pd->settings.size); first_sectors = last_zone - bio->bi_sector;
@@ -2503,7 +2503,7 @@ static int pkt_merge_bvec(struct request_queue *q, struct bvec_merge_data *bmd, struct bio_vec *bvec) {struct pktcdvd_device *pd = q->queuedata; -sector_t zone =ZONE (bmd->bi_sector, pd); +sector_t zone =get_zone (bmd->bi_sector, pd);int used = ((bmd->bi_sector - zone) <<9 ) + bmd->bi_size;int remaining = (pd->settings.size <<9 ) - used;int remaining2;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH 2/3 pktcdvd: Convert printk to pr_<level>
In reply to Joe PerchesUse a more current logging style and add messages levels to the logging messages.
Convert bare printks to pr_cont where appropriate and add a simple function to emit the sense string.
--- drivers/block/pktcdvd.c | 123 +++++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 59 deletions(-)
drivers/block/pktcdvd.c +64 -59
@@ -44,6 +44,8 @@* *************************************************************************/ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/pktcdvd.h> #include <linux/module.h> #include <linux/types.h>
@@ -60,7 +62,7 @@#include <linux/mutex.h> #include <linux/slab.h> #include <scsi/scsi_cmnd.h> -l#include <scsi/scsi_ioctl.h> +#include <scsi/scsi_ioctl.h> #include <scsi/scsi.h> #include <linux/debugfs.h> #include <linux/device.h>
@@ -424,7 +426,7 @@ static int pkt_sysfs_init(void)if (ret) {kfree (class_pktcdvd); class_pktcdvd =NULL ; -printk (DRIVER_NAME ": failed to create class pktcdvd\n" ); +pr_err ("failed to create class pktcdvd\n" );return ret; }return 0 ;
@@ -734,36 +736,37 @@ out:return ret; } +static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 ) +return info[index]; +return "INVALID" ; +} +/* * A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ static void pkt_dump_sense (struct packet_command *cgc) { -static char *info[9 ] = {"No sense" ,"Recovered error" ,"Not ready" , -"Medium error" ,"Hardware error" ,"Illegal request" , -"Unit attention" ,"Data protect" ,"Blank check" };int i;struct request_sense *sense = cgc->sense; -printk (DRIVER_NAME ":" ); +pr_err ("" );for (i =0 ; i <CDROM_PACKET_SIZE ; i++) -printk (" %02x" , cgc->cmd[i]); -printk (" - " ); +pr_cont (" %02x" , cgc->cmd[i]); -if (sense ==NULL ) { -printk ("no sense\n" ); -return ; - } - -printk ("sense %02x.%02x.%02x" , sense->sense_key, sense->asc, sense->ascq); - -if (sense->sense_key >8 ) { -printk (" (INVALID)\n" ); -return ; - } - -printk (" (%s)\n" , info[sense->sense_key]); +if (sense) +pr_cont (" - sense %02x.%02x.%02x (%s)\n" , + sense->sense_key, sense->asc, sense->ascq, +sense_key_string (sense->sense_key)); +else +pr_cont (" - no sense\n" ); }/*
@@ -943,7 +946,7 @@ static int pkt_set_segment_merging(struct pktcdvd_device *pd, struct request_queset_bit (PACKET_MERGE_SEGS , &pd->flags);return 0 ; }else { -printk (DRIVER_NAME ": cdrom max_phys_segments too small\n" ); +pr_err ("cdrom max_phys_segments too small\n" );return -EIO ; } }
@@ -1565,9 +1568,10 @@ work_to_do:static void pkt_print_settings (struct pktcdvd_device *pd) { -printk (DRIVER_NAME ": %s packets, " , pd->settings.fp ?"Fixed" :"Variable" ); -printk ("%u blocks, " , pd->settings.size >>2 ); -printk ("Mode-%c disc\n" , pd->settings.block_mode ==8 ?'1' :'2' ); +pr_info ("%s packets, %u blocks, Mode-%c disc\n" , + pd->settings.fp ?"Fixed" :"Variable" , + pd->settings.size >>2 , + pd->settings.block_mode ==8 ?'1' :'2' ); }static int pkt_mode_sense (struct pktcdvd_device *pd,struct packet_command *cgc,int page_code,int page_control)
@@ -1751,7 +1755,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)/* * paranoia */ -printk (DRIVER_NAME ": write mode wrong %d\n" , wp->data_block_type); +pr_err ("write mode wrong %d\n" , wp->data_block_type);return 1 ; } wp->packet_size =cpu_to_be32 (pd->settings.size >>2 );
@@ -1795,7 +1799,7 @@ static int pkt_writable_track(struct pktcdvd_device *pd, track_information *ti)if (ti->rt ==1 && ti->blank ==0 )return 1 ; -printk (DRIVER_NAME ": bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet); +pr_err ("bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet);return 0 ; }
@@ -1822,22 +1826,22 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)* but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type ==0xff ) { -printk (DRIVER_NAME ": Unknown disc. No track?\n" ); +pr_notice ("unknown disc - no track?\n" );return 0 ; }if (di->disc_type !=0x20 && di->disc_type !=0 ) { -printk (DRIVER_NAME ": Wrong disc type (%x)\n" , di->disc_type); +pr_err ("wrong disc type (%x)\n" , di->disc_type);return 0 ; }if (di->erasable ==0 ) { -printk (DRIVER_NAME ": Disc not erasable\n" ); +pr_notice ("disc not erasable\n" );return 0 ; }if (di->border_status ==PACKET_SESSION_RESERVED ) { -printk (DRIVER_NAME ": Can't write to last track (reserved)\n" ); +pr_err ("can't write to last track (reserved)\n" );return 0 ; }
@@ -1862,7 +1866,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)memset (&ti,0 ,sizeof (track_information));if ((ret =pkt_get_disc_info (pd, &di))) { -printk ("failed get_disc\n" ); +pr_err ("failed get_disc\n" );return ret; }
@@ -1873,12 +1877,12 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) track =1 ;/* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret =pkt_get_track_info (pd, track,1 , &ti))) { -printk (DRIVER_NAME ": failed get_track\n" ); +pr_err ("failed get_track\n" );return ret; }if (!pkt_writable_track (pd, &ti)) { -printk (DRIVER_NAME ": can't write to this track\n" ); +pr_err ("can't write to this track\n" );return -EROFS ; }
@@ -1888,11 +1892,11 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)*/ pd->settings.size =be32_to_cpu (ti.fixed_packet_size) <<2 ;if (pd->settings.size ==0 ) { -printk (DRIVER_NAME ": detected zero packet size!\n" ); +pr_notice ("detected zero packet size!\n" );return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) { -printk (DRIVER_NAME ": packet size is too big\n" ); +pr_err ("packet size is too big\n" );return -EROFS ; } pd->settings.fp = ti.fp;
@@ -1934,7 +1938,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) pd->settings.block_mode =PACKET_BLOCK_MODE2 ;break ;default : -printk (DRIVER_NAME ": unknown data mode\n" ); +pr_err ("unknown data mode\n" );return -EROFS ; }return 0 ;
@@ -1968,10 +1972,10 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, cgc.buflen = cgc.cmd[8 ] =2 + ((buf[0 ] <<8 ) | (buf[1 ] &0xff )); ret =pkt_mode_select (pd, &cgc);if (ret) { -printk (DRIVER_NAME ": write caching control failed\n" ); +pr_err ("write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set) -printk (DRIVER_NAME ": enabled write caching on %s\n" , pd->name); +pr_notice ("enabled write caching on %s\n" , pd->name);return ret; }
@@ -2086,11 +2090,11 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, }if (!(buf[6 ] &0x40 )) { -printk (DRIVER_NAME ": Disc type is not CD-RW\n" ); +pr_notice ("disc type is not CD-RW\n" );return 1 ; }if (!(buf[6 ] &0x4 )) { -printk (DRIVER_NAME ": A1 values on media are not valid, maybe not CDRW?\n" ); +pr_notice ("A1 values on media are not valid, maybe not CDRW?\n" );return 1 ; }
@@ -2110,14 +2114,14 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, *speed = us_clv_to_speed[sp];break ;default : -printk (DRIVER_NAME ": Unknown disc sub-type %d\n" ,st); +pr_notice ("unknown disc sub-type %d\n" ,st);return 1 ; }if (*speed) { -printk (DRIVER_NAME ": Max. media speed: %d\n" ,*speed); +pr_info ("maximum media speed: %d\n" , *speed);return 0 ; }else { -printk (DRIVER_NAME ": Unknown speed %d for sub-type %d\n" ,sp,st); +pr_notice ("unknown speed %d for sub-type %d\n" , sp, st);return 1 ; } }
@@ -2207,7 +2211,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) goto out;if ((ret =pkt_get_last_written (pd, &lba))) { -printk (DRIVER_NAME ": pkt_get_last_written failed\n" ); +pr_err ("pkt_get_last_written failed\n" ); goto out_putdev; }
@@ -2237,11 +2241,11 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write)if (write) {if (!pkt_grow_pktlist (pd,CONFIG_CDROM_PKTCDVD_BUFFERS )) { -printk (DRIVER_NAME ": not enough memory for buffers\n" ); +pr_err ("not enough memory for buffers\n" ); ret = -ENOMEM ; goto out_putdev; } -printk (DRIVER_NAME ": %lukB available on disc\n" , lba <<1 ); +pr_info ("%lukB available on disc\n" , lba <<1 ); }return 0 ;
@@ -2363,7 +2367,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) pd = q->queuedata;if (!pd) { -printk (DRIVER_NAME ": %s incorrect request queue\n" ,bdevname (bio->bi_bdev, b)); +pr_err ("%s incorrect request queue\n" , +bdevname (bio->bi_bdev, b)); goto end_io; }
@@ -2385,13 +2390,13 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!test_bit (PACKET_WRITABLE , &pd->flags)) { -printk (DRIVER_NAME ": WRITE for ro device %s (%llu)\n" , - pd->name, (unsigned long long )bio->bi_sector); +pr_notice ("WRITE for ro device %s (%llu)\n" , + pd->name, (unsigned long long )bio->bi_sector); goto end_io; }if (!bio->bi_size || (bio->bi_size %CD_FRAMESIZE )) { -printk (DRIVER_NAME ": wrong bio size\n" ); +pr_err ("wrong bio size\n" ); goto end_io; }
@@ -2612,7 +2617,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)struct block_device *bdev;if (pd->pkt_dev == dev) { -printk (DRIVER_NAME ": Recursive setup not allowed\n" ); +pr_err ("recursive setup not allowed\n" );return -EBUSY ; }for (i =0 ; i <MAX_WRITERS ; i++) {
@@ -2620,11 +2625,11 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)if (!pd2)continue ;if (pd2->bdev->bd_dev == dev) { -printk (DRIVER_NAME ": %s already setup\n" ,bdevname (pd2->bdev, b)); +pr_err ("%s already setup\n" ,bdevname (pd2->bdev, b));return -EBUSY ; }if (pd2->pkt_dev == dev) { -printk (DRIVER_NAME ": Can't chain pktcdvd devices\n" ); +pr_err ("can't chain pktcdvd devices\n" );return -EBUSY ; } }
@@ -2647,7 +2652,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)atomic_set (&pd->cdrw.pending_bios,0 ); pd->cdrw.thread =kthread_run (kcdrwd, pd,"%s" , pd->name);if (IS_ERR (pd->cdrw.thread)) { -printk (DRIVER_NAME ": can't start kernel thread\n" ); +pr_err ("can't start kernel thread\n" ); ret = -ENOMEM ; goto out_mem; }
@@ -2746,7 +2751,7 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev)if (!pkt_devs[idx])break ;if (idx ==MAX_WRITERS ) { -printk (DRIVER_NAME ": max %d writers supported\n" ,MAX_WRITERS ); +pr_err ("max %d writers supported\n" ,MAX_WRITERS ); ret = -EBUSY ; goto out_mutex; }
@@ -2821,7 +2826,7 @@ out_mem:kfree (pd); out_mutex:mutex_unlock (&ctl_mutex); -printk (DRIVER_NAME ": setup of pktcdvd device failed\n" ); +pr_err ("setup of pktcdvd device failed\n" );return ret; }
@@ -2972,7 +2977,7 @@ static int __init pkt_init(void) ret =register_blkdev (pktdev_major,DRIVER_NAME );if (ret <0 ) { -printk (DRIVER_NAME ": Unable to register block device\n" ); +pr_err ("unable to register block device\n" ); goto out2; }if (!pktdev_major)
@@ -2986,7 +2991,7 @@ static int __init pkt_init(void) ret =misc_register (&pkt_misc);if (ret) { -printk (DRIVER_NAME ": Unable to register misc device\n" ); +pr_err ("unable to register misc device\n" ); goto out_misc; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Re: [PATCH 2/3] pktcdvd: Convert printk to pr_<level>
Quoted 5 lines · Joe Perches
Use a more current logging style and add messages levels to the logging messages.
Convert bare printks to
pr_contwhere appropriate and add a simple function to emit the sense string.
Few comments below.
Why not dev_dbg wherever it's possible?
drivers/block/pktcdvd.c line 65
Quoted 9 lines
drivers/block/pktcdvd.c +1
-1@@ -60,7 +62,7 @@#include <linux/mutex.h> #include <linux/slab.h> #include <scsi/scsi_cmnd.h> -l#include <scsi/scsi_ioctl.h> +#include <scsi/scsi_ioctl.h>
Maybe you simple could remove this typo in first patch?
Quoted 24 lines
drivers/block/pktcdvd.c +12
-2@@ -734,36 +736,37 @@ out:return ret; } +static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 ) +return info[index]; +return "INVALID" ; +} +/* * A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ static void pkt_dump_sense (struct packet_command *cgc) { -static char *info[9 ] = {"No sense" ,"Recovered error" ,"Not ready" , -"Medium error" ,"Hardware error" ,"Illegal request" ,
drivers/block/pktcdvd.c out: · line 762
Quoted 10 lines
drivers/block/pktcdvd.c +2
-4- "Unit attention", "Data protect", "Blank check" };int i;struct request_sense *sense = cgc->sense; -printk (DRIVER_NAME ":" ); +pr_err ("" );for (i =0 ; i <CDROM_PACKET_SIZE ; i++) -printk (" %02x" , cgc->cmd[i]); -printk (" - " ); +pr_cont (" %02x" , cgc->cmd[i]);
This one is actually %*ph.
Like: pr_info("%*ph", CDROM_PACKET_SIZE, cgc->cmd);
And what is the level of this message? debug?
--
With Best Regards,
Andy Shevchenko
Re: [PATCH 2/3] pktcdvd: Convert printk to pr_<level>
Quoted 10 lines · Andy Shevchenko
Quoted 5 lines · Joe Perches
Use a more current logging style and add messages levels to the logging messages.
Convert bare printks to
pr_contwhere appropriate and add a simple function to emit the sense string.Few comments below.
Why not
dev_dbgwherever it's possible?
Because dev_<level> conversions are not appropriate for a first pass. The "struct pktcdvd *" needs to be available for more function calls and that's more work / less automatic and this pass is more easily verified.
Quoted 7 lines
drivers/block/pktcdvd.c out: · line 762
Quoted 6 lines
drivers/block/pktcdvd.c +2
-3-printk (DRIVER_NAME ":" ); +pr_err ("" );for (i =0 ; i <CDROM_PACKET_SIZE ; i++) -printk (" %02x" , cgc->cmd[i]); -printk (" - " ); +pr_cont (" %02x" , cgc->cmd[i]);
Quoted 5 lines
This one is actually %*ph.
Like:
pr_info("%*ph", CDROM_PACKET_SIZE, cgc->cmd);And what is the level of this message? debug?
pr_err and good point about %*ph, I've fixed it and the stupid typo around the #include here.
PATCH 3/3 pktcdvd: Consolidate DPRINTK and VPRINTK macros
In reply to Joe PerchesUse the more common pkt_dbg(level, fmt, ...) form.
These messages are emitted at KERN_NOTICE.
Always emit function name with pkt_dbg(2, ...) uses and remove the sometimes abbreviated embedded function name.
This form always verifies the format and arguments.
--- drivers/block/pktcdvd.c | 107 ++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 54 deletions(-)
drivers/block/pktcdvd.c +53 -54
@@ -71,17 +71,13 @@#define DRIVER_NAME "pktcdvd" -#if PACKET_DEBUG -#define DPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define DPRINTK(fmt, args...) -#endif - -#if PACKET_DEBUG >1 -#define VPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define VPRINTK(fmt, args...) -#endif +#define pkt_dbg (level, fmt, ...) \ +do { \ + if (level == 2 && PACKET_DEBUG >= 2) \ + pr_notice("%s: " fmt, __func__, ##__VA_ARGS__); \ + else if (level == 1 && PACKET_DEBUG >= 1) \ + pr_notice(fmt, ##__VA_ARGS__); \ +} while (0)#define MAX_SPEED 0xffff
@@ -519,7 +515,7 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) {BUG_ON (atomic_read (&pd->cdrw.pending_bios) <=0 );if (atomic_dec_and_test (&pd->cdrw.pending_bios)) { -VPRINTK (DRIVER_NAME ": queue empty\n" ); +pkt_dbg (2 ,"queue empty\n" );atomic_set (&pd->iosched.attention,1 );wake_up (&pd->wqueue); }
@@ -875,7 +871,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) need_write_seek =0 ;if (need_write_seek && reads_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": write, waiting\n" ); +pkt_dbg (2 ,"write, waiting\n" );break ; }pkt_flush_cache (pd);
@@ -884,7 +880,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) }else {if (!reads_queued && writes_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": read, waiting\n" ); +pkt_dbg (2 ,"read, waiting\n" );break ; } pd->iosched.writing =1 ;
@@ -991,8 +987,9 @@ static void pkt_end_io_read(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d\n" , bio, - (unsigned long long )pkt->sector, (unsigned long long )bio->bi_sector, err); +pkt_dbg (2 ,"bio=%p sec0=%llx sec=%llx err=%d\n" , + bio, (unsigned long long )pkt->sector, + (unsigned long long )bio->bi_sector, err);if (err)atomic_inc (&pkt->io_errors);
@@ -1010,7 +1007,7 @@ static void pkt_end_io_packet_write(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_packet_write: id=%d, err=%d\n" , pkt->id, err); +pkt_dbg (2 ,"id=%d, err=%d\n" , pkt->id, err); pd->stats.pkt_ended++;
@@ -1052,7 +1049,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)spin_unlock (&pkt->lock);if (pkt->cache_valid) { -VPRINTK ("pkt_gather_data: zone %llx cached\n" , +pkt_dbg (2 ,"zone %llx cached\n" , (unsigned long long )pkt->sector); goto out_account; }
@@ -1075,7 +1072,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) p = (f *CD_FRAMESIZE ) /PAGE_SIZE ; offset = (f *CD_FRAMESIZE ) %PAGE_SIZE ; -VPRINTK ("pkt_gather_data: Adding frame %d, page:%p offs:%d\n" , +pkt_dbg (2 ,"Adding frame %d, page:%p offs:%d\n" , f, pkt->pages[p], offset);if (!bio_add_page (bio, pkt->pages[p],CD_FRAMESIZE , offset))BUG ();
@@ -1087,7 +1084,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) } out_account: -VPRINTK ("pkt_gather_data: need %d frames for zone %llx\n" , +pkt_dbg (2 ,"need %d frames for zone %llx\n" , frames_read, (unsigned long long )pkt->sector); pd->stats.pkt_started++; pd->stats.secs_rg += frames_read * (CD_FRAMESIZE >>9 );
@@ -1188,7 +1185,8 @@ static inline void pkt_set_state(struct packet_data *pkt, enum packet_data_state"IDLE" ,"WAITING" ,"READ_WAIT" ,"WRITE_WAIT" ,"RECOVERY" ,"FINISHED" };enum packet_data_state old_state = pkt->state; -VPRINTK ("pkt %2d : s=%6llx %s -> %s\n" , pkt->id, (unsigned long long )pkt->sector, +pkt_dbg (2 ,"pkt %2d : s=%6llx %s -> %s\n" , + pkt->id, (unsigned long long )pkt->sector, state_name[old_state], state_name[state]);#endif pkt->state = state;
@@ -1207,12 +1205,12 @@ static int pkt_handle_queue(struct pktcdvd_device *pd)struct rb_node *n;int wakeup; -VPRINTK ("handle_queue\n" ); +pkt_dbg (2 ,"\n" );atomic_set (&pd->scan_queue,0 );if (list_empty (&pd->cdrw.pkt_free_list)) { -VPRINTK ("handle_queue: no pkt\n" ); +pkt_dbg (2 ,"no pkt\n" );return 0 ; }
@@ -1249,7 +1247,7 @@ try_next_bio: }spin_unlock (&pd->lock);if (!bio) { -VPRINTK ("handle_queue: no bio\n" ); +pkt_dbg (2 ,"no bio\n" );return 0 ; }
@@ -1265,10 +1263,10 @@ try_next_bio:* to this packet. */ spin_lock (&pd->lock); -VPRINTK ("pkt_handle_queue: looking for zone %llx\n" , (unsigned long long )zone); +pkt_dbg (2 ,"looking for zone %llx\n" , (unsigned long long )zone);while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio; -VPRINTK ("pkt_handle_queue: found zone=%llx\n" , +pkt_dbg (2 ,"found zone=%llx\n" , (unsigned long long )get_zone (bio->bi_sector, pd));if (get_zone (bio->bi_sector, pd) != zone)break ;
@@ -1321,7 +1319,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)if (!bio_add_page (pkt->w_bio, bvec[f].bv_page,CD_FRAMESIZE , bvec[f].bv_offset))BUG (); } -VPRINTK (DRIVER_NAME ": vcnt=%d\n" , pkt->w_bio->bi_vcnt); +pkt_dbg (2 ,"vcnt=%d\n" , pkt->w_bio->bi_vcnt);/* * Fill-in bvec with data from orig_bios.
@@ -1332,7 +1330,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)pkt_set_state (pkt,PACKET_WRITE_WAIT_STATE );spin_unlock (&pkt->lock); -VPRINTK ("pkt_start_write: Writing %d frames for zone %llx\n" , +pkt_dbg (2 ,"Writing %d frames for zone %llx\n" , pkt->write_size, (unsigned long long )pkt->sector);if (test_bit (PACKET_MERGE_SEGS , &pd->flags) || (pkt->write_size < pkt->frames)) {
@@ -1364,7 +1362,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data {int uptodate; -VPRINTK ("run_state_machine: pkt %d\n" , pkt->id); +pkt_dbg (2 ,"pkt %d\n" , pkt->id);for (;;) {switch (pkt->state) {
@@ -1403,7 +1401,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_dataif (pkt_start_recovery (pkt)) {pkt_start_write (pd, pkt); }else { -VPRINTK ("No recovery possible\n" ); +pkt_dbg (2 ,"No recovery possible\n" );pkt_set_state (pkt,PACKET_FINISHED_STATE ); }break ;
@@ -1424,7 +1422,7 @@ static void pkt_handle_packets(struct pktcdvd_device *pd) {struct packet_data *pkt, *next; -VPRINTK ("pkt_handle_packets\n" ); +pkt_dbg (2 ,"\n" );/* * Run state machine for active packets
@@ -1507,9 +1505,9 @@ static int kcdrwd(void *foobar)if (PACKET_DEBUG >1 ) {int states[PACKET_NUM_STATES ];pkt_count_states (pd, states); -VPRINTK ("kcdrwd: i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , - states[0 ], states[1 ], states[2 ], states[3 ], - states[4 ], states[5 ]); +pkt_dbg (2 ,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , + states[0 ], states[1 ], states[2 ], + states[3 ], states[4 ], states[5 ]); } min_sleep_time =MAX_SCHEDULE_TIMEOUT ;
@@ -1518,9 +1516,9 @@ static int kcdrwd(void *foobar) min_sleep_time = pkt->sleep_time; } -VPRINTK ("kcdrwd: sleeping\n" ); +pkt_dbg (2 ,"sleeping\n" ); residue =schedule_timeout (min_sleep_time); -VPRINTK ("kcdrwd: wake up\n" ); +pkt_dbg (2 ,"wake up\n" );/* make swsusp happy with our thread */ try_to_freeze ();
@@ -1817,7 +1815,8 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)case 0x12 :/* DVD-RAM */ return 1 ;default : -VPRINTK (DRIVER_NAME ": Wrong disc profile (%x)\n" , pd->mmc3_profile); +pkt_dbg (2 ,"Wrong disc profile (%x)\n" , + pd->mmc3_profile);return 0 ; }
@@ -2132,7 +2131,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd)struct request_sense sense;int ret; -VPRINTK (DRIVER_NAME ": Performing OPC\n" ); +pkt_dbg (2 ,"Performing OPC\n" );init_cdrom_command (&cgc,NULL ,0 ,CGC_DATA_NONE ); cgc.sense = &sense;
@@ -2150,12 +2149,12 @@ static int pkt_open_write(struct pktcdvd_device *pd)unsigned int write_speed, media_write_speed, read_speed;if ((ret =pkt_probe_settings (pd))) { -VPRINTK (DRIVER_NAME ": %s failed probe\n" , pd->name); +pkt_dbg (2 ,"%s failed probe\n" , pd->name);return ret; }if ((ret =pkt_set_write_settings (pd))) { -DPRINTK (DRIVER_NAME ": %s failed saving write settings\n" , pd->name); +pkt_dbg (1 ,"%s failed saving write settings\n" , pd->name);return -EIO ; }
@@ -2167,26 +2166,26 @@ static int pkt_open_write(struct pktcdvd_device *pd)case 0x13 :/* DVD-RW */ case 0x1a :/* DVD+RW */ case 0x12 :/* DVD-RAM */ -DPRINTK (DRIVER_NAME ": write speed %ukB/s\n" , write_speed); +pkt_dbg (1 ,"write speed %ukB/s\n" , write_speed);break ;default :if ((ret =pkt_media_speed (pd, &media_write_speed))) media_write_speed =16 ; write_speed =min (write_speed, media_write_speed *177 ); -DPRINTK (DRIVER_NAME ": write speed %ux\n" , write_speed /176 ); +pkt_dbg (1 ,"write speed %ux\n" , write_speed /176 );break ; } read_speed = write_speed;if ((ret =pkt_set_speed (pd, write_speed, read_speed))) { -DPRINTK (DRIVER_NAME ": %s couldn't set write speed\n" , pd->name); +pkt_dbg (1 ,"%s couldn't set write speed\n" , pd->name);return -EIO ; } pd->write_speed = write_speed; pd->read_speed = read_speed;if ((ret =pkt_perform_opc (pd))) { -DPRINTK (DRIVER_NAME ": %s Optimum Power Calibration failed\n" , pd->name); +pkt_dbg (1 ,"%s Optimum Power Calibration failed\n" , pd->name); }return 0 ;
@@ -2263,7 +2262,7 @@ out:static void pkt_release_dev (struct pktcdvd_device *pd,int flush) {if (flush &&pkt_flush_cache (pd)) -DPRINTK (DRIVER_NAME ": %s not flushing cache\n" , pd->name); +pkt_dbg (1 ,"%s not flushing cache\n" , pd->name);pkt_lock_door (pd,0 );
@@ -2285,7 +2284,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode)struct pktcdvd_device *pd =NULL ;int ret; -VPRINTK (DRIVER_NAME ": entering open\n" ); +pkt_dbg (2 ,"entering\n" );mutex_lock (&pktcdvd_mutex);mutex_lock (&ctl_mutex);
@@ -2321,7 +2320,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode) out_dec: pd->refcnt--; out: -VPRINTK (DRIVER_NAME ": failed open (%d)\n" , ret); +pkt_dbg (2 ,"failed (%d)\n" , ret);mutex_unlock (&ctl_mutex);mutex_unlock (&pktcdvd_mutex);return ret;
@@ -2403,7 +2402,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); zone =get_zone (bio->bi_sector, pd); -VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , +pkt_dbg (2 ,"start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2658,7 +2657,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev) }proc_create_data (pd->name,0 , pkt_proc, &pkt_proc_fops, pd); -DPRINTK (DRIVER_NAME ": writer %s mapped to %s\n" , pd->name,bdevname (bdev, b)); +pkt_dbg (1 ,"writer %s mapped to %s\n" , pd->name,bdevname (bdev, b));return 0 ; out_mem:
@@ -2673,8 +2672,8 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,struct pktcdvd_device *pd = bdev->bd_disk->private_data;int ret; -VPRINTK ("pkt_ioctl: cmd %x, dev %d:%d\n" , cmd, -MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev)); +pkt_dbg (2 ,"cmd %x, dev %d:%d\n" , + cmd,MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev));mutex_lock (&pktcdvd_mutex);switch (cmd) {
@@ -2698,7 +2697,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,break ;default : -VPRINTK (DRIVER_NAME ": Unknown ioctl for %s (%x)\n" , pd->name, cmd); +pkt_dbg (2 ,"Unknown ioctl for %s (%x)\n" , pd->name, cmd); ret = -ENOTTY ; }mutex_unlock (&pktcdvd_mutex);
@@ -2847,7 +2846,7 @@ static int pkt_remove_dev(dev_t pkt_dev)break ; }if (idx ==MAX_WRITERS ) { -DPRINTK (DRIVER_NAME ": dev not setup\n" ); +pkt_dbg (1 ,"dev not setup\n" ); ret = -ENXIO ; goto out; }
@@ -2867,7 +2866,7 @@ static int pkt_remove_dev(dev_t pkt_dev)blkdev_put (pd->bdev,FMODE_READ |FMODE_NDELAY );remove_proc_entry (pd->name, pkt_proc); -DPRINTK (DRIVER_NAME ": writer %s unmapped\n" , pd->name); +pkt_dbg (1 ,"writer %s unmapped\n" , pd->name);del_gendisk (pd->disk);blk_cleanup_queue (pd->disk->queue);
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Re: [PATCH 0/3] pktcdvd: A few more neatenings
In reply to Joe PerchesQuoted 8 lines · Joe Perches
Joe Perches (3):
pktcdvd: Convert ZONE macro to static functionget_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macrosdrivers/block/pktcdvd.c | 248 ++++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 122 deletions(-)
Hey Jiri.
This doesn't compile correctly.
1/3 adds a compile time error, 2/3 corrects it.
Please ignore it.
v2 cover pktcdvd: More neatenings
Removed the compile error the patch 1 and compile fix in 2 Added Andy's suggestion in patch 2.
Added conversions to print pd->name in logging macros.
Joe Perches (8):
pktcdvd: Convert ZONE macro to static function get_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macros
pktcdvd: Add struct pktcdvd_device * to pkt_dbg
pktcdvd: Add struct pktcdvd_device.name to pr_err logging where possible
pktcdvd: Convert pr_notice to pkt_notice
pktcdvd: Convert pr_info to pkt_info
pktcdvd: Add struct pktcdvd_device * to pkt_dump_sense()
drivers/block/pktcdvd.c | 277 ++++++++++++++++++++++++------------------------ 1 file changed, 140 insertions(+), 137 deletions(-)
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 1/8 pktcdvd: Convert ZONE macro to static function get_zone()
Macros should be converted to functions where feasible to verify arguments and the like.
--- drivers/block/pktcdvd.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/block/pktcdvd.c +10 -10
@@ -83,9 +83,6 @@#define MAX_SPEED 0xffff -#define ZONE (sector, pd) (((sector) + (pd)->offset) & \ - ~(sector_t)((pd)->settings.size - 1)) -static DEFINE_MUTEX (pktcdvd_mutex);static struct pktcdvd_device *pkt_devs[MAX_WRITERS ];static struct proc_dir_entry *pkt_proc;
@@ -103,7 +100,10 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev);static int pkt_remove_dev (dev_t pkt_dev);static int pkt_seq_show (struct seq_file *m,void *p); - +static sector_t get_zone (sector_t sector,struct pktcdvd_device *pd) +{ +return (sector + pd->offset) & ~(sector_t)(pd->settings.size -1 ); +}/* * create and register a pktcdvd kernel object.
@@ -1226,7 +1226,7 @@ static int pkt_handle_queue(struct pktcdvd_device *pd) node = first_node;while (node) { bio = node->bio; - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);list_for_each_entry (p, &pd->cdrw.pkt_active_list, list) {if (p->sector == zone) { bio =NULL ;
@@ -1266,8 +1266,8 @@ try_next_bio:while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio;VPRINTK ("pkt_handle_queue: found zone=%llx\n" , - (unsigned long long )ZONE (bio->bi_sector, pd)); -if (ZONE (bio->bi_sector, pd) != zone) + (unsigned long long )get_zone (bio->bi_sector, pd)); +if (get_zone (bio->bi_sector, pd) != zone)break ;pkt_rbtree_erase (pd, node);spin_lock (&pkt->lock);
@@ -2397,7 +2397,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2408,7 +2408,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)sector_t last_zone;int first_sectors; - last_zone =ZONE (bio_end_sector (bio) -1 , pd); + last_zone =get_zone (bio_end_sector (bio) -1 , pd);if (last_zone != zone) {BUG_ON (last_zone != zone + pd->settings.size); first_sectors = last_zone - bio->bi_sector;
@@ -2503,7 +2503,7 @@ static int pkt_merge_bvec(struct request_queue *q, struct bvec_merge_data *bmd, struct bio_vec *bvec) {struct pktcdvd_device *pd = q->queuedata; -sector_t zone =ZONE (bmd->bi_sector, pd); +sector_t zone =get_zone (bmd->bi_sector, pd);int used = ((bmd->bi_sector - zone) <<9 ) + bmd->bi_size;int remaining = (pd->settings.size <<9 ) - used;int remaining2;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 2/8 pktcdvd: Convert printk to pr_<level>
In reply to Joe PerchesUse a more current logging style and add messages levels to the logging messages.
Simplify pkt_dump_sense by using %*ph and adding a simple function to emit the sense string.
--- drivers/block/pktcdvd.c | 123 ++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 61 deletions(-)
drivers/block/pktcdvd.c +62 -61
@@ -44,6 +44,8 @@* *************************************************************************/ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/pktcdvd.h> #include <linux/module.h> #include <linux/types.h>
@@ -424,7 +426,7 @@ static int pkt_sysfs_init(void)if (ret) {kfree (class_pktcdvd); class_pktcdvd =NULL ; -printk (DRIVER_NAME ": failed to create class pktcdvd\n" ); +pr_err ("failed to create class pktcdvd\n" );return ret; }return 0 ;
@@ -734,36 +736,33 @@ out:return ret; } +static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 ) +return info[index]; +return "INVALID" ; +} +/* * A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ static void pkt_dump_sense (struct packet_command *cgc) { -static char *info[9 ] = {"No sense" ,"Recovered error" ,"Not ready" , -"Medium error" ,"Hardware error" ,"Illegal request" , -"Unit attention" ,"Data protect" ,"Blank check" }; -int i;struct request_sense *sense = cgc->sense; -printk (DRIVER_NAME ":" ); -for (i =0 ; i <CDROM_PACKET_SIZE ; i++) -printk (" %02x" , cgc->cmd[i]); -printk (" - " ); - -if (sense ==NULL ) { -printk ("no sense\n" ); -return ; - } - -printk ("sense %02x.%02x.%02x" , sense->sense_key, sense->asc, sense->ascq); - -if (sense->sense_key >8 ) { -printk (" (INVALID)\n" ); -return ; - } - -printk (" (%s)\n" , info[sense->sense_key]); +if (sense) +pr_err ("%*ph - sense %02x.%02x.%02x (%s)\n" , +CDROM_PACKET_SIZE , cgc->cmd, + sense->sense_key, sense->asc, sense->ascq, +sense_key_string (sense->sense_key)); +else +pr_err ("%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); }/*
@@ -943,7 +942,7 @@ static int pkt_set_segment_merging(struct pktcdvd_device *pd, struct request_queset_bit (PACKET_MERGE_SEGS , &pd->flags);return 0 ; }else { -printk (DRIVER_NAME ": cdrom max_phys_segments too small\n" ); +pr_err ("cdrom max_phys_segments too small\n" );return -EIO ; } }
@@ -1565,9 +1564,10 @@ work_to_do:static void pkt_print_settings (struct pktcdvd_device *pd) { -printk (DRIVER_NAME ": %s packets, " , pd->settings.fp ?"Fixed" :"Variable" ); -printk ("%u blocks, " , pd->settings.size >>2 ); -printk ("Mode-%c disc\n" , pd->settings.block_mode ==8 ?'1' :'2' ); +pr_info ("%s packets, %u blocks, Mode-%c disc\n" , + pd->settings.fp ?"Fixed" :"Variable" , + pd->settings.size >>2 , + pd->settings.block_mode ==8 ?'1' :'2' ); }static int pkt_mode_sense (struct pktcdvd_device *pd,struct packet_command *cgc,int page_code,int page_control)
@@ -1751,7 +1751,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)/* * paranoia */ -printk (DRIVER_NAME ": write mode wrong %d\n" , wp->data_block_type); +pr_err ("write mode wrong %d\n" , wp->data_block_type);return 1 ; } wp->packet_size =cpu_to_be32 (pd->settings.size >>2 );
@@ -1795,7 +1795,7 @@ static int pkt_writable_track(struct pktcdvd_device *pd, track_information *ti)if (ti->rt ==1 && ti->blank ==0 )return 1 ; -printk (DRIVER_NAME ": bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet); +pr_err ("bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet);return 0 ; }
@@ -1822,22 +1822,22 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)* but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type ==0xff ) { -printk (DRIVER_NAME ": Unknown disc. No track?\n" ); +pr_notice ("unknown disc - no track?\n" );return 0 ; }if (di->disc_type !=0x20 && di->disc_type !=0 ) { -printk (DRIVER_NAME ": Wrong disc type (%x)\n" , di->disc_type); +pr_err ("wrong disc type (%x)\n" , di->disc_type);return 0 ; }if (di->erasable ==0 ) { -printk (DRIVER_NAME ": Disc not erasable\n" ); +pr_notice ("disc not erasable\n" );return 0 ; }if (di->border_status ==PACKET_SESSION_RESERVED ) { -printk (DRIVER_NAME ": Can't write to last track (reserved)\n" ); +pr_err ("can't write to last track (reserved)\n" );return 0 ; }
@@ -1862,7 +1862,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)memset (&ti,0 ,sizeof (track_information));if ((ret =pkt_get_disc_info (pd, &di))) { -printk ("failed get_disc\n" ); +pr_err ("failed get_disc\n" );return ret; }
@@ -1873,12 +1873,12 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) track =1 ;/* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret =pkt_get_track_info (pd, track,1 , &ti))) { -printk (DRIVER_NAME ": failed get_track\n" ); +pr_err ("failed get_track\n" );return ret; }if (!pkt_writable_track (pd, &ti)) { -printk (DRIVER_NAME ": can't write to this track\n" ); +pr_err ("can't write to this track\n" );return -EROFS ; }
@@ -1888,11 +1888,11 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)*/ pd->settings.size =be32_to_cpu (ti.fixed_packet_size) <<2 ;if (pd->settings.size ==0 ) { -printk (DRIVER_NAME ": detected zero packet size!\n" ); +pr_notice ("detected zero packet size!\n" );return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) { -printk (DRIVER_NAME ": packet size is too big\n" ); +pr_err ("packet size is too big\n" );return -EROFS ; } pd->settings.fp = ti.fp;
@@ -1934,7 +1934,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) pd->settings.block_mode =PACKET_BLOCK_MODE2 ;break ;default : -printk (DRIVER_NAME ": unknown data mode\n" ); +pr_err ("unknown data mode\n" );return -EROFS ; }return 0 ;
@@ -1968,10 +1968,10 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, cgc.buflen = cgc.cmd[8 ] =2 + ((buf[0 ] <<8 ) | (buf[1 ] &0xff )); ret =pkt_mode_select (pd, &cgc);if (ret) { -printk (DRIVER_NAME ": write caching control failed\n" ); +pr_err ("write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set) -printk (DRIVER_NAME ": enabled write caching on %s\n" , pd->name); +pr_notice ("enabled write caching on %s\n" , pd->name);return ret; }
@@ -2086,11 +2086,11 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, }if (!(buf[6 ] &0x40 )) { -printk (DRIVER_NAME ": Disc type is not CD-RW\n" ); +pr_notice ("disc type is not CD-RW\n" );return 1 ; }if (!(buf[6 ] &0x4 )) { -printk (DRIVER_NAME ": A1 values on media are not valid, maybe not CDRW?\n" ); +pr_notice ("A1 values on media are not valid, maybe not CDRW?\n" );return 1 ; }
@@ -2110,14 +2110,14 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, *speed = us_clv_to_speed[sp];break ;default : -printk (DRIVER_NAME ": Unknown disc sub-type %d\n" ,st); +pr_notice ("unknown disc sub-type %d\n" , st);return 1 ; }if (*speed) { -printk (DRIVER_NAME ": Max. media speed: %d\n" ,*speed); +pr_info ("maximum media speed: %d\n" , *speed);return 0 ; }else { -printk (DRIVER_NAME ": Unknown speed %d for sub-type %d\n" ,sp,st); +pr_notice ("unknown speed %d for sub-type %d\n" , sp, st);return 1 ; } }
@@ -2207,7 +2207,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) goto out;if ((ret =pkt_get_last_written (pd, &lba))) { -printk (DRIVER_NAME ": pkt_get_last_written failed\n" ); +pr_err ("pkt_get_last_written failed\n" ); goto out_putdev; }
@@ -2237,11 +2237,11 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write)if (write) {if (!pkt_grow_pktlist (pd,CONFIG_CDROM_PKTCDVD_BUFFERS )) { -printk (DRIVER_NAME ": not enough memory for buffers\n" ); +pr_err ("not enough memory for buffers\n" ); ret = -ENOMEM ; goto out_putdev; } -printk (DRIVER_NAME ": %lukB available on disc\n" , lba <<1 ); +pr_info ("%lukB available on disc\n" , lba <<1 ); }return 0 ;
@@ -2363,7 +2363,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) pd = q->queuedata;if (!pd) { -printk (DRIVER_NAME ": %s incorrect request queue\n" ,bdevname (bio->bi_bdev, b)); +pr_err ("%s incorrect request queue\n" , +bdevname (bio->bi_bdev, b)); goto end_io; }
@@ -2385,13 +2386,13 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!test_bit (PACKET_WRITABLE , &pd->flags)) { -printk (DRIVER_NAME ": WRITE for ro device %s (%llu)\n" , - pd->name, (unsigned long long )bio->bi_sector); +pr_notice ("WRITE for ro device %s (%llu)\n" , + pd->name, (unsigned long long )bio->bi_sector); goto end_io; }if (!bio->bi_size || (bio->bi_size %CD_FRAMESIZE )) { -printk (DRIVER_NAME ": wrong bio size\n" ); +pr_err ("wrong bio size\n" ); goto end_io; }
@@ -2612,7 +2613,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)struct block_device *bdev;if (pd->pkt_dev == dev) { -printk (DRIVER_NAME ": Recursive setup not allowed\n" ); +pr_err ("recursive setup not allowed\n" );return -EBUSY ; }for (i =0 ; i <MAX_WRITERS ; i++) {
@@ -2620,11 +2621,11 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)if (!pd2)continue ;if (pd2->bdev->bd_dev == dev) { -printk (DRIVER_NAME ": %s already setup\n" ,bdevname (pd2->bdev, b)); +pr_err ("%s already setup\n" ,bdevname (pd2->bdev, b));return -EBUSY ; }if (pd2->pkt_dev == dev) { -printk (DRIVER_NAME ": Can't chain pktcdvd devices\n" ); +pr_err ("can't chain pktcdvd devices\n" );return -EBUSY ; } }
@@ -2647,7 +2648,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)atomic_set (&pd->cdrw.pending_bios,0 ); pd->cdrw.thread =kthread_run (kcdrwd, pd,"%s" , pd->name);if (IS_ERR (pd->cdrw.thread)) { -printk (DRIVER_NAME ": can't start kernel thread\n" ); +pr_err ("can't start kernel thread\n" ); ret = -ENOMEM ; goto out_mem; }
@@ -2746,7 +2747,7 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev)if (!pkt_devs[idx])break ;if (idx ==MAX_WRITERS ) { -printk (DRIVER_NAME ": max %d writers supported\n" ,MAX_WRITERS ); +pr_err ("max %d writers supported\n" ,MAX_WRITERS ); ret = -EBUSY ; goto out_mutex; }
@@ -2821,7 +2822,7 @@ out_mem:kfree (pd); out_mutex:mutex_unlock (&ctl_mutex); -printk (DRIVER_NAME ": setup of pktcdvd device failed\n" ); +pr_err ("setup of pktcdvd device failed\n" );return ret; }
@@ -2972,7 +2973,7 @@ static int __init pkt_init(void) ret =register_blkdev (pktdev_major,DRIVER_NAME );if (ret <0 ) { -printk (DRIVER_NAME ": Unable to register block device\n" ); +pr_err ("unable to register block device\n" ); goto out2; }if (!pktdev_major)
@@ -2986,7 +2987,7 @@ static int __init pkt_init(void) ret =misc_register (&pkt_misc);if (ret) { -printk (DRIVER_NAME ": Unable to register misc device\n" ); +pr_err ("unable to register misc device\n" ); goto out_misc; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Re: [PATCH V2 2/8] pktcdvd: Convert printk to pr_<level>
drivers/block/pktcdvd.c out: · line 746
Quoted 8 lines · Joe Perches
drivers/block/pktcdvd.c +8
-0+static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 )
Off by one:
if (index < 9)
drivers/block/pktcdvd.c out: · line 748
Quoted 2 lines
drivers/block/pktcdvd.c +2
-0+return info[index]; +return "INVALID" ;
regards,
dan carpenter
Re: [PATCH V2 2/8] pktcdvd: Convert printk to pr_<level>
Quoted 12 lines · Dan Carpenter
drivers/block/pktcdvd.c out: · line 746
Quoted 8 lines · Joe Perches
drivers/block/pktcdvd.c +8
-0+static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 )Off by one:
Quoted 1 line
if (index < 9)
Perhaps
if (index < ARRAY_SIZE(info)) ?
I actually didn't test this, if it returns number of strings.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Re: [PATCH V2 2/8] pktcdvd: Convert printk to pr_<level>
In reply to Dan CarpenterQuoted 12 lines · Dan Carpenter
drivers/block/pktcdvd.c out: · line 746
Quoted 8 lines · Joe Perches
drivers/block/pktcdvd.c +8
-0+static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 )Off by one:
Quoted 1 line
if (index < 9)
Kinda, but that's the original code.
It should be ARRAY_SIZE and I think it should be
done in a separate patch.
Someone should say if "Blank check" is really one
of the sense key values possible or if it should
just be deleted.
Re: [PATCH V2 2/8] pktcdvd: Convert printk to pr_<level>
Quoted 15 lines · Joe Perches
Quoted 12 lines · Dan Carpenter
drivers/block/pktcdvd.c out: · line 746
Quoted 8 lines · Joe Perches
drivers/block/pktcdvd.c +8
-0+static const char *sense_key_string (__u8 index) +{ +static const char *info[9 ] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" + }; +if (index <8 )Off by one:
Quoted 1 line
if (index < 9)
Quoted 8 lines
Kinda, but that's the original code.
It should be
ARRAY_SIZEand I think it should be
done in a separate patch.Someone should say if "Blank check" is really one
of the sense key values possible or if it should
just be deleted.
Read it again. ;) In the original code, 8 was valid.
Andy is right though that it should be ARRAY_SIZE().
regards,
dan carpenter
Re: [PATCH V2 2/8] pktcdvd: Convert printk to pr_<level>
Quoted 1 line · Dan Carpenter
Read it again. ;) In the original code, 8 was valid.
Right, I stuffed it up. Thanks, I'll resubmit later.
v3 cover pktcdvd: More neatenings
In reply to Dan CarpenterThanks for the oversight reviews guys.
V3:
Fixed patch 2 thinko in sense_string via Dan Carpenter
Moved pr_err in patch 5 to avoid moving again in patch 6 via Andy Schevchenko
V2:
Removed the compile error the patch 1 and compile fix in 2 Added Andy's suggestion in patch 2.
Added conversions to print pd->name in logging macros.
Joe Perches (8):
pktcdvd: Convert ZONE macro to static function get_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macros
pktcdvd: Add struct pktcdvd_device * to pkt_dbg
pktcdvd: Add struct pktcdvd_device.name to pr_err logging where possible
pktcdvd: Convert pr_notice to pkt_notice
pktcdvd: Convert pr_info to pkt_info
pktcdvd: Add struct pktcdvd_device * to pkt_dump_sense()
drivers/block/pktcdvd.c | 278 ++++++++++++++++++++++++------------------------ 1 file changed, 140 insertions(+), 138 deletions(-)
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 1/8 pktcdvd: Convert ZONE macro to static function get_zone()
Macros should be converted to functions where feasible to verify arguments and the like.
--- drivers/block/pktcdvd.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/block/pktcdvd.c +10 -10
@@ -83,9 +83,6 @@#define MAX_SPEED 0xffff -#define ZONE (sector, pd) (((sector) + (pd)->offset) & \ - ~(sector_t)((pd)->settings.size - 1)) -static DEFINE_MUTEX (pktcdvd_mutex);static struct pktcdvd_device *pkt_devs[MAX_WRITERS ];static struct proc_dir_entry *pkt_proc;
@@ -103,7 +100,10 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev);static int pkt_remove_dev (dev_t pkt_dev);static int pkt_seq_show (struct seq_file *m,void *p); - +static sector_t get_zone (sector_t sector,struct pktcdvd_device *pd) +{ +return (sector + pd->offset) & ~(sector_t)(pd->settings.size -1 ); +}/* * create and register a pktcdvd kernel object.
@@ -1226,7 +1226,7 @@ static int pkt_handle_queue(struct pktcdvd_device *pd) node = first_node;while (node) { bio = node->bio; - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);list_for_each_entry (p, &pd->cdrw.pkt_active_list, list) {if (p->sector == zone) { bio =NULL ;
@@ -1266,8 +1266,8 @@ try_next_bio:while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio;VPRINTK ("pkt_handle_queue: found zone=%llx\n" , - (unsigned long long )ZONE (bio->bi_sector, pd)); -if (ZONE (bio->bi_sector, pd) != zone) + (unsigned long long )get_zone (bio->bi_sector, pd)); +if (get_zone (bio->bi_sector, pd) != zone)break ;pkt_rbtree_erase (pd, node);spin_lock (&pkt->lock);
@@ -2397,7 +2397,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); - zone =ZONE (bio->bi_sector, pd); + zone =get_zone (bio->bi_sector, pd);VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2408,7 +2408,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)sector_t last_zone;int first_sectors; - last_zone =ZONE (bio_end_sector (bio) -1 , pd); + last_zone =get_zone (bio_end_sector (bio) -1 , pd);if (last_zone != zone) {BUG_ON (last_zone != zone + pd->settings.size); first_sectors = last_zone - bio->bi_sector;
@@ -2503,7 +2503,7 @@ static int pkt_merge_bvec(struct request_queue *q, struct bvec_merge_data *bmd, struct bio_vec *bvec) {struct pktcdvd_device *pd = q->queuedata; -sector_t zone =ZONE (bmd->bi_sector, pd); +sector_t zone =get_zone (bmd->bi_sector, pd);int used = ((bmd->bi_sector - zone) <<9 ) + bmd->bi_size;int remaining = (pd->settings.size <<9 ) - used;int remaining2;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 2/8 pktcdvd: Convert printk to pr_<level>
In reply to Joe PerchesUse a more current logging style and add messages levels to the logging messages.
Simplify pkt_dump_sense by using %*ph and adding a simple function to emit the sense string.
---
V3: Fixed sense_string array indexing thinko
drivers/block/pktcdvd.c | 122 ++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 61 deletions(-)
drivers/block/pktcdvd.c +61 -61
@@ -44,6 +44,8 @@* *************************************************************************/ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/pktcdvd.h> #include <linux/module.h> #include <linux/types.h>
@@ -424,7 +426,7 @@ static int pkt_sysfs_init(void)if (ret) {kfree (class_pktcdvd); class_pktcdvd =NULL ; -printk (DRIVER_NAME ": failed to create class pktcdvd\n" ); +pr_err ("failed to create class pktcdvd\n" );return ret; }return 0 ;
@@ -734,36 +736,32 @@ out:return ret; } +static const char *sense_key_string (__u8 index) +{ +static const char *const info[] = { +"No sense" ,"Recovered error" ,"Not ready" , +"Medium error" ,"Hardware error" ,"Illegal request" , +"Unit attention" ,"Data protect" ,"Blank check" , + }; + +return index <ARRAY_SIZE (info) ? info[index] :"INVALID" ; +} +/* * A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ static void pkt_dump_sense (struct packet_command *cgc) { -static char *info[9 ] = {"No sense" ,"Recovered error" ,"Not ready" , -"Medium error" ,"Hardware error" ,"Illegal request" , -"Unit attention" ,"Data protect" ,"Blank check" }; -int i;struct request_sense *sense = cgc->sense; -printk (DRIVER_NAME ":" ); -for (i =0 ; i <CDROM_PACKET_SIZE ; i++) -printk (" %02x" , cgc->cmd[i]); -printk (" - " ); - -if (sense ==NULL ) { -printk ("no sense\n" ); -return ; - } - -printk ("sense %02x.%02x.%02x" , sense->sense_key, sense->asc, sense->ascq); - -if (sense->sense_key >8 ) { -printk (" (INVALID)\n" ); -return ; - } - -printk (" (%s)\n" , info[sense->sense_key]); +if (sense) +pr_err ("%*ph - sense %02x.%02x.%02x (%s)\n" , +CDROM_PACKET_SIZE , cgc->cmd, + sense->sense_key, sense->asc, sense->ascq, +sense_key_string (sense->sense_key)); +else +pr_err ("%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); }/*
@@ -943,7 +941,7 @@ static int pkt_set_segment_merging(struct pktcdvd_device *pd, struct request_queset_bit (PACKET_MERGE_SEGS , &pd->flags);return 0 ; }else { -printk (DRIVER_NAME ": cdrom max_phys_segments too small\n" ); +pr_err ("cdrom max_phys_segments too small\n" );return -EIO ; } }
@@ -1565,9 +1563,10 @@ work_to_do:static void pkt_print_settings (struct pktcdvd_device *pd) { -printk (DRIVER_NAME ": %s packets, " , pd->settings.fp ?"Fixed" :"Variable" ); -printk ("%u blocks, " , pd->settings.size >>2 ); -printk ("Mode-%c disc\n" , pd->settings.block_mode ==8 ?'1' :'2' ); +pr_info ("%s packets, %u blocks, Mode-%c disc\n" , + pd->settings.fp ?"Fixed" :"Variable" , + pd->settings.size >>2 , + pd->settings.block_mode ==8 ?'1' :'2' ); }static int pkt_mode_sense (struct pktcdvd_device *pd,struct packet_command *cgc,int page_code,int page_control)
@@ -1751,7 +1750,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)/* * paranoia */ -printk (DRIVER_NAME ": write mode wrong %d\n" , wp->data_block_type); +pr_err ("write mode wrong %d\n" , wp->data_block_type);return 1 ; } wp->packet_size =cpu_to_be32 (pd->settings.size >>2 );
@@ -1795,7 +1794,7 @@ static int pkt_writable_track(struct pktcdvd_device *pd, track_information *ti)if (ti->rt ==1 && ti->blank ==0 )return 1 ; -printk (DRIVER_NAME ": bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet); +pr_err ("bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet);return 0 ; }
@@ -1822,22 +1821,22 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)* but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type ==0xff ) { -printk (DRIVER_NAME ": Unknown disc. No track?\n" ); +pr_notice ("unknown disc - no track?\n" );return 0 ; }if (di->disc_type !=0x20 && di->disc_type !=0 ) { -printk (DRIVER_NAME ": Wrong disc type (%x)\n" , di->disc_type); +pr_err ("wrong disc type (%x)\n" , di->disc_type);return 0 ; }if (di->erasable ==0 ) { -printk (DRIVER_NAME ": Disc not erasable\n" ); +pr_notice ("disc not erasable\n" );return 0 ; }if (di->border_status ==PACKET_SESSION_RESERVED ) { -printk (DRIVER_NAME ": Can't write to last track (reserved)\n" ); +pr_err ("can't write to last track (reserved)\n" );return 0 ; }
@@ -1862,7 +1861,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)memset (&ti,0 ,sizeof (track_information));if ((ret =pkt_get_disc_info (pd, &di))) { -printk ("failed get_disc\n" ); +pr_err ("failed get_disc\n" );return ret; }
@@ -1873,12 +1872,12 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) track =1 ;/* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret =pkt_get_track_info (pd, track,1 , &ti))) { -printk (DRIVER_NAME ": failed get_track\n" ); +pr_err ("failed get_track\n" );return ret; }if (!pkt_writable_track (pd, &ti)) { -printk (DRIVER_NAME ": can't write to this track\n" ); +pr_err ("can't write to this track\n" );return -EROFS ; }
@@ -1888,11 +1887,11 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)*/ pd->settings.size =be32_to_cpu (ti.fixed_packet_size) <<2 ;if (pd->settings.size ==0 ) { -printk (DRIVER_NAME ": detected zero packet size!\n" ); +pr_notice ("detected zero packet size!\n" );return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) { -printk (DRIVER_NAME ": packet size is too big\n" ); +pr_err ("packet size is too big\n" );return -EROFS ; } pd->settings.fp = ti.fp;
@@ -1934,7 +1933,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) pd->settings.block_mode =PACKET_BLOCK_MODE2 ;break ;default : -printk (DRIVER_NAME ": unknown data mode\n" ); +pr_err ("unknown data mode\n" );return -EROFS ; }return 0 ;
@@ -1968,10 +1967,10 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, cgc.buflen = cgc.cmd[8 ] =2 + ((buf[0 ] <<8 ) | (buf[1 ] &0xff )); ret =pkt_mode_select (pd, &cgc);if (ret) { -printk (DRIVER_NAME ": write caching control failed\n" ); +pr_err ("write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set) -printk (DRIVER_NAME ": enabled write caching on %s\n" , pd->name); +pr_notice ("enabled write caching on %s\n" , pd->name);return ret; }
@@ -2086,11 +2085,11 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, }if (!(buf[6 ] &0x40 )) { -printk (DRIVER_NAME ": Disc type is not CD-RW\n" ); +pr_notice ("disc type is not CD-RW\n" );return 1 ; }if (!(buf[6 ] &0x4 )) { -printk (DRIVER_NAME ": A1 values on media are not valid, maybe not CDRW?\n" ); +pr_notice ("A1 values on media are not valid, maybe not CDRW?\n" );return 1 ; }
@@ -2110,14 +2109,14 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, *speed = us_clv_to_speed[sp];break ;default : -printk (DRIVER_NAME ": Unknown disc sub-type %d\n" ,st); +pr_notice ("unknown disc sub-type %d\n" , st);return 1 ; }if (*speed) { -printk (DRIVER_NAME ": Max. media speed: %d\n" ,*speed); +pr_info ("maximum media speed: %d\n" , *speed);return 0 ; }else { -printk (DRIVER_NAME ": Unknown speed %d for sub-type %d\n" ,sp,st); +pr_notice ("unknown speed %d for sub-type %d\n" , sp, st);return 1 ; } }
@@ -2207,7 +2206,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) goto out;if ((ret =pkt_get_last_written (pd, &lba))) { -printk (DRIVER_NAME ": pkt_get_last_written failed\n" ); +pr_err ("pkt_get_last_written failed\n" ); goto out_putdev; }
@@ -2237,11 +2236,11 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write)if (write) {if (!pkt_grow_pktlist (pd,CONFIG_CDROM_PKTCDVD_BUFFERS )) { -printk (DRIVER_NAME ": not enough memory for buffers\n" ); +pr_err ("not enough memory for buffers\n" ); ret = -ENOMEM ; goto out_putdev; } -printk (DRIVER_NAME ": %lukB available on disc\n" , lba <<1 ); +pr_info ("%lukB available on disc\n" , lba <<1 ); }return 0 ;
@@ -2363,7 +2362,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) pd = q->queuedata;if (!pd) { -printk (DRIVER_NAME ": %s incorrect request queue\n" ,bdevname (bio->bi_bdev, b)); +pr_err ("%s incorrect request queue\n" , +bdevname (bio->bi_bdev, b)); goto end_io; }
@@ -2385,13 +2385,13 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!test_bit (PACKET_WRITABLE , &pd->flags)) { -printk (DRIVER_NAME ": WRITE for ro device %s (%llu)\n" , - pd->name, (unsigned long long )bio->bi_sector); +pr_notice ("WRITE for ro device %s (%llu)\n" , + pd->name, (unsigned long long )bio->bi_sector); goto end_io; }if (!bio->bi_size || (bio->bi_size %CD_FRAMESIZE )) { -printk (DRIVER_NAME ": wrong bio size\n" ); +pr_err ("wrong bio size\n" ); goto end_io; }
@@ -2612,7 +2612,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)struct block_device *bdev;if (pd->pkt_dev == dev) { -printk (DRIVER_NAME ": Recursive setup not allowed\n" ); +pr_err ("recursive setup not allowed\n" );return -EBUSY ; }for (i =0 ; i <MAX_WRITERS ; i++) {
@@ -2620,11 +2620,11 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)if (!pd2)continue ;if (pd2->bdev->bd_dev == dev) { -printk (DRIVER_NAME ": %s already setup\n" ,bdevname (pd2->bdev, b)); +pr_err ("%s already setup\n" ,bdevname (pd2->bdev, b));return -EBUSY ; }if (pd2->pkt_dev == dev) { -printk (DRIVER_NAME ": Can't chain pktcdvd devices\n" ); +pr_err ("can't chain pktcdvd devices\n" );return -EBUSY ; } }
@@ -2647,7 +2647,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)atomic_set (&pd->cdrw.pending_bios,0 ); pd->cdrw.thread =kthread_run (kcdrwd, pd,"%s" , pd->name);if (IS_ERR (pd->cdrw.thread)) { -printk (DRIVER_NAME ": can't start kernel thread\n" ); +pr_err ("can't start kernel thread\n" ); ret = -ENOMEM ; goto out_mem; }
@@ -2746,7 +2746,7 @@ static int pkt_setup_dev(dev_t dev, dev_t* pkt_dev)if (!pkt_devs[idx])break ;if (idx ==MAX_WRITERS ) { -printk (DRIVER_NAME ": max %d writers supported\n" ,MAX_WRITERS ); +pr_err ("max %d writers supported\n" ,MAX_WRITERS ); ret = -EBUSY ; goto out_mutex; }
@@ -2821,7 +2821,7 @@ out_mem:kfree (pd); out_mutex:mutex_unlock (&ctl_mutex); -printk (DRIVER_NAME ": setup of pktcdvd device failed\n" ); +pr_err ("setup of pktcdvd device failed\n" );return ret; }
@@ -2972,7 +2972,7 @@ static int __init pkt_init(void) ret =register_blkdev (pktdev_major,DRIVER_NAME );if (ret <0 ) { -printk (DRIVER_NAME ": Unable to register block device\n" ); +pr_err ("unable to register block device\n" ); goto out2; }if (!pktdev_major)
@@ -2986,7 +2986,7 @@ static int __init pkt_init(void) ret =misc_register (&pkt_misc);if (ret) { -printk (DRIVER_NAME ": Unable to register misc device\n" ); +pr_err ("unable to register misc device\n" ); goto out_misc; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 3/8 pktcdvd: Consolidate DPRINTK and VPRINTK macros
In reply to Joe PerchesUse the more common pkt_dbg(level, fmt, ...) form.
These messages are emitted at KERN_NOTICE.
Always emit function name with pkt_dbg(2, ...) uses and remove the sometimes abbreviated embedded function name.
This form always verifies the format and arguments.
--- drivers/block/pktcdvd.c | 107 ++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 54 deletions(-)
drivers/block/pktcdvd.c +53 -54
@@ -71,17 +71,13 @@#define DRIVER_NAME "pktcdvd" -#if PACKET_DEBUG -#define DPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define DPRINTK(fmt, args...) -#endif - -#if PACKET_DEBUG >1 -#define VPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define VPRINTK(fmt, args...) -#endif +#define pkt_dbg (level, fmt, ...) \ +do { \ + if (level == 2 && PACKET_DEBUG >= 2) \ + pr_notice("%s: " fmt, __func__, ##__VA_ARGS__); \ + else if (level == 1 && PACKET_DEBUG >= 1) \ + pr_notice(fmt, ##__VA_ARGS__); \ +} while (0)#define MAX_SPEED 0xffff
@@ -519,7 +515,7 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) {BUG_ON (atomic_read (&pd->cdrw.pending_bios) <=0 );if (atomic_dec_and_test (&pd->cdrw.pending_bios)) { -VPRINTK (DRIVER_NAME ": queue empty\n" ); +pkt_dbg (2 ,"queue empty\n" );atomic_set (&pd->iosched.attention,1 );wake_up (&pd->wqueue); }
@@ -870,7 +866,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) need_write_seek =0 ;if (need_write_seek && reads_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": write, waiting\n" ); +pkt_dbg (2 ,"write, waiting\n" );break ; }pkt_flush_cache (pd);
@@ -879,7 +875,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) }else {if (!reads_queued && writes_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": read, waiting\n" ); +pkt_dbg (2 ,"read, waiting\n" );break ; } pd->iosched.writing =1 ;
@@ -986,8 +982,9 @@ static void pkt_end_io_read(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d\n" , bio, - (unsigned long long )pkt->sector, (unsigned long long )bio->bi_sector, err); +pkt_dbg (2 ,"bio=%p sec0=%llx sec=%llx err=%d\n" , + bio, (unsigned long long )pkt->sector, + (unsigned long long )bio->bi_sector, err);if (err)atomic_inc (&pkt->io_errors);
@@ -1005,7 +1002,7 @@ static void pkt_end_io_packet_write(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_packet_write: id=%d, err=%d\n" , pkt->id, err); +pkt_dbg (2 ,"id=%d, err=%d\n" , pkt->id, err); pd->stats.pkt_ended++;
@@ -1047,7 +1044,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)spin_unlock (&pkt->lock);if (pkt->cache_valid) { -VPRINTK ("pkt_gather_data: zone %llx cached\n" , +pkt_dbg (2 ,"zone %llx cached\n" , (unsigned long long )pkt->sector); goto out_account; }
@@ -1070,7 +1067,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) p = (f *CD_FRAMESIZE ) /PAGE_SIZE ; offset = (f *CD_FRAMESIZE ) %PAGE_SIZE ; -VPRINTK ("pkt_gather_data: Adding frame %d, page:%p offs:%d\n" , +pkt_dbg (2 ,"Adding frame %d, page:%p offs:%d\n" , f, pkt->pages[p], offset);if (!bio_add_page (bio, pkt->pages[p],CD_FRAMESIZE , offset))BUG ();
@@ -1082,7 +1079,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) } out_account: -VPRINTK ("pkt_gather_data: need %d frames for zone %llx\n" , +pkt_dbg (2 ,"need %d frames for zone %llx\n" , frames_read, (unsigned long long )pkt->sector); pd->stats.pkt_started++; pd->stats.secs_rg += frames_read * (CD_FRAMESIZE >>9 );
@@ -1183,7 +1180,8 @@ static inline void pkt_set_state(struct packet_data *pkt, enum packet_data_state"IDLE" ,"WAITING" ,"READ_WAIT" ,"WRITE_WAIT" ,"RECOVERY" ,"FINISHED" };enum packet_data_state old_state = pkt->state; -VPRINTK ("pkt %2d : s=%6llx %s -> %s\n" , pkt->id, (unsigned long long )pkt->sector, +pkt_dbg (2 ,"pkt %2d : s=%6llx %s -> %s\n" , + pkt->id, (unsigned long long )pkt->sector, state_name[old_state], state_name[state]);#endif pkt->state = state;
@@ -1202,12 +1200,12 @@ static int pkt_handle_queue(struct pktcdvd_device *pd)struct rb_node *n;int wakeup; -VPRINTK ("handle_queue\n" ); +pkt_dbg (2 ,"\n" );atomic_set (&pd->scan_queue,0 );if (list_empty (&pd->cdrw.pkt_free_list)) { -VPRINTK ("handle_queue: no pkt\n" ); +pkt_dbg (2 ,"no pkt\n" );return 0 ; }
@@ -1244,7 +1242,7 @@ try_next_bio: }spin_unlock (&pd->lock);if (!bio) { -VPRINTK ("handle_queue: no bio\n" ); +pkt_dbg (2 ,"no bio\n" );return 0 ; }
@@ -1260,10 +1258,10 @@ try_next_bio:* to this packet. */ spin_lock (&pd->lock); -VPRINTK ("pkt_handle_queue: looking for zone %llx\n" , (unsigned long long )zone); +pkt_dbg (2 ,"looking for zone %llx\n" , (unsigned long long )zone);while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio; -VPRINTK ("pkt_handle_queue: found zone=%llx\n" , +pkt_dbg (2 ,"found zone=%llx\n" , (unsigned long long )get_zone (bio->bi_sector, pd));if (get_zone (bio->bi_sector, pd) != zone)break ;
@@ -1316,7 +1314,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)if (!bio_add_page (pkt->w_bio, bvec[f].bv_page,CD_FRAMESIZE , bvec[f].bv_offset))BUG (); } -VPRINTK (DRIVER_NAME ": vcnt=%d\n" , pkt->w_bio->bi_vcnt); +pkt_dbg (2 ,"vcnt=%d\n" , pkt->w_bio->bi_vcnt);/* * Fill-in bvec with data from orig_bios.
@@ -1327,7 +1325,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)pkt_set_state (pkt,PACKET_WRITE_WAIT_STATE );spin_unlock (&pkt->lock); -VPRINTK ("pkt_start_write: Writing %d frames for zone %llx\n" , +pkt_dbg (2 ,"Writing %d frames for zone %llx\n" , pkt->write_size, (unsigned long long )pkt->sector);if (test_bit (PACKET_MERGE_SEGS , &pd->flags) || (pkt->write_size < pkt->frames)) {
@@ -1359,7 +1357,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data {int uptodate; -VPRINTK ("run_state_machine: pkt %d\n" , pkt->id); +pkt_dbg (2 ,"pkt %d\n" , pkt->id);for (;;) {switch (pkt->state) {
@@ -1398,7 +1396,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_dataif (pkt_start_recovery (pkt)) {pkt_start_write (pd, pkt); }else { -VPRINTK ("No recovery possible\n" ); +pkt_dbg (2 ,"No recovery possible\n" );pkt_set_state (pkt,PACKET_FINISHED_STATE ); }break ;
@@ -1419,7 +1417,7 @@ static void pkt_handle_packets(struct pktcdvd_device *pd) {struct packet_data *pkt, *next; -VPRINTK ("pkt_handle_packets\n" ); +pkt_dbg (2 ,"\n" );/* * Run state machine for active packets
@@ -1502,9 +1500,9 @@ static int kcdrwd(void *foobar)if (PACKET_DEBUG >1 ) {int states[PACKET_NUM_STATES ];pkt_count_states (pd, states); -VPRINTK ("kcdrwd: i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , - states[0 ], states[1 ], states[2 ], states[3 ], - states[4 ], states[5 ]); +pkt_dbg (2 ,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , + states[0 ], states[1 ], states[2 ], + states[3 ], states[4 ], states[5 ]); } min_sleep_time =MAX_SCHEDULE_TIMEOUT ;
@@ -1513,9 +1511,9 @@ static int kcdrwd(void *foobar) min_sleep_time = pkt->sleep_time; } -VPRINTK ("kcdrwd: sleeping\n" ); +pkt_dbg (2 ,"sleeping\n" ); residue =schedule_timeout (min_sleep_time); -VPRINTK ("kcdrwd: wake up\n" ); +pkt_dbg (2 ,"wake up\n" );/* make swsusp happy with our thread */ try_to_freeze ();
@@ -1812,7 +1810,8 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)case 0x12 :/* DVD-RAM */ return 1 ;default : -VPRINTK (DRIVER_NAME ": Wrong disc profile (%x)\n" , pd->mmc3_profile); +pkt_dbg (2 ,"Wrong disc profile (%x)\n" , + pd->mmc3_profile);return 0 ; }
@@ -2127,7 +2126,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd)struct request_sense sense;int ret; -VPRINTK (DRIVER_NAME ": Performing OPC\n" ); +pkt_dbg (2 ,"Performing OPC\n" );init_cdrom_command (&cgc,NULL ,0 ,CGC_DATA_NONE ); cgc.sense = &sense;
@@ -2145,12 +2144,12 @@ static int pkt_open_write(struct pktcdvd_device *pd)unsigned int write_speed, media_write_speed, read_speed;if ((ret =pkt_probe_settings (pd))) { -VPRINTK (DRIVER_NAME ": %s failed probe\n" , pd->name); +pkt_dbg (2 ,"%s failed probe\n" , pd->name);return ret; }if ((ret =pkt_set_write_settings (pd))) { -DPRINTK (DRIVER_NAME ": %s failed saving write settings\n" , pd->name); +pkt_dbg (1 ,"%s failed saving write settings\n" , pd->name);return -EIO ; }
@@ -2162,26 +2161,26 @@ static int pkt_open_write(struct pktcdvd_device *pd)case 0x13 :/* DVD-RW */ case 0x1a :/* DVD+RW */ case 0x12 :/* DVD-RAM */ -DPRINTK (DRIVER_NAME ": write speed %ukB/s\n" , write_speed); +pkt_dbg (1 ,"write speed %ukB/s\n" , write_speed);break ;default :if ((ret =pkt_media_speed (pd, &media_write_speed))) media_write_speed =16 ; write_speed =min (write_speed, media_write_speed *177 ); -DPRINTK (DRIVER_NAME ": write speed %ux\n" , write_speed /176 ); +pkt_dbg (1 ,"write speed %ux\n" , write_speed /176 );break ; } read_speed = write_speed;if ((ret =pkt_set_speed (pd, write_speed, read_speed))) { -DPRINTK (DRIVER_NAME ": %s couldn't set write speed\n" , pd->name); +pkt_dbg (1 ,"%s couldn't set write speed\n" , pd->name);return -EIO ; } pd->write_speed = write_speed; pd->read_speed = read_speed;if ((ret =pkt_perform_opc (pd))) { -DPRINTK (DRIVER_NAME ": %s Optimum Power Calibration failed\n" , pd->name); +pkt_dbg (1 ,"%s Optimum Power Calibration failed\n" , pd->name); }return 0 ;
@@ -2258,7 +2257,7 @@ out:static void pkt_release_dev (struct pktcdvd_device *pd,int flush) {if (flush &&pkt_flush_cache (pd)) -DPRINTK (DRIVER_NAME ": %s not flushing cache\n" , pd->name); +pkt_dbg (1 ,"%s not flushing cache\n" , pd->name);pkt_lock_door (pd,0 );
@@ -2280,7 +2279,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode)struct pktcdvd_device *pd =NULL ;int ret; -VPRINTK (DRIVER_NAME ": entering open\n" ); +pkt_dbg (2 ,"entering\n" );mutex_lock (&pktcdvd_mutex);mutex_lock (&ctl_mutex);
@@ -2316,7 +2315,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode) out_dec: pd->refcnt--; out: -VPRINTK (DRIVER_NAME ": failed open (%d)\n" , ret); +pkt_dbg (2 ,"failed (%d)\n" , ret);mutex_unlock (&ctl_mutex);mutex_unlock (&pktcdvd_mutex);return ret;
@@ -2398,7 +2397,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); zone =get_zone (bio->bi_sector, pd); -VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , +pkt_dbg (2 ,"start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2653,7 +2652,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev) }proc_create_data (pd->name,0 , pkt_proc, &pkt_proc_fops, pd); -DPRINTK (DRIVER_NAME ": writer %s mapped to %s\n" , pd->name,bdevname (bdev, b)); +pkt_dbg (1 ,"writer %s mapped to %s\n" , pd->name,bdevname (bdev, b));return 0 ; out_mem:
@@ -2668,8 +2667,8 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,struct pktcdvd_device *pd = bdev->bd_disk->private_data;int ret; -VPRINTK ("pkt_ioctl: cmd %x, dev %d:%d\n" , cmd, -MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev)); +pkt_dbg (2 ,"cmd %x, dev %d:%d\n" , + cmd,MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev));mutex_lock (&pktcdvd_mutex);switch (cmd) {
@@ -2693,7 +2692,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,break ;default : -VPRINTK (DRIVER_NAME ": Unknown ioctl for %s (%x)\n" , pd->name, cmd); +pkt_dbg (2 ,"Unknown ioctl for %s (%x)\n" , pd->name, cmd); ret = -ENOTTY ; }mutex_unlock (&pktcdvd_mutex);
@@ -2842,7 +2841,7 @@ static int pkt_remove_dev(dev_t pkt_dev)break ; }if (idx ==MAX_WRITERS ) { -DPRINTK (DRIVER_NAME ": dev not setup\n" ); +pkt_dbg (1 ,"dev not setup\n" ); ret = -ENXIO ; goto out; }
@@ -2862,7 +2861,7 @@ static int pkt_remove_dev(dev_t pkt_dev)blkdev_put (pd->bdev,FMODE_READ |FMODE_NDELAY );remove_proc_entry (pd->name, pkt_proc); -DPRINTK (DRIVER_NAME ": writer %s unmapped\n" , pd->name); +pkt_dbg (1 ,"writer %s unmapped\n" , pd->name);del_gendisk (pd->disk);blk_cleanup_queue (pd->disk->queue);
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 4/8 pktcdvd: Add struct pktcdvd_device * to pkt_dbg
In reply to Joe PerchesAdd pd->name to output for these debugging messages.
Remove normally compiled out pkt_dbg(2, ...) function entry tracing equivalents as it's better done via the function tracer.
--- drivers/block/pktcdvd.c | 90 +++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 48 deletions(-)
drivers/block/pktcdvd.c +42 -48
@@ -71,12 +71,13 @@#define DRIVER_NAME "pktcdvd" -#define pkt_dbg (level, fmt, ...) \ -do { \ - if (level == 2 && PACKET_DEBUG >= 2) \ - pr_notice("%s: " fmt, __func__, ##__VA_ARGS__); \ - else if (level == 1 && PACKET_DEBUG >= 1) \ - pr_notice(fmt, ##__VA_ARGS__); \ +#define pkt_dbg (level, pd, fmt, ...) \ +do { \ + if (level == 2 && PACKET_DEBUG >= 2) \ + pr_notice("%s: %s():" fmt, \ + pd->name, __func__, ##__VA_ARGS__); \ + else if (level == 1 && PACKET_DEBUG >= 1) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__); \ } while (0)#define MAX_SPEED 0xffff
@@ -515,7 +516,7 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) {BUG_ON (atomic_read (&pd->cdrw.pending_bios) <=0 );if (atomic_dec_and_test (&pd->cdrw.pending_bios)) { -pkt_dbg (2 ,"queue empty\n" ); +pkt_dbg (2 , pd,"queue empty\n" );atomic_set (&pd->iosched.attention,1 );wake_up (&pd->wqueue); }
@@ -866,7 +867,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) need_write_seek =0 ;if (need_write_seek && reads_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -pkt_dbg (2 ,"write, waiting\n" ); +pkt_dbg (2 , pd,"write, waiting\n" );break ; }pkt_flush_cache (pd);
@@ -875,7 +876,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) }else {if (!reads_queued && writes_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -pkt_dbg (2 ,"read, waiting\n" ); +pkt_dbg (2 , pd,"read, waiting\n" );break ; } pd->iosched.writing =1 ;
@@ -982,7 +983,7 @@ static void pkt_end_io_read(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -pkt_dbg (2 ,"bio=%p sec0=%llx sec=%llx err=%d\n" , +pkt_dbg (2 , pd,"bio=%p sec0=%llx sec=%llx err=%d\n" , bio, (unsigned long long )pkt->sector, (unsigned long long )bio->bi_sector, err);
@@ -1002,7 +1003,7 @@ static void pkt_end_io_packet_write(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -pkt_dbg (2 ,"id=%d, err=%d\n" , pkt->id, err); +pkt_dbg (2 , pd,"id=%d, err=%d\n" , pkt->id, err); pd->stats.pkt_ended++;
@@ -1044,7 +1045,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)spin_unlock (&pkt->lock);if (pkt->cache_valid) { -pkt_dbg (2 ,"zone %llx cached\n" , +pkt_dbg (2 , pd,"zone %llx cached\n" , (unsigned long long )pkt->sector); goto out_account; }
@@ -1067,7 +1068,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) p = (f *CD_FRAMESIZE ) /PAGE_SIZE ; offset = (f *CD_FRAMESIZE ) %PAGE_SIZE ; -pkt_dbg (2 ,"Adding frame %d, page:%p offs:%d\n" , +pkt_dbg (2 , pd,"Adding frame %d, page:%p offs:%d\n" , f, pkt->pages[p], offset);if (!bio_add_page (bio, pkt->pages[p],CD_FRAMESIZE , offset))BUG ();
@@ -1079,7 +1080,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) } out_account: -pkt_dbg (2 ,"need %d frames for zone %llx\n" , +pkt_dbg (2 , pd,"need %d frames for zone %llx\n" , frames_read, (unsigned long long )pkt->sector); pd->stats.pkt_started++; pd->stats.secs_rg += frames_read * (CD_FRAMESIZE >>9 );
@@ -1180,7 +1181,7 @@ static inline void pkt_set_state(struct packet_data *pkt, enum packet_data_state"IDLE" ,"WAITING" ,"READ_WAIT" ,"WRITE_WAIT" ,"RECOVERY" ,"FINISHED" };enum packet_data_state old_state = pkt->state; -pkt_dbg (2 ,"pkt %2d : s=%6llx %s -> %s\n" , +pkt_dbg (2 , pd,"pkt %2d : s=%6llx %s -> %s\n" , pkt->id, (unsigned long long )pkt->sector, state_name[old_state], state_name[state]);#endif
@@ -1200,12 +1201,10 @@ static int pkt_handle_queue(struct pktcdvd_device *pd)struct rb_node *n;int wakeup; -pkt_dbg (2 ,"\n" ); -atomic_set (&pd->scan_queue,0 );if (list_empty (&pd->cdrw.pkt_free_list)) { -pkt_dbg (2 ,"no pkt\n" ); +pkt_dbg (2 , pd,"no pkt\n" );return 0 ; }
@@ -1242,7 +1241,7 @@ try_next_bio: }spin_unlock (&pd->lock);if (!bio) { -pkt_dbg (2 ,"no bio\n" ); +pkt_dbg (2 , pd,"no bio\n" );return 0 ; }
@@ -1258,10 +1257,10 @@ try_next_bio:* to this packet. */ spin_lock (&pd->lock); -pkt_dbg (2 ,"looking for zone %llx\n" , (unsigned long long )zone); +pkt_dbg (2 , pd,"looking for zone %llx\n" , (unsigned long long )zone);while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio; -pkt_dbg (2 ,"found zone=%llx\n" , +pkt_dbg (2 , pd,"found zone=%llx\n" , (unsigned long long )get_zone (bio->bi_sector, pd));if (get_zone (bio->bi_sector, pd) != zone)break ;
@@ -1314,7 +1313,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)if (!bio_add_page (pkt->w_bio, bvec[f].bv_page,CD_FRAMESIZE , bvec[f].bv_offset))BUG (); } -pkt_dbg (2 ,"vcnt=%d\n" , pkt->w_bio->bi_vcnt); +pkt_dbg (2 , pd,"vcnt=%d\n" , pkt->w_bio->bi_vcnt);/* * Fill-in bvec with data from orig_bios.
@@ -1325,7 +1324,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)pkt_set_state (pkt,PACKET_WRITE_WAIT_STATE );spin_unlock (&pkt->lock); -pkt_dbg (2 ,"Writing %d frames for zone %llx\n" , +pkt_dbg (2 , pd,"Writing %d frames for zone %llx\n" , pkt->write_size, (unsigned long long )pkt->sector);if (test_bit (PACKET_MERGE_SEGS , &pd->flags) || (pkt->write_size < pkt->frames)) {
@@ -1357,7 +1356,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data {int uptodate; -pkt_dbg (2 ,"pkt %d\n" , pkt->id); +pkt_dbg (2 , pd,"pkt %d\n" , pkt->id);for (;;) {switch (pkt->state) {
@@ -1396,7 +1395,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_dataif (pkt_start_recovery (pkt)) {pkt_start_write (pd, pkt); }else { -pkt_dbg (2 ,"No recovery possible\n" ); +pkt_dbg (2 , pd,"No recovery possible\n" );pkt_set_state (pkt,PACKET_FINISHED_STATE ); }break ;
@@ -1417,8 +1416,6 @@ static void pkt_handle_packets(struct pktcdvd_device *pd) {struct packet_data *pkt, *next; -pkt_dbg (2 ,"\n" ); -/* * Run state machine for active packets */
@@ -1500,7 +1497,7 @@ static int kcdrwd(void *foobar)if (PACKET_DEBUG >1 ) {int states[PACKET_NUM_STATES ];pkt_count_states (pd, states); -pkt_dbg (2 ,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , +pkt_dbg (2 , pd,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , states[0 ], states[1 ], states[2 ], states[3 ], states[4 ], states[5 ]); }
@@ -1511,9 +1508,9 @@ static int kcdrwd(void *foobar) min_sleep_time = pkt->sleep_time; } -pkt_dbg (2 ,"sleeping\n" ); +pkt_dbg (2 , pd,"sleeping\n" ); residue =schedule_timeout (min_sleep_time); -pkt_dbg (2 ,"wake up\n" ); +pkt_dbg (2 , pd,"wake up\n" );/* make swsusp happy with our thread */ try_to_freeze ();
@@ -1810,7 +1807,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)case 0x12 :/* DVD-RAM */ return 1 ;default : -pkt_dbg (2 ,"Wrong disc profile (%x)\n" , +pkt_dbg (2 , pd,"Wrong disc profile (%x)\n" , pd->mmc3_profile);return 0 ; }
@@ -2126,7 +2123,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd)struct request_sense sense;int ret; -pkt_dbg (2 ,"Performing OPC\n" ); +pkt_dbg (2 , pd,"Performing OPC\n" );init_cdrom_command (&cgc,NULL ,0 ,CGC_DATA_NONE ); cgc.sense = &sense;
@@ -2144,12 +2141,12 @@ static int pkt_open_write(struct pktcdvd_device *pd)unsigned int write_speed, media_write_speed, read_speed;if ((ret =pkt_probe_settings (pd))) { -pkt_dbg (2 ,"%s failed probe\n" , pd->name); +pkt_dbg (2 , pd,"failed probe\n" );return ret; }if ((ret =pkt_set_write_settings (pd))) { -pkt_dbg (1 ,"%s failed saving write settings\n" , pd->name); +pkt_dbg (1 , pd,"failed saving write settings\n" );return -EIO ; }
@@ -2161,26 +2158,26 @@ static int pkt_open_write(struct pktcdvd_device *pd)case 0x13 :/* DVD-RW */ case 0x1a :/* DVD+RW */ case 0x12 :/* DVD-RAM */ -pkt_dbg (1 ,"write speed %ukB/s\n" , write_speed); +pkt_dbg (1 , pd,"write speed %ukB/s\n" , write_speed);break ;default :if ((ret =pkt_media_speed (pd, &media_write_speed))) media_write_speed =16 ; write_speed =min (write_speed, media_write_speed *177 ); -pkt_dbg (1 ,"write speed %ux\n" , write_speed /176 ); +pkt_dbg (1 , pd,"write speed %ux\n" , write_speed /176 );break ; } read_speed = write_speed;if ((ret =pkt_set_speed (pd, write_speed, read_speed))) { -pkt_dbg (1 ,"%s couldn't set write speed\n" , pd->name); +pkt_dbg (1 , pd,"couldn't set write speed\n" );return -EIO ; } pd->write_speed = write_speed; pd->read_speed = read_speed;if ((ret =pkt_perform_opc (pd))) { -pkt_dbg (1 ,"%s Optimum Power Calibration failed\n" , pd->name); +pkt_dbg (1 , pd,"Optimum Power Calibration failed\n" ); }return 0 ;
@@ -2257,7 +2254,7 @@ out:static void pkt_release_dev (struct pktcdvd_device *pd,int flush) {if (flush &&pkt_flush_cache (pd)) -pkt_dbg (1 ,"%s not flushing cache\n" , pd->name); +pkt_dbg (1 , pd,"not flushing cache\n" );pkt_lock_door (pd,0 );
@@ -2279,8 +2276,6 @@ static int pkt_open(struct block_device *bdev, fmode_t mode)struct pktcdvd_device *pd =NULL ;int ret; -pkt_dbg (2 ,"entering\n" ); -mutex_lock (&pktcdvd_mutex);mutex_lock (&ctl_mutex); pd =pkt_find_dev_from_minor (MINOR (bdev->bd_dev));
@@ -2315,7 +2310,6 @@ static int pkt_open(struct block_device *bdev, fmode_t mode) out_dec: pd->refcnt--; out: -pkt_dbg (2 ,"failed (%d)\n" , ret);mutex_unlock (&ctl_mutex);mutex_unlock (&pktcdvd_mutex);return ret;
@@ -2397,7 +2391,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); zone =get_zone (bio->bi_sector, pd); -pkt_dbg (2 ,"start = %6llx stop = %6llx\n" , +pkt_dbg (2 , pd,"start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2652,7 +2646,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev) }proc_create_data (pd->name,0 , pkt_proc, &pkt_proc_fops, pd); -pkt_dbg (1 ,"writer %s mapped to %s\n" , pd->name,bdevname (bdev, b)); +pkt_dbg (1 , pd,"writer mapped to %s\n" ,bdevname (bdev, b));return 0 ; out_mem:
@@ -2667,7 +2661,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,struct pktcdvd_device *pd = bdev->bd_disk->private_data;int ret; -pkt_dbg (2 ,"cmd %x, dev %d:%d\n" , +pkt_dbg (2 , pd,"cmd %x, dev %d:%d\n" , cmd,MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev));mutex_lock (&pktcdvd_mutex);
@@ -2692,7 +2686,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,break ;default : -pkt_dbg (2 ,"Unknown ioctl for %s (%x)\n" , pd->name, cmd); +pkt_dbg (2 , pd,"Unknown ioctl (%x)\n" , cmd); ret = -ENOTTY ; }mutex_unlock (&pktcdvd_mutex);
@@ -2841,7 +2835,7 @@ static int pkt_remove_dev(dev_t pkt_dev)break ; }if (idx ==MAX_WRITERS ) { -pkt_dbg (1 ,"dev not setup\n" ); +pkt_dbg (1 , pd,"dev not setup\n" ); ret = -ENXIO ; goto out; }
@@ -2861,7 +2855,7 @@ static int pkt_remove_dev(dev_t pkt_dev)blkdev_put (pd->bdev,FMODE_READ |FMODE_NDELAY );remove_proc_entry (pd->name, pkt_proc); -pkt_dbg (1 ,"writer %s unmapped\n" , pd->name); +pkt_dbg (1 , pd,"writer unmapped\n" );del_gendisk (pd->disk);blk_cleanup_queue (pd->disk->queue);
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 5/8 pktcdvd: Add struct pktcdvd_device.name to pr_err logging where possible
In reply to Joe PerchesAdd a new pkt_err macro to prefix the name to the logging output. Convert pr_err where there is a non-null struct pktcdvd_device.
---
V3: Moved pkt_err location to proper place
drivers/block/pktcdvd.c | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-)
drivers/block/pktcdvd.c +24 -20
@@ -71,6 +71,9 @@#define DRIVER_NAME "pktcdvd" +#define pkt_err (pd, fmt, ...) \ + pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_dbg (level, pd, fmt, ...) \ do { \ if (level == 2 && PACKET_DEBUG >= 2) \
@@ -938,7 +941,7 @@ static int pkt_set_segment_merging(struct pktcdvd_device *pd, struct request_queset_bit (PACKET_MERGE_SEGS , &pd->flags);return 0 ; }else { -pr_err ("cdrom max_phys_segments too small\n" ); +pkt_err (pd,"cdrom max_phys_segments too small\n" );return -EIO ; } }
@@ -1745,7 +1748,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)/* * paranoia */ -pr_err ("write mode wrong %d\n" , wp->data_block_type); +pkt_err (pd,"write mode wrong %d\n" , wp->data_block_type);return 1 ; } wp->packet_size =cpu_to_be32 (pd->settings.size >>2 );
@@ -1789,7 +1792,7 @@ static int pkt_writable_track(struct pktcdvd_device *pd, track_information *ti)if (ti->rt ==1 && ti->blank ==0 )return 1 ; -pr_err ("bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet); +pkt_err (pd,"bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet);return 0 ; }
@@ -1822,7 +1825,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->disc_type !=0x20 && di->disc_type !=0 ) { -pr_err ("wrong disc type (%x)\n" , di->disc_type); +pkt_err (pd,"wrong disc type (%x)\n" , di->disc_type);return 0 ; }
@@ -1832,7 +1835,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->border_status ==PACKET_SESSION_RESERVED ) { -pr_err ("can't write to last track (reserved)\n" ); +pkt_err (pd,"can't write to last track (reserved)\n" );return 0 ; }
@@ -1857,7 +1860,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)memset (&ti,0 ,sizeof (track_information));if ((ret =pkt_get_disc_info (pd, &di))) { -pr_err ("failed get_disc\n" ); +pkt_err (pd,"failed get_disc\n" );return ret; }
@@ -1868,12 +1871,12 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) track =1 ;/* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret =pkt_get_track_info (pd, track,1 , &ti))) { -pr_err ("failed get_track\n" ); +pkt_err (pd,"failed get_track\n" );return ret; }if (!pkt_writable_track (pd, &ti)) { -pr_err ("can't write to this track\n" ); +pkt_err (pd,"can't write to this track\n" );return -EROFS ; }
@@ -1887,7 +1890,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) { -pr_err ("packet size is too big\n" ); +pkt_err (pd,"packet size is too big\n" );return -EROFS ; } pd->settings.fp = ti.fp;
@@ -1929,7 +1932,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) pd->settings.block_mode =PACKET_BLOCK_MODE2 ;break ;default : -pr_err ("unknown data mode\n" ); +pkt_err (pd,"unknown data mode\n" );return -EROFS ; }return 0 ;
@@ -1963,7 +1966,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, cgc.buflen = cgc.cmd[8 ] =2 + ((buf[0 ] <<8 ) | (buf[1 ] &0xff )); ret =pkt_mode_select (pd, &cgc);if (ret) { -pr_err ("write caching control failed\n" ); +pkt_err (pd,"write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set)pr_notice ("enabled write caching on %s\n" , pd->name);
@@ -2202,7 +2205,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) goto out;if ((ret =pkt_get_last_written (pd, &lba))) { -pr_err ("pkt_get_last_written failed\n" ); +pkt_err (pd,"pkt_get_last_written failed\n" ); goto out_putdev; }
@@ -2232,7 +2235,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write)if (write) {if (!pkt_grow_pktlist (pd,CONFIG_CDROM_PKTCDVD_BUFFERS )) { -pr_err ("not enough memory for buffers\n" ); +pkt_err (pd,"not enough memory for buffers\n" ); ret = -ENOMEM ; goto out_putdev; }
@@ -2355,8 +2358,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) pd = q->queuedata;if (!pd) { -pr_err ("%s incorrect request queue\n" , -bdevname (bio->bi_bdev, b)); +pkt_err (pd,"%s incorrect request queue\n" , +bdevname (bio->bi_bdev, b)); goto end_io; }
@@ -2384,7 +2387,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!bio->bi_size || (bio->bi_size %CD_FRAMESIZE )) { -pr_err ("wrong bio size\n" ); +pkt_err (pd,"wrong bio size\n" ); goto end_io; }
@@ -2605,7 +2608,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)struct block_device *bdev;if (pd->pkt_dev == dev) { -pr_err ("recursive setup not allowed\n" ); +pkt_err (pd,"recursive setup not allowed\n" );return -EBUSY ; }for (i =0 ; i <MAX_WRITERS ; i++) {
@@ -2613,11 +2616,12 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)if (!pd2)continue ;if (pd2->bdev->bd_dev == dev) { -pr_err ("%s already setup\n" ,bdevname (pd2->bdev, b)); +pkt_err (pd,"%s already setup\n" , +bdevname (pd2->bdev, b));return -EBUSY ; }if (pd2->pkt_dev == dev) { -pr_err ("can't chain pktcdvd devices\n" ); +pkt_err (pd,"can't chain pktcdvd devices\n" );return -EBUSY ; } }
@@ -2640,7 +2644,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)atomic_set (&pd->cdrw.pending_bios,0 ); pd->cdrw.thread =kthread_run (kcdrwd, pd,"%s" , pd->name);if (IS_ERR (pd->cdrw.thread)) { -pr_err ("can't start kernel thread\n" ); +pkt_err (pd,"can't start kernel thread\n" ); ret = -ENOMEM ; goto out_mem; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 6/8 pktcdvd: Convert pr_notice to pkt_notice
In reply to Joe PerchesAdd a new pkt_notice macro to prefix the name to the logging output.
--- drivers/block/pktcdvd.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
drivers/block/pktcdvd.c +12 -10
@@ -73,6 +73,8 @@#define pkt_err (pd, fmt, ...) \ pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_notice (pd, fmt, ...) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__)#define pkt_dbg (level, pd, fmt, ...) \ do { \
@@ -1820,7 +1822,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)* but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type ==0xff ) { -pr_notice ("unknown disc - no track?\n" ); +pkt_notice (pd,"unknown disc - no track?\n" );return 0 ; }
@@ -1830,7 +1832,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->erasable ==0 ) { -pr_notice ("disc not erasable\n" ); +pkt_notice (pd,"disc not erasable\n" );return 0 ; }
@@ -1886,7 +1888,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)*/ pd->settings.size =be32_to_cpu (ti.fixed_packet_size) <<2 ;if (pd->settings.size ==0 ) { -pr_notice ("detected zero packet size!\n" ); +pkt_notice (pd,"detected zero packet size!\n" );return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) {
@@ -1969,7 +1971,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd,pkt_err (pd,"write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set) -pr_notice ("enabled write caching on %s\n" , pd->name); +pkt_notice (pd,"enabled write caching\n" );return ret; }
@@ -2084,11 +2086,11 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, }if (!(buf[6 ] &0x40 )) { -pr_notice ("disc type is not CD-RW\n" ); +pkt_notice (pd,"disc type is not CD-RW\n" );return 1 ; }if (!(buf[6 ] &0x4 )) { -pr_notice ("A1 values on media are not valid, maybe not CDRW?\n" ); +pkt_notice (pd,"A1 values on media are not valid, maybe not CDRW?\n" );return 1 ; }
@@ -2108,14 +2110,14 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, *speed = us_clv_to_speed[sp];break ;default : -pr_notice ("unknown disc sub-type %d\n" , st); +pkt_notice (pd,"unknown disc sub-type %d\n" , st);return 1 ; }if (*speed) {pr_info ("maximum media speed: %d\n" , *speed);return 0 ; }else { -pr_notice ("unknown speed %d for sub-type %d\n" , sp, st); +pkt_notice (pd,"unknown speed %d for sub-type %d\n" , sp, st);return 1 ; } }
@@ -2381,8 +2383,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!test_bit (PACKET_WRITABLE , &pd->flags)) { -pr_notice ("WRITE for ro device %s (%llu)\n" , - pd->name, (unsigned long long )bio->bi_sector); +pkt_notice (pd,"WRITE for ro device (%llu)\n" , + (unsigned long long )bio->bi_sector); goto end_io; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 7/8 pktcdvd: Convert pr_info to pkt_info
In reply to Joe PerchesAdd a new pkt_info macro to prefix the name to the logging output.
--- drivers/block/pktcdvd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/block/pktcdvd.c +8 -6
@@ -75,6 +75,8 @@ pr_err("%s: " fmt, pd->name, ##__VA_ARGS__)#define pkt_notice (pd, fmt, ...) \ pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_info (pd, fmt, ...) \ + pr_info("%s: " fmt, pd->name, ##__VA_ARGS__)#define pkt_dbg (level, pd, fmt, ...) \ do { \
@@ -1563,10 +1565,10 @@ work_to_do:static void pkt_print_settings (struct pktcdvd_device *pd) { -pr_info ("%s packets, %u blocks, Mode-%c disc\n" , - pd->settings.fp ?"Fixed" :"Variable" , - pd->settings.size >>2 , - pd->settings.block_mode ==8 ?'1' :'2' ); +pkt_info (pd,"%s packets, %u blocks, Mode-%c disc\n" , + pd->settings.fp ?"Fixed" :"Variable" , + pd->settings.size >>2 , + pd->settings.block_mode ==8 ?'1' :'2' ); }static int pkt_mode_sense (struct pktcdvd_device *pd,struct packet_command *cgc,int page_code,int page_control)
@@ -2114,7 +2116,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd,return 1 ; }if (*speed) { -pr_info ("maximum media speed: %d\n" , *speed); +pkt_info (pd,"maximum media speed: %d\n" , *speed);return 0 ; }else {pkt_notice (pd,"unknown speed %d for sub-type %d\n" , sp, st);
@@ -2241,7 +2243,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) ret = -ENOMEM ; goto out_putdev; } -pr_info ("%lukB available on disc\n" , lba <<1 ); +pkt_info (pd,"%lukB available on disc\n" , lba <<1 ); }return 0 ;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v3 8/8 pktcdvd: Add struct pktcdvd_device * to pkt_dump_sense()
In reply to Joe PerchesAllow the device name to be emitted with pkt_err when logging the sense data.
--- drivers/block/pktcdvd.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-)
drivers/block/pktcdvd.c +16 -15
@@ -755,17 +755,18 @@ static const char *sense_key_string(__u8 index)* A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ -static void pkt_dump_sense (struct packet_command *cgc) +static void pkt_dump_sense (struct pktcdvd_device *pd, +struct packet_command *cgc) {struct request_sense *sense = cgc->sense;if (sense) -pr_err ("%*ph - sense %02x.%02x.%02x (%s)\n" , -CDROM_PACKET_SIZE , cgc->cmd, - sense->sense_key, sense->asc, sense->ascq, -sense_key_string (sense->sense_key)); +pkt_err (pd,"%*ph - sense %02x.%02x.%02x (%s)\n" , +CDROM_PACKET_SIZE , cgc->cmd, + sense->sense_key, sense->asc, sense->ascq, +sense_key_string (sense->sense_key));else -pr_err ("%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); +pkt_err (pd,"%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); }/*
@@ -808,7 +809,7 @@ static noinline_for_stack int pkt_set_speed(struct pktcdvd_device *pd, cgc.cmd[5 ] = write_speed &0xff ;if ((ret =pkt_generic_packet (pd, &cgc))) -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1702,7 +1703,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)init_cdrom_command (&cgc, buffer,sizeof (*wp),CGC_DATA_READ ); cgc.sense = &sense;if ((ret =pkt_mode_sense (pd, &cgc,GPMODE_WRITE_PARMS_PAGE ,0 ))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1717,7 +1718,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)init_cdrom_command (&cgc, buffer, size,CGC_DATA_READ ); cgc.sense = &sense;if ((ret =pkt_mode_sense (pd, &cgc,GPMODE_WRITE_PARMS_PAGE ,0 ))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1759,7 +1760,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd) cgc.buflen = cgc.cmd[8 ] = size;if ((ret =pkt_mode_select (pd, &cgc))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1971,7 +1972,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, ret =pkt_mode_select (pd, &cgc);if (ret) {pkt_err (pd,"write caching control failed\n" ); -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc); }else if (!ret && set)pkt_notice (pd,"enabled write caching\n" );return ret;
@@ -2009,7 +2010,7 @@ static noinline_for_stack int pkt_get_max_speed(struct pktcdvd_device *pd,sizeof (struct mode_page_header ); ret =pkt_mode_sense (pd, &cgc,GPMODE_CAPABILITIES_PAGE ,0 );if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; } }
@@ -2068,7 +2069,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, cgc.cmd[8 ] =2 ; ret =pkt_generic_packet (pd, &cgc);if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; } size = ((unsigned int ) buf[0 ]<<8 ) + buf[1 ] +2 ;
@@ -2083,7 +2084,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, cgc.cmd[8 ] = size; ret =pkt_generic_packet (pd, &cgc);if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -2138,7 +2139,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd) cgc.cmd[0 ] =GPCMD_SEND_OPC ; cgc.cmd[1 ] =1 ;if ((ret =pkt_generic_packet (pd, &cgc))) -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Re: [PATCH V3 0/8] pktcdvd: More neatenings
In reply to Joe PerchesQuoted 21 lines · Joe Perches
Thanks for the oversight reviews guys.
V3:
Fixed patch 2 thinko insense_stringvia Dan Carpenter
Movedpr_errin patch 5 to avoid moving again in patch 6 via Andy SchevchenkoV2:
Removed the compile error the patch 1 and compile fix in 2 Added Andy's suggestion in patch 2.
Added conversions to printpd->namein logging macros.Joe Perches (8):
pktcdvd: Convert ZONE macro to static functionget_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macros
pktcdvd: Add structpktcdvd_device* topkt_dbg
pktcdvd: Add struct pktcdvd_device.name topr_errlogging where possible
pktcdvd: Convertpr_noticetopkt_notice
pktcdvd: Convertpr_infotopkt_info
pktcdvd: Add structpktcdvd_device* topkt_dump_sense()
Quoted 2 lines
drivers/block/pktcdvd.c | 278 ++++++++++++++++++++++++------------------------ 1 file changed, 140 insertions(+), 138 deletions(-)
Ping?
Jiri, are you doing to do anything with this?
Re: [PATCH V3 0/8] pktcdvd: More neatenings
Quoted 19 lines · Joe Perches
Quoted 19 lines
V3:
Fixed patch 2 thinko insense_stringvia Dan Carpenter
Movedpr_errin patch 5 to avoid moving again in patch 6 via Andy SchevchenkoV2:
Removed the compile error the patch 1 and compile fix in 2 Added Andy's suggestion in patch 2.
Added conversions to printpd->namein logging macros.Joe Perches (8):
pktcdvd: Convert ZONE macro to static functionget_zone()
pktcdvd: Convert printk to pr_<level>
pktcdvd: Consolidate DPRINTK and VPRINTK macros
pktcdvd: Add structpktcdvd_device* topkt_dbg
pktcdvd: Add struct pktcdvd_device.name topr_errlogging where possible
pktcdvd: Convertpr_noticetopkt_notice
pktcdvd: Convertpr_infotopkt_info
pktcdvd: Add structpktcdvd_device* topkt_dump_sense()
Quoted 6 lines
Quoted 2 lines
drivers/block/pktcdvd.c | 278 ++++++++++++++++++++++++------------------------ 1 file changed, 140 insertions(+), 138 deletions(-)Ping?
Jiri, are you doing to do anything with this?
This is now in my linux-block.git, I just haven't sent pull request to Jens yet. The patchset is scheduled for 3.12.
Thanks,
Signature · 2 lines
Jiri Kosina SUSE Labs
PATCH v2 3/8 pktcdvd: Consolidate DPRINTK and VPRINTK macros
In reply to Joe PerchesUse the more common pkt_dbg(level, fmt, ...) form.
These messages are emitted at KERN_NOTICE.
Always emit function name with pkt_dbg(2, ...) uses and remove the sometimes abbreviated embedded function name.
This form always verifies the format and arguments.
--- drivers/block/pktcdvd.c | 107 ++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 54 deletions(-)
drivers/block/pktcdvd.c +53 -54
@@ -71,17 +71,13 @@#define DRIVER_NAME "pktcdvd" -#if PACKET_DEBUG -#define DPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define DPRINTK(fmt, args...) -#endif - -#if PACKET_DEBUG >1 -#define VPRINTK(fmt, args...) printk(KERN_NOTICE fmt, ##args) -#else -#define VPRINTK(fmt, args...) -#endif +#define pkt_dbg (level, fmt, ...) \ +do { \ + if (level == 2 && PACKET_DEBUG >= 2) \ + pr_notice("%s: " fmt, __func__, ##__VA_ARGS__); \ + else if (level == 1 && PACKET_DEBUG >= 1) \ + pr_notice(fmt, ##__VA_ARGS__); \ +} while (0)#define MAX_SPEED 0xffff
@@ -519,7 +515,7 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) {BUG_ON (atomic_read (&pd->cdrw.pending_bios) <=0 );if (atomic_dec_and_test (&pd->cdrw.pending_bios)) { -VPRINTK (DRIVER_NAME ": queue empty\n" ); +pkt_dbg (2 ,"queue empty\n" );atomic_set (&pd->iosched.attention,1 );wake_up (&pd->wqueue); }
@@ -871,7 +867,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) need_write_seek =0 ;if (need_write_seek && reads_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": write, waiting\n" ); +pkt_dbg (2 ,"write, waiting\n" );break ; }pkt_flush_cache (pd);
@@ -880,7 +876,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) }else {if (!reads_queued && writes_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -VPRINTK (DRIVER_NAME ": read, waiting\n" ); +pkt_dbg (2 ,"read, waiting\n" );break ; } pd->iosched.writing =1 ;
@@ -987,8 +983,9 @@ static void pkt_end_io_read(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_read: bio=%p sec0=%llx sec=%llx err=%d\n" , bio, - (unsigned long long )pkt->sector, (unsigned long long )bio->bi_sector, err); +pkt_dbg (2 ,"bio=%p sec0=%llx sec=%llx err=%d\n" , + bio, (unsigned long long )pkt->sector, + (unsigned long long )bio->bi_sector, err);if (err)atomic_inc (&pkt->io_errors);
@@ -1006,7 +1003,7 @@ static void pkt_end_io_packet_write(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -VPRINTK ("pkt_end_io_packet_write: id=%d, err=%d\n" , pkt->id, err); +pkt_dbg (2 ,"id=%d, err=%d\n" , pkt->id, err); pd->stats.pkt_ended++;
@@ -1048,7 +1045,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)spin_unlock (&pkt->lock);if (pkt->cache_valid) { -VPRINTK ("pkt_gather_data: zone %llx cached\n" , +pkt_dbg (2 ,"zone %llx cached\n" , (unsigned long long )pkt->sector); goto out_account; }
@@ -1071,7 +1068,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) p = (f *CD_FRAMESIZE ) /PAGE_SIZE ; offset = (f *CD_FRAMESIZE ) %PAGE_SIZE ; -VPRINTK ("pkt_gather_data: Adding frame %d, page:%p offs:%d\n" , +pkt_dbg (2 ,"Adding frame %d, page:%p offs:%d\n" , f, pkt->pages[p], offset);if (!bio_add_page (bio, pkt->pages[p],CD_FRAMESIZE , offset))BUG ();
@@ -1083,7 +1080,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) } out_account: -VPRINTK ("pkt_gather_data: need %d frames for zone %llx\n" , +pkt_dbg (2 ,"need %d frames for zone %llx\n" , frames_read, (unsigned long long )pkt->sector); pd->stats.pkt_started++; pd->stats.secs_rg += frames_read * (CD_FRAMESIZE >>9 );
@@ -1184,7 +1181,8 @@ static inline void pkt_set_state(struct packet_data *pkt, enum packet_data_state"IDLE" ,"WAITING" ,"READ_WAIT" ,"WRITE_WAIT" ,"RECOVERY" ,"FINISHED" };enum packet_data_state old_state = pkt->state; -VPRINTK ("pkt %2d : s=%6llx %s -> %s\n" , pkt->id, (unsigned long long )pkt->sector, +pkt_dbg (2 ,"pkt %2d : s=%6llx %s -> %s\n" , + pkt->id, (unsigned long long )pkt->sector, state_name[old_state], state_name[state]);#endif pkt->state = state;
@@ -1203,12 +1201,12 @@ static int pkt_handle_queue(struct pktcdvd_device *pd)struct rb_node *n;int wakeup; -VPRINTK ("handle_queue\n" ); +pkt_dbg (2 ,"\n" );atomic_set (&pd->scan_queue,0 );if (list_empty (&pd->cdrw.pkt_free_list)) { -VPRINTK ("handle_queue: no pkt\n" ); +pkt_dbg (2 ,"no pkt\n" );return 0 ; }
@@ -1245,7 +1243,7 @@ try_next_bio: }spin_unlock (&pd->lock);if (!bio) { -VPRINTK ("handle_queue: no bio\n" ); +pkt_dbg (2 ,"no bio\n" );return 0 ; }
@@ -1261,10 +1259,10 @@ try_next_bio:* to this packet. */ spin_lock (&pd->lock); -VPRINTK ("pkt_handle_queue: looking for zone %llx\n" , (unsigned long long )zone); +pkt_dbg (2 ,"looking for zone %llx\n" , (unsigned long long )zone);while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio; -VPRINTK ("pkt_handle_queue: found zone=%llx\n" , +pkt_dbg (2 ,"found zone=%llx\n" , (unsigned long long )get_zone (bio->bi_sector, pd));if (get_zone (bio->bi_sector, pd) != zone)break ;
@@ -1317,7 +1315,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)if (!bio_add_page (pkt->w_bio, bvec[f].bv_page,CD_FRAMESIZE , bvec[f].bv_offset))BUG (); } -VPRINTK (DRIVER_NAME ": vcnt=%d\n" , pkt->w_bio->bi_vcnt); +pkt_dbg (2 ,"vcnt=%d\n" , pkt->w_bio->bi_vcnt);/* * Fill-in bvec with data from orig_bios.
@@ -1328,7 +1326,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)pkt_set_state (pkt,PACKET_WRITE_WAIT_STATE );spin_unlock (&pkt->lock); -VPRINTK ("pkt_start_write: Writing %d frames for zone %llx\n" , +pkt_dbg (2 ,"Writing %d frames for zone %llx\n" , pkt->write_size, (unsigned long long )pkt->sector);if (test_bit (PACKET_MERGE_SEGS , &pd->flags) || (pkt->write_size < pkt->frames)) {
@@ -1360,7 +1358,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data {int uptodate; -VPRINTK ("run_state_machine: pkt %d\n" , pkt->id); +pkt_dbg (2 ,"pkt %d\n" , pkt->id);for (;;) {switch (pkt->state) {
@@ -1399,7 +1397,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_dataif (pkt_start_recovery (pkt)) {pkt_start_write (pd, pkt); }else { -VPRINTK ("No recovery possible\n" ); +pkt_dbg (2 ,"No recovery possible\n" );pkt_set_state (pkt,PACKET_FINISHED_STATE ); }break ;
@@ -1420,7 +1418,7 @@ static void pkt_handle_packets(struct pktcdvd_device *pd) {struct packet_data *pkt, *next; -VPRINTK ("pkt_handle_packets\n" ); +pkt_dbg (2 ,"\n" );/* * Run state machine for active packets
@@ -1503,9 +1501,9 @@ static int kcdrwd(void *foobar)if (PACKET_DEBUG >1 ) {int states[PACKET_NUM_STATES ];pkt_count_states (pd, states); -VPRINTK ("kcdrwd: i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , - states[0 ], states[1 ], states[2 ], states[3 ], - states[4 ], states[5 ]); +pkt_dbg (2 ,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , + states[0 ], states[1 ], states[2 ], + states[3 ], states[4 ], states[5 ]); } min_sleep_time =MAX_SCHEDULE_TIMEOUT ;
@@ -1514,9 +1512,9 @@ static int kcdrwd(void *foobar) min_sleep_time = pkt->sleep_time; } -VPRINTK ("kcdrwd: sleeping\n" ); +pkt_dbg (2 ,"sleeping\n" ); residue =schedule_timeout (min_sleep_time); -VPRINTK ("kcdrwd: wake up\n" ); +pkt_dbg (2 ,"wake up\n" );/* make swsusp happy with our thread */ try_to_freeze ();
@@ -1813,7 +1811,8 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)case 0x12 :/* DVD-RAM */ return 1 ;default : -VPRINTK (DRIVER_NAME ": Wrong disc profile (%x)\n" , pd->mmc3_profile); +pkt_dbg (2 ,"Wrong disc profile (%x)\n" , + pd->mmc3_profile);return 0 ; }
@@ -2128,7 +2127,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd)struct request_sense sense;int ret; -VPRINTK (DRIVER_NAME ": Performing OPC\n" ); +pkt_dbg (2 ,"Performing OPC\n" );init_cdrom_command (&cgc,NULL ,0 ,CGC_DATA_NONE ); cgc.sense = &sense;
@@ -2146,12 +2145,12 @@ static int pkt_open_write(struct pktcdvd_device *pd)unsigned int write_speed, media_write_speed, read_speed;if ((ret =pkt_probe_settings (pd))) { -VPRINTK (DRIVER_NAME ": %s failed probe\n" , pd->name); +pkt_dbg (2 ,"%s failed probe\n" , pd->name);return ret; }if ((ret =pkt_set_write_settings (pd))) { -DPRINTK (DRIVER_NAME ": %s failed saving write settings\n" , pd->name); +pkt_dbg (1 ,"%s failed saving write settings\n" , pd->name);return -EIO ; }
@@ -2163,26 +2162,26 @@ static int pkt_open_write(struct pktcdvd_device *pd)case 0x13 :/* DVD-RW */ case 0x1a :/* DVD+RW */ case 0x12 :/* DVD-RAM */ -DPRINTK (DRIVER_NAME ": write speed %ukB/s\n" , write_speed); +pkt_dbg (1 ,"write speed %ukB/s\n" , write_speed);break ;default :if ((ret =pkt_media_speed (pd, &media_write_speed))) media_write_speed =16 ; write_speed =min (write_speed, media_write_speed *177 ); -DPRINTK (DRIVER_NAME ": write speed %ux\n" , write_speed /176 ); +pkt_dbg (1 ,"write speed %ux\n" , write_speed /176 );break ; } read_speed = write_speed;if ((ret =pkt_set_speed (pd, write_speed, read_speed))) { -DPRINTK (DRIVER_NAME ": %s couldn't set write speed\n" , pd->name); +pkt_dbg (1 ,"%s couldn't set write speed\n" , pd->name);return -EIO ; } pd->write_speed = write_speed; pd->read_speed = read_speed;if ((ret =pkt_perform_opc (pd))) { -DPRINTK (DRIVER_NAME ": %s Optimum Power Calibration failed\n" , pd->name); +pkt_dbg (1 ,"%s Optimum Power Calibration failed\n" , pd->name); }return 0 ;
@@ -2259,7 +2258,7 @@ out:static void pkt_release_dev (struct pktcdvd_device *pd,int flush) {if (flush &&pkt_flush_cache (pd)) -DPRINTK (DRIVER_NAME ": %s not flushing cache\n" , pd->name); +pkt_dbg (1 ,"%s not flushing cache\n" , pd->name);pkt_lock_door (pd,0 );
@@ -2281,7 +2280,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode)struct pktcdvd_device *pd =NULL ;int ret; -VPRINTK (DRIVER_NAME ": entering open\n" ); +pkt_dbg (2 ,"entering\n" );mutex_lock (&pktcdvd_mutex);mutex_lock (&ctl_mutex);
@@ -2317,7 +2316,7 @@ static int pkt_open(struct block_device *bdev, fmode_t mode) out_dec: pd->refcnt--; out: -VPRINTK (DRIVER_NAME ": failed open (%d)\n" , ret); +pkt_dbg (2 ,"failed (%d)\n" , ret);mutex_unlock (&ctl_mutex);mutex_unlock (&pktcdvd_mutex);return ret;
@@ -2399,7 +2398,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); zone =get_zone (bio->bi_sector, pd); -VPRINTK ("pkt_make_request: start = %6llx stop = %6llx\n" , +pkt_dbg (2 ,"start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2654,7 +2653,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev) }proc_create_data (pd->name,0 , pkt_proc, &pkt_proc_fops, pd); -DPRINTK (DRIVER_NAME ": writer %s mapped to %s\n" , pd->name,bdevname (bdev, b)); +pkt_dbg (1 ,"writer %s mapped to %s\n" , pd->name,bdevname (bdev, b));return 0 ; out_mem:
@@ -2669,8 +2668,8 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,struct pktcdvd_device *pd = bdev->bd_disk->private_data;int ret; -VPRINTK ("pkt_ioctl: cmd %x, dev %d:%d\n" , cmd, -MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev)); +pkt_dbg (2 ,"cmd %x, dev %d:%d\n" , + cmd,MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev));mutex_lock (&pktcdvd_mutex);switch (cmd) {
@@ -2694,7 +2693,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,break ;default : -VPRINTK (DRIVER_NAME ": Unknown ioctl for %s (%x)\n" , pd->name, cmd); +pkt_dbg (2 ,"Unknown ioctl for %s (%x)\n" , pd->name, cmd); ret = -ENOTTY ; }mutex_unlock (&pktcdvd_mutex);
@@ -2843,7 +2842,7 @@ static int pkt_remove_dev(dev_t pkt_dev)break ; }if (idx ==MAX_WRITERS ) { -DPRINTK (DRIVER_NAME ": dev not setup\n" ); +pkt_dbg (1 ,"dev not setup\n" ); ret = -ENXIO ; goto out; }
@@ -2863,7 +2862,7 @@ static int pkt_remove_dev(dev_t pkt_dev)blkdev_put (pd->bdev,FMODE_READ |FMODE_NDELAY );remove_proc_entry (pd->name, pkt_proc); -DPRINTK (DRIVER_NAME ": writer %s unmapped\n" , pd->name); +pkt_dbg (1 ,"writer %s unmapped\n" , pd->name);del_gendisk (pd->disk);blk_cleanup_queue (pd->disk->queue);
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 4/8 pktcdvd: Add struct pktcdvd_device * to pkt_dbg
In reply to Joe PerchesAdd pd->name to output for these debugging messages.
Remove normally compiled out pkt_dbg(2, ...) function entry tracing equivalents as it's better done via the function tracer.
--- drivers/block/pktcdvd.c | 90 +++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 48 deletions(-)
drivers/block/pktcdvd.c +42 -48
@@ -71,12 +71,13 @@#define DRIVER_NAME "pktcdvd" -#define pkt_dbg (level, fmt, ...) \ -do { \ - if (level == 2 && PACKET_DEBUG >= 2) \ - pr_notice("%s: " fmt, __func__, ##__VA_ARGS__); \ - else if (level == 1 && PACKET_DEBUG >= 1) \ - pr_notice(fmt, ##__VA_ARGS__); \ +#define pkt_dbg (level, pd, fmt, ...) \ +do { \ + if (level == 2 && PACKET_DEBUG >= 2) \ + pr_notice("%s: %s():" fmt, \ + pd->name, __func__, ##__VA_ARGS__); \ + else if (level == 1 && PACKET_DEBUG >= 1) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__); \ } while (0)#define MAX_SPEED 0xffff
@@ -515,7 +516,7 @@ static void pkt_bio_finished(struct pktcdvd_device *pd) {BUG_ON (atomic_read (&pd->cdrw.pending_bios) <=0 );if (atomic_dec_and_test (&pd->cdrw.pending_bios)) { -pkt_dbg (2 ,"queue empty\n" ); +pkt_dbg (2 , pd,"queue empty\n" );atomic_set (&pd->iosched.attention,1 );wake_up (&pd->wqueue); }
@@ -867,7 +868,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) need_write_seek =0 ;if (need_write_seek && reads_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -pkt_dbg (2 ,"write, waiting\n" ); +pkt_dbg (2 , pd,"write, waiting\n" );break ; }pkt_flush_cache (pd);
@@ -876,7 +877,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) }else {if (!reads_queued && writes_queued) {if (atomic_read (&pd->cdrw.pending_bios) >0 ) { -pkt_dbg (2 ,"read, waiting\n" ); +pkt_dbg (2 , pd,"read, waiting\n" );break ; } pd->iosched.writing =1 ;
@@ -983,7 +984,7 @@ static void pkt_end_io_read(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -pkt_dbg (2 ,"bio=%p sec0=%llx sec=%llx err=%d\n" , +pkt_dbg (2 , pd,"bio=%p sec0=%llx sec=%llx err=%d\n" , bio, (unsigned long long )pkt->sector, (unsigned long long )bio->bi_sector, err);
@@ -1003,7 +1004,7 @@ static void pkt_end_io_packet_write(struct bio *bio, int err,struct pktcdvd_device *pd = pkt->pd;BUG_ON (!pd); -pkt_dbg (2 ,"id=%d, err=%d\n" , pkt->id, err); +pkt_dbg (2 , pd,"id=%d, err=%d\n" , pkt->id, err); pd->stats.pkt_ended++;
@@ -1045,7 +1046,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt)spin_unlock (&pkt->lock);if (pkt->cache_valid) { -pkt_dbg (2 ,"zone %llx cached\n" , +pkt_dbg (2 , pd,"zone %llx cached\n" , (unsigned long long )pkt->sector); goto out_account; }
@@ -1068,7 +1069,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) p = (f *CD_FRAMESIZE ) /PAGE_SIZE ; offset = (f *CD_FRAMESIZE ) %PAGE_SIZE ; -pkt_dbg (2 ,"Adding frame %d, page:%p offs:%d\n" , +pkt_dbg (2 , pd,"Adding frame %d, page:%p offs:%d\n" , f, pkt->pages[p], offset);if (!bio_add_page (bio, pkt->pages[p],CD_FRAMESIZE , offset))BUG ();
@@ -1080,7 +1081,7 @@ static void pkt_gather_data(struct pktcdvd_device *pd, struct packet_data *pkt) } out_account: -pkt_dbg (2 ,"need %d frames for zone %llx\n" , +pkt_dbg (2 , pd,"need %d frames for zone %llx\n" , frames_read, (unsigned long long )pkt->sector); pd->stats.pkt_started++; pd->stats.secs_rg += frames_read * (CD_FRAMESIZE >>9 );
@@ -1181,7 +1182,7 @@ static inline void pkt_set_state(struct packet_data *pkt, enum packet_data_state"IDLE" ,"WAITING" ,"READ_WAIT" ,"WRITE_WAIT" ,"RECOVERY" ,"FINISHED" };enum packet_data_state old_state = pkt->state; -pkt_dbg (2 ,"pkt %2d : s=%6llx %s -> %s\n" , +pkt_dbg (2 , pd,"pkt %2d : s=%6llx %s -> %s\n" , pkt->id, (unsigned long long )pkt->sector, state_name[old_state], state_name[state]);#endif
@@ -1201,12 +1202,10 @@ static int pkt_handle_queue(struct pktcdvd_device *pd)struct rb_node *n;int wakeup; -pkt_dbg (2 ,"\n" ); -atomic_set (&pd->scan_queue,0 );if (list_empty (&pd->cdrw.pkt_free_list)) { -pkt_dbg (2 ,"no pkt\n" ); +pkt_dbg (2 , pd,"no pkt\n" );return 0 ; }
@@ -1243,7 +1242,7 @@ try_next_bio: }spin_unlock (&pd->lock);if (!bio) { -pkt_dbg (2 ,"no bio\n" ); +pkt_dbg (2 , pd,"no bio\n" );return 0 ; }
@@ -1259,10 +1258,10 @@ try_next_bio:* to this packet. */ spin_lock (&pd->lock); -pkt_dbg (2 ,"looking for zone %llx\n" , (unsigned long long )zone); +pkt_dbg (2 , pd,"looking for zone %llx\n" , (unsigned long long )zone);while ((node =pkt_rbtree_find (pd, zone)) !=NULL ) { bio = node->bio; -pkt_dbg (2 ,"found zone=%llx\n" , +pkt_dbg (2 , pd,"found zone=%llx\n" , (unsigned long long )get_zone (bio->bi_sector, pd));if (get_zone (bio->bi_sector, pd) != zone)break ;
@@ -1315,7 +1314,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)if (!bio_add_page (pkt->w_bio, bvec[f].bv_page,CD_FRAMESIZE , bvec[f].bv_offset))BUG (); } -pkt_dbg (2 ,"vcnt=%d\n" , pkt->w_bio->bi_vcnt); +pkt_dbg (2 , pd,"vcnt=%d\n" , pkt->w_bio->bi_vcnt);/* * Fill-in bvec with data from orig_bios.
@@ -1326,7 +1325,7 @@ static void pkt_start_write(struct pktcdvd_device *pd, struct packet_data *pkt)pkt_set_state (pkt,PACKET_WRITE_WAIT_STATE );spin_unlock (&pkt->lock); -pkt_dbg (2 ,"Writing %d frames for zone %llx\n" , +pkt_dbg (2 , pd,"Writing %d frames for zone %llx\n" , pkt->write_size, (unsigned long long )pkt->sector);if (test_bit (PACKET_MERGE_SEGS , &pd->flags) || (pkt->write_size < pkt->frames)) {
@@ -1358,7 +1357,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_data {int uptodate; -pkt_dbg (2 ,"pkt %d\n" , pkt->id); +pkt_dbg (2 , pd,"pkt %d\n" , pkt->id);for (;;) {switch (pkt->state) {
@@ -1397,7 +1396,7 @@ static void pkt_run_state_machine(struct pktcdvd_device *pd, struct packet_dataif (pkt_start_recovery (pkt)) {pkt_start_write (pd, pkt); }else { -pkt_dbg (2 ,"No recovery possible\n" ); +pkt_dbg (2 , pd,"No recovery possible\n" );pkt_set_state (pkt,PACKET_FINISHED_STATE ); }break ;
@@ -1418,8 +1417,6 @@ static void pkt_handle_packets(struct pktcdvd_device *pd) {struct packet_data *pkt, *next; -pkt_dbg (2 ,"\n" ); -/* * Run state machine for active packets */
@@ -1501,7 +1498,7 @@ static int kcdrwd(void *foobar)if (PACKET_DEBUG >1 ) {int states[PACKET_NUM_STATES ];pkt_count_states (pd, states); -pkt_dbg (2 ,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , +pkt_dbg (2 , pd,"i:%d ow:%d rw:%d ww:%d rec:%d fin:%d\n" , states[0 ], states[1 ], states[2 ], states[3 ], states[4 ], states[5 ]); }
@@ -1512,9 +1509,9 @@ static int kcdrwd(void *foobar) min_sleep_time = pkt->sleep_time; } -pkt_dbg (2 ,"sleeping\n" ); +pkt_dbg (2 , pd,"sleeping\n" ); residue =schedule_timeout (min_sleep_time); -pkt_dbg (2 ,"wake up\n" ); +pkt_dbg (2 , pd,"wake up\n" );/* make swsusp happy with our thread */ try_to_freeze ();
@@ -1811,7 +1808,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)case 0x12 :/* DVD-RAM */ return 1 ;default : -pkt_dbg (2 ,"Wrong disc profile (%x)\n" , +pkt_dbg (2 , pd,"Wrong disc profile (%x)\n" , pd->mmc3_profile);return 0 ; }
@@ -2127,7 +2124,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd)struct request_sense sense;int ret; -pkt_dbg (2 ,"Performing OPC\n" ); +pkt_dbg (2 , pd,"Performing OPC\n" );init_cdrom_command (&cgc,NULL ,0 ,CGC_DATA_NONE ); cgc.sense = &sense;
@@ -2145,12 +2142,12 @@ static int pkt_open_write(struct pktcdvd_device *pd)unsigned int write_speed, media_write_speed, read_speed;if ((ret =pkt_probe_settings (pd))) { -pkt_dbg (2 ,"%s failed probe\n" , pd->name); +pkt_dbg (2 , pd,"failed probe\n" );return ret; }if ((ret =pkt_set_write_settings (pd))) { -pkt_dbg (1 ,"%s failed saving write settings\n" , pd->name); +pkt_dbg (1 , pd,"failed saving write settings\n" );return -EIO ; }
@@ -2162,26 +2159,26 @@ static int pkt_open_write(struct pktcdvd_device *pd)case 0x13 :/* DVD-RW */ case 0x1a :/* DVD+RW */ case 0x12 :/* DVD-RAM */ -pkt_dbg (1 ,"write speed %ukB/s\n" , write_speed); +pkt_dbg (1 , pd,"write speed %ukB/s\n" , write_speed);break ;default :if ((ret =pkt_media_speed (pd, &media_write_speed))) media_write_speed =16 ; write_speed =min (write_speed, media_write_speed *177 ); -pkt_dbg (1 ,"write speed %ux\n" , write_speed /176 ); +pkt_dbg (1 , pd,"write speed %ux\n" , write_speed /176 );break ; } read_speed = write_speed;if ((ret =pkt_set_speed (pd, write_speed, read_speed))) { -pkt_dbg (1 ,"%s couldn't set write speed\n" , pd->name); +pkt_dbg (1 , pd,"couldn't set write speed\n" );return -EIO ; } pd->write_speed = write_speed; pd->read_speed = read_speed;if ((ret =pkt_perform_opc (pd))) { -pkt_dbg (1 ,"%s Optimum Power Calibration failed\n" , pd->name); +pkt_dbg (1 , pd,"Optimum Power Calibration failed\n" ); }return 0 ;
@@ -2258,7 +2255,7 @@ out:static void pkt_release_dev (struct pktcdvd_device *pd,int flush) {if (flush &&pkt_flush_cache (pd)) -pkt_dbg (1 ,"%s not flushing cache\n" , pd->name); +pkt_dbg (1 , pd,"not flushing cache\n" );pkt_lock_door (pd,0 );
@@ -2280,8 +2277,6 @@ static int pkt_open(struct block_device *bdev, fmode_t mode)struct pktcdvd_device *pd =NULL ;int ret; -pkt_dbg (2 ,"entering\n" ); -mutex_lock (&pktcdvd_mutex);mutex_lock (&ctl_mutex); pd =pkt_find_dev_from_minor (MINOR (bdev->bd_dev));
@@ -2316,7 +2311,6 @@ static int pkt_open(struct block_device *bdev, fmode_t mode) out_dec: pd->refcnt--; out: -pkt_dbg (2 ,"failed (%d)\n" , ret);mutex_unlock (&ctl_mutex);mutex_unlock (&pktcdvd_mutex);return ret;
@@ -2398,7 +2392,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio)blk_queue_bounce (q, &bio); zone =get_zone (bio->bi_sector, pd); -pkt_dbg (2 ,"start = %6llx stop = %6llx\n" , +pkt_dbg (2 , pd,"start = %6llx stop = %6llx\n" , (unsigned long long )bio->bi_sector, (unsigned long long )bio_end_sector (bio));
@@ -2653,7 +2647,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev) }proc_create_data (pd->name,0 , pkt_proc, &pkt_proc_fops, pd); -pkt_dbg (1 ,"writer %s mapped to %s\n" , pd->name,bdevname (bdev, b)); +pkt_dbg (1 , pd,"writer mapped to %s\n" ,bdevname (bdev, b));return 0 ; out_mem:
@@ -2668,7 +2662,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,struct pktcdvd_device *pd = bdev->bd_disk->private_data;int ret; -pkt_dbg (2 ,"cmd %x, dev %d:%d\n" , +pkt_dbg (2 , pd,"cmd %x, dev %d:%d\n" , cmd,MAJOR (bdev->bd_dev),MINOR (bdev->bd_dev));mutex_lock (&pktcdvd_mutex);
@@ -2693,7 +2687,7 @@ static int pkt_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,break ;default : -pkt_dbg (2 ,"Unknown ioctl for %s (%x)\n" , pd->name, cmd); +pkt_dbg (2 , pd,"Unknown ioctl (%x)\n" , cmd); ret = -ENOTTY ; }mutex_unlock (&pktcdvd_mutex);
@@ -2842,7 +2836,7 @@ static int pkt_remove_dev(dev_t pkt_dev)break ; }if (idx ==MAX_WRITERS ) { -pkt_dbg (1 ,"dev not setup\n" ); +pkt_dbg (1 , pd,"dev not setup\n" ); ret = -ENXIO ; goto out; }
@@ -2862,7 +2856,7 @@ static int pkt_remove_dev(dev_t pkt_dev)blkdev_put (pd->bdev,FMODE_READ |FMODE_NDELAY );remove_proc_entry (pd->name, pkt_proc); -pkt_dbg (1 ,"writer %s unmapped\n" , pd->name); +pkt_dbg (1 , pd,"writer unmapped\n" );del_gendisk (pd->disk);blk_cleanup_queue (pd->disk->queue);
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 5/8 pktcdvd: Add struct pktcdvd_device.name to pr_err logging where possible
In reply to Joe PerchesAdd a new pkt_err macro to prefix the name to the logging output. Convert pr_err where there is a non-null struct pktcdvd_device.
--- drivers/block/pktcdvd.c | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-)
drivers/block/pktcdvd.c +24 -20
@@ -80,6 +80,9 @@ do { \ pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__); \ } while (0) +#define pkt_err (pd, fmt, ...) \ + pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define MAX_SPEED 0xffffstatic DEFINE_MUTEX (pktcdvd_mutex);
@@ -939,7 +942,7 @@ static int pkt_set_segment_merging(struct pktcdvd_device *pd, struct request_queset_bit (PACKET_MERGE_SEGS , &pd->flags);return 0 ; }else { -pr_err ("cdrom max_phys_segments too small\n" ); +pkt_err (pd,"cdrom max_phys_segments too small\n" );return -EIO ; } }
@@ -1746,7 +1749,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)/* * paranoia */ -pr_err ("write mode wrong %d\n" , wp->data_block_type); +pkt_err (pd,"write mode wrong %d\n" , wp->data_block_type);return 1 ; } wp->packet_size =cpu_to_be32 (pd->settings.size >>2 );
@@ -1790,7 +1793,7 @@ static int pkt_writable_track(struct pktcdvd_device *pd, track_information *ti)if (ti->rt ==1 && ti->blank ==0 )return 1 ; -pr_err ("bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet); +pkt_err (pd,"bad state %d-%d-%d\n" , ti->rt, ti->blank, ti->packet);return 0 ; }
@@ -1823,7 +1826,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->disc_type !=0x20 && di->disc_type !=0 ) { -pr_err ("wrong disc type (%x)\n" , di->disc_type); +pkt_err (pd,"wrong disc type (%x)\n" , di->disc_type);return 0 ; }
@@ -1833,7 +1836,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->border_status ==PACKET_SESSION_RESERVED ) { -pr_err ("can't write to last track (reserved)\n" ); +pkt_err (pd,"can't write to last track (reserved)\n" );return 0 ; }
@@ -1858,7 +1861,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)memset (&ti,0 ,sizeof (track_information));if ((ret =pkt_get_disc_info (pd, &di))) { -pr_err ("failed get_disc\n" ); +pkt_err (pd,"failed get_disc\n" );return ret; }
@@ -1869,12 +1872,12 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) track =1 ;/* (di.last_track_msb << 8) | di.last_track_lsb; */ if ((ret =pkt_get_track_info (pd, track,1 , &ti))) { -pr_err ("failed get_track\n" ); +pkt_err (pd,"failed get_track\n" );return ret; }if (!pkt_writable_track (pd, &ti)) { -pr_err ("can't write to this track\n" ); +pkt_err (pd,"can't write to this track\n" );return -EROFS ; }
@@ -1888,7 +1891,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) { -pr_err ("packet size is too big\n" ); +pkt_err (pd,"packet size is too big\n" );return -EROFS ; } pd->settings.fp = ti.fp;
@@ -1930,7 +1933,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd) pd->settings.block_mode =PACKET_BLOCK_MODE2 ;break ;default : -pr_err ("unknown data mode\n" ); +pkt_err (pd,"unknown data mode\n" );return -EROFS ; }return 0 ;
@@ -1964,7 +1967,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, cgc.buflen = cgc.cmd[8 ] =2 + ((buf[0 ] <<8 ) | (buf[1 ] &0xff )); ret =pkt_mode_select (pd, &cgc);if (ret) { -pr_err ("write caching control failed\n" ); +pkt_err (pd,"write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set)pr_notice ("enabled write caching on %s\n" , pd->name);
@@ -2203,7 +2206,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) goto out;if ((ret =pkt_get_last_written (pd, &lba))) { -pr_err ("pkt_get_last_written failed\n" ); +pkt_err (pd,"pkt_get_last_written failed\n" ); goto out_putdev; }
@@ -2233,7 +2236,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write)if (write) {if (!pkt_grow_pktlist (pd,CONFIG_CDROM_PKTCDVD_BUFFERS )) { -pr_err ("not enough memory for buffers\n" ); +pkt_err (pd,"not enough memory for buffers\n" ); ret = -ENOMEM ; goto out_putdev; }
@@ -2356,8 +2359,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) pd = q->queuedata;if (!pd) { -pr_err ("%s incorrect request queue\n" , -bdevname (bio->bi_bdev, b)); +pkt_err (pd,"%s incorrect request queue\n" , +bdevname (bio->bi_bdev, b)); goto end_io; }
@@ -2385,7 +2388,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!bio->bi_size || (bio->bi_size %CD_FRAMESIZE )) { -pr_err ("wrong bio size\n" ); +pkt_err (pd,"wrong bio size\n" ); goto end_io; }
@@ -2606,7 +2609,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)struct block_device *bdev;if (pd->pkt_dev == dev) { -pr_err ("recursive setup not allowed\n" ); +pkt_err (pd,"recursive setup not allowed\n" );return -EBUSY ; }for (i =0 ; i <MAX_WRITERS ; i++) {
@@ -2614,11 +2617,12 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)if (!pd2)continue ;if (pd2->bdev->bd_dev == dev) { -pr_err ("%s already setup\n" ,bdevname (pd2->bdev, b)); +pkt_err (pd,"%s already setup\n" , +bdevname (pd2->bdev, b));return -EBUSY ; }if (pd2->pkt_dev == dev) { -pr_err ("can't chain pktcdvd devices\n" ); +pkt_err (pd,"can't chain pktcdvd devices\n" );return -EBUSY ; } }
@@ -2641,7 +2645,7 @@ static int pkt_new_dev(struct pktcdvd_device *pd, dev_t dev)atomic_set (&pd->cdrw.pending_bios,0 ); pd->cdrw.thread =kthread_run (kcdrwd, pd,"%s" , pd->name);if (IS_ERR (pd->cdrw.thread)) { -pr_err ("can't start kernel thread\n" ); +pkt_err (pd,"can't start kernel thread\n" ); ret = -ENOMEM ; goto out_mem; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 6/8 pktcdvd: Convert pr_notice to pkt_notice
In reply to Joe PerchesAdd a new pkt_notice macro to prefix the name to the logging output.
--- drivers/block/pktcdvd.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-)
drivers/block/pktcdvd.c +17 -15
@@ -71,17 +71,19 @@#define DRIVER_NAME "pktcdvd" +#define pkt_err (pd, fmt, ...) \ + pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_notice (pd, fmt, ...) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_dbg (level, pd, fmt, ...) \ do { \ if (level == 2 && PACKET_DEBUG >= 2) \ - pr_notice("%s: %s():" fmt, \ - pd->name, __func__, ##__VA_ARGS__); \ + pkt_notice(pd, "%s(): " fmt, __func__, ##__VA_ARGS__); \ else if (level == 1 && PACKET_DEBUG >= 1) \ - pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__); \ + pkt_notice(pd, fmt, ##__VA_ARGS__); \ } while (0) -#define pkt_err (pd, fmt, ...) \ - pr_err("%s: " fmt, pd->name, ##__VA_ARGS__)#define MAX_SPEED 0xffff
@@ -1821,7 +1823,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di)* but i'm not sure, should we leave this to user apps? probably. */ if (di->disc_type ==0xff ) { -pr_notice ("unknown disc - no track?\n" ); +pkt_notice (pd,"unknown disc - no track?\n" );return 0 ; }
@@ -1831,7 +1833,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) }if (di->erasable ==0 ) { -pr_notice ("disc not erasable\n" ); +pkt_notice (pd,"disc not erasable\n" );return 0 ; }
@@ -1887,7 +1889,7 @@ static noinline_for_stack int pkt_probe_settings(struct pktcdvd_device *pd)*/ pd->settings.size =be32_to_cpu (ti.fixed_packet_size) <<2 ;if (pd->settings.size ==0 ) { -pr_notice ("detected zero packet size!\n" ); +pkt_notice (pd,"detected zero packet size!\n" );return -ENXIO ; }if (pd->settings.size >PACKET_MAX_SECTORS ) {
@@ -1970,7 +1972,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd,pkt_err (pd,"write caching control failed\n" );pkt_dump_sense (&cgc); }else if (!ret && set) -pr_notice ("enabled write caching on %s\n" , pd->name); +pkt_notice (pd,"enabled write caching\n" );return ret; }
@@ -2085,11 +2087,11 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, }if (!(buf[6 ] &0x40 )) { -pr_notice ("disc type is not CD-RW\n" ); +pkt_notice (pd,"disc type is not CD-RW\n" );return 1 ; }if (!(buf[6 ] &0x4 )) { -pr_notice ("A1 values on media are not valid, maybe not CDRW?\n" ); +pkt_notice (pd,"A1 values on media are not valid, maybe not CDRW?\n" );return 1 ; }
@@ -2109,14 +2111,14 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, *speed = us_clv_to_speed[sp];break ;default : -pr_notice ("unknown disc sub-type %d\n" , st); +pkt_notice (pd,"unknown disc sub-type %d\n" , st);return 1 ; }if (*speed) {pr_info ("maximum media speed: %d\n" , *speed);return 0 ; }else { -pr_notice ("unknown speed %d for sub-type %d\n" , sp, st); +pkt_notice (pd,"unknown speed %d for sub-type %d\n" , sp, st);return 1 ; } }
@@ -2382,8 +2384,8 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) }if (!test_bit (PACKET_WRITABLE , &pd->flags)) { -pr_notice ("WRITE for ro device %s (%llu)\n" , - pd->name, (unsigned long long )bio->bi_sector); +pkt_notice (pd,"WRITE for ro device (%llu)\n" , + (unsigned long long )bio->bi_sector); goto end_io; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
Re: [PATCH V2 6/8] pktcdvd: Convert pr_notice to pkt_notice
Quoted 1 line · Joe Perches
Add a new
pkt_noticemacro to prefix the name to the logging output.
One nitpick below.
Quoted 14 lines
drivers/block/pktcdvd.c +5
-0@@ -71,17 +71,19 @@#define DRIVER_NAME "pktcdvd" +#define pkt_err (pd, fmt, ...) \ + pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_notice (pd, fmt, ...) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_dbg (level, pd, fmt, ...) \ do { \ if (level == 2 && PACKET_DEBUG >= 2) \
drivers/block/pktcdvd.c line 84
Quoted 10 lines
drivers/block/pktcdvd.c +2
-5-pr_notice ("%s: %s():" fmt, \ - pd->name, __func__, ##__VA_ARGS__); \ + pkt_notice(pd, "%s(): " fmt, __func__, ##__VA_ARGS__); \ else if (level == 1 && PACKET_DEBUG >= 1) \ - pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__); \ + pkt_notice(pd, fmt, ##__VA_ARGS__); \ }while (0 ) -#define pkt_err (pd, fmt, ...) \ - pr_err("%s: " fmt, pd->name, ##__VA_ARGS__)
May be put this in the right place before?
--
With Best Regards,
Andy Shevchenko
Re: [PATCH V2 6/8] pktcdvd: Convert pr_notice to pkt_notice
Quoted 6 lines · Andy Shevchenko
Quoted 1 line · Joe Perches
Add a new
pkt_noticemacro to prefix the name to the logging output.One nitpick below.
Quoted 1 line
---
a/drivers/block/pktcdvd.c
[]
Quoted 5 lines
drivers/block/pktcdvd.c line 78
Quoted 5 lines
drivers/block/pktcdvd.c +5
-0+#define pkt_err (pd, fmt, ...) \ + pr_err("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_notice (pd, fmt, ...) \ + pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__) +
[]
Quoted 4 lines
drivers/block/pktcdvd.c line 84
Quoted 2 lines
drivers/block/pktcdvd.c +0
-2-#define pkt_err (pd, fmt, ...) \ - pr_err("%s: " fmt, pd->name, ##__VA_ARGS__)May be put this in the right place before?
It all ends up well. I think it's not worth the bother.
PATCH v2 7/8 pktcdvd: Convert pr_info to pkt_info
In reply to Joe PerchesAdd a new pkt_info macro to prefix the name to the logging output.
--- drivers/block/pktcdvd.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/block/pktcdvd.c +8 -6
@@ -75,6 +75,8 @@ pr_err("%s: " fmt, pd->name, ##__VA_ARGS__)#define pkt_notice (pd, fmt, ...) \ pr_notice("%s: " fmt, pd->name, ##__VA_ARGS__) +#define pkt_info (pd, fmt, ...) \ + pr_info("%s: " fmt, pd->name, ##__VA_ARGS__)#define pkt_dbg (level, pd, fmt, ...) \ do { \
@@ -1564,10 +1566,10 @@ work_to_do:static void pkt_print_settings (struct pktcdvd_device *pd) { -pr_info ("%s packets, %u blocks, Mode-%c disc\n" , - pd->settings.fp ?"Fixed" :"Variable" , - pd->settings.size >>2 , - pd->settings.block_mode ==8 ?'1' :'2' ); +pkt_info (pd,"%s packets, %u blocks, Mode-%c disc\n" , + pd->settings.fp ?"Fixed" :"Variable" , + pd->settings.size >>2 , + pd->settings.block_mode ==8 ?'1' :'2' ); }static int pkt_mode_sense (struct pktcdvd_device *pd,struct packet_command *cgc,int page_code,int page_control)
@@ -2115,7 +2117,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd,return 1 ; }if (*speed) { -pr_info ("maximum media speed: %d\n" , *speed); +pkt_info (pd,"maximum media speed: %d\n" , *speed);return 0 ; }else {pkt_notice (pd,"unknown speed %d for sub-type %d\n" , sp, st);
@@ -2242,7 +2244,7 @@ static int pkt_open_dev(struct pktcdvd_device *pd, fmode_t write) ret = -ENOMEM ; goto out_putdev; } -pr_info ("%lukB available on disc\n" , lba <<1 ); +pkt_info (pd,"%lukB available on disc\n" , lba <<1 ); }return 0 ;
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty
PATCH v2 8/8 pktcdvd: Add struct pktcdvd_device * to pkt_dump_sense()
In reply to Joe PerchesAllow the device name to be emitted with pkt_err when logging the sense data.
--- drivers/block/pktcdvd.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-)
drivers/block/pktcdvd.c +16 -15
@@ -756,17 +756,18 @@ static const char *sense_key_string(__u8 index)* A generic sense dump / resolve mechanism should be implemented across * all ATAPI + SCSI devices. */ -static void pkt_dump_sense (struct packet_command *cgc) +static void pkt_dump_sense (struct pktcdvd_device *pd, +struct packet_command *cgc) {struct request_sense *sense = cgc->sense;if (sense) -pr_err ("%*ph - sense %02x.%02x.%02x (%s)\n" , -CDROM_PACKET_SIZE , cgc->cmd, - sense->sense_key, sense->asc, sense->ascq, -sense_key_string (sense->sense_key)); +pkt_err (pd,"%*ph - sense %02x.%02x.%02x (%s)\n" , +CDROM_PACKET_SIZE , cgc->cmd, + sense->sense_key, sense->asc, sense->ascq, +sense_key_string (sense->sense_key));else -pr_err ("%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); +pkt_err (pd,"%*ph - no sense\n" ,CDROM_PACKET_SIZE , cgc->cmd); }/*
@@ -809,7 +810,7 @@ static noinline_for_stack int pkt_set_speed(struct pktcdvd_device *pd, cgc.cmd[5 ] = write_speed &0xff ;if ((ret =pkt_generic_packet (pd, &cgc))) -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1703,7 +1704,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)init_cdrom_command (&cgc, buffer,sizeof (*wp),CGC_DATA_READ ); cgc.sense = &sense;if ((ret =pkt_mode_sense (pd, &cgc,GPMODE_WRITE_PARMS_PAGE ,0 ))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1718,7 +1719,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd)init_cdrom_command (&cgc, buffer, size,CGC_DATA_READ ); cgc.sense = &sense;if ((ret =pkt_mode_sense (pd, &cgc,GPMODE_WRITE_PARMS_PAGE ,0 ))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1760,7 +1761,7 @@ static noinline_for_stack int pkt_set_write_settings(struct pktcdvd_device *pd) cgc.buflen = cgc.cmd[8 ] = size;if ((ret =pkt_mode_select (pd, &cgc))) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -1972,7 +1973,7 @@ static noinline_for_stack int pkt_write_caching(struct pktcdvd_device *pd, ret =pkt_mode_select (pd, &cgc);if (ret) {pkt_err (pd,"write caching control failed\n" ); -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc); }else if (!ret && set)pkt_notice (pd,"enabled write caching\n" );return ret;
@@ -2010,7 +2011,7 @@ static noinline_for_stack int pkt_get_max_speed(struct pktcdvd_device *pd,sizeof (struct mode_page_header ); ret =pkt_mode_sense (pd, &cgc,GPMODE_CAPABILITIES_PAGE ,0 );if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; } }
@@ -2069,7 +2070,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, cgc.cmd[8 ] =2 ; ret =pkt_generic_packet (pd, &cgc);if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; } size = ((unsigned int ) buf[0 ]<<8 ) + buf[1 ] +2 ;
@@ -2084,7 +2085,7 @@ static noinline_for_stack int pkt_media_speed(struct pktcdvd_device *pd, cgc.cmd[8 ] = size; ret =pkt_generic_packet (pd, &cgc);if (ret) { -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
@@ -2139,7 +2140,7 @@ static noinline_for_stack int pkt_perform_opc(struct pktcdvd_device *pd) cgc.cmd[0 ] =GPCMD_SEND_OPC ; cgc.cmd[1 ] =1 ;if ((ret =pkt_generic_packet (pd, &cgc))) -pkt_dump_sense (&cgc); +pkt_dump_sense (pd, &cgc);return ret; }
Signature · 1 line
1.8.1.2.459.gbcd45b4.dirty