Browse Source

Merge branch 'for-linus' of git://brick.kernel.dk/data/git/linux-2.6-block

* 'for-linus' of git://brick.kernel.dk/data/git/linux-2.6-block:
  [PATCH] Don't make debugfs depend on DEBUG_KERNEL
  [PATCH] Fix blktrace compile with sysfs not defined
  [PATCH] unused label in drivers/block/cciss.
  [BLOCK] increase size of disk stat counters
  [PATCH] blk_execute_rq_nowait-speedup
  [PATCH] ide-cd: quiet down GPCMD_READ_CDVD_CAPACITY failure
  [BLOCK] ll_rw_blk: kmalloc -> kzalloc conversion
  [PATCH] kzalloc() conversion in drivers/block
  [PATCH] update max_sectors documentation
Linus Torvalds 19 years ago
parent
commit
4fa639123d

+ 12 - 2
Documentation/block/biodoc.txt

@@ -132,8 +132,18 @@ Some new queue property settings:
 		limit. No highmem default.
 		limit. No highmem default.
 
 
 	blk_queue_max_sectors(q, max_sectors)
 	blk_queue_max_sectors(q, max_sectors)
-		Maximum size request you can handle in units of 512 byte
-		sectors. 255 default.
+		Sets two variables that limit the size of the request.
+
+		- The request queue's max_sectors, which is a soft size in
+		in units of 512 byte sectors, and could be dynamically varied
+		by the core kernel.
+
+		- The request queue's max_hw_sectors, which is a hard limit
+		and reflects the maximum size request a driver can handle
+		in units of 512 byte sectors.
+
+		The default for both max_sectors and max_hw_sectors is
+		255. The upper limit of max_sectors is 1024.
 
 
 	blk_queue_max_phys_segments(q, max_segments)
 	blk_queue_max_phys_segments(q, max_segments)
 		Maximum physical segments you can handle in a request. 128
 		Maximum physical segments you can handle in a request. 128

+ 1 - 0
block/Kconfig

@@ -13,6 +13,7 @@ config LBD
 
 
 config BLK_DEV_IO_TRACE
 config BLK_DEV_IO_TRACE
 	bool "Support for tracing block io actions"
 	bool "Support for tracing block io actions"
+	depends on SYSFS
 	select RELAY
 	select RELAY
 	select DEBUG_FS
 	select DEBUG_FS
 	help
 	help

+ 3 - 3
block/genhd.c

@@ -454,8 +454,8 @@ static ssize_t disk_stats_read(struct gendisk * disk, char *page)
 	disk_round_stats(disk);
 	disk_round_stats(disk);
 	preempt_enable();
 	preempt_enable();
 	return sprintf(page,
 	return sprintf(page,
-		"%8u %8u %8llu %8u "
-		"%8u %8u %8llu %8u "
+		"%8lu %8lu %8llu %8u "
+		"%8lu %8lu %8llu %8u "
 		"%8u %8u %8u"
 		"%8u %8u %8u"
 		"\n",
 		"\n",
 		disk_stat_read(disk, ios[READ]),
 		disk_stat_read(disk, ios[READ]),
@@ -649,7 +649,7 @@ static int diskstats_show(struct seq_file *s, void *v)
 	preempt_disable();
 	preempt_disable();
 	disk_round_stats(gp);
 	disk_round_stats(gp);
 	preempt_enable();
 	preempt_enable();
-	seq_printf(s, "%4d %4d %s %u %u %llu %u %u %u %llu %u %u %u %u\n",
+	seq_printf(s, "%4d %4d %s %lu %lu %llu %u %lu %lu %llu %u %u %u %u\n",
 		gp->major, n + gp->first_minor, disk_name(gp, n, buf),
 		gp->major, n + gp->first_minor, disk_name(gp, n, buf),
 		disk_stat_read(gp, ios[0]), disk_stat_read(gp, merges[0]),
 		disk_stat_read(gp, ios[0]), disk_stat_read(gp, merges[0]),
 		(unsigned long long)disk_stat_read(gp, sectors[0]),
 		(unsigned long long)disk_stat_read(gp, sectors[0]),

+ 7 - 7
block/ll_rw_blk.c

@@ -908,17 +908,15 @@ init_tag_map(request_queue_t *q, struct blk_queue_tag *tags, int depth)
 				__FUNCTION__, depth);
 				__FUNCTION__, depth);
 	}
 	}
 
 
-	tag_index = kmalloc(depth * sizeof(struct request *), GFP_ATOMIC);
+	tag_index = kzalloc(depth * sizeof(struct request *), GFP_ATOMIC);
 	if (!tag_index)
 	if (!tag_index)
 		goto fail;
 		goto fail;
 
 
 	nr_ulongs = ALIGN(depth, BITS_PER_LONG) / BITS_PER_LONG;
 	nr_ulongs = ALIGN(depth, BITS_PER_LONG) / BITS_PER_LONG;
-	tag_map = kmalloc(nr_ulongs * sizeof(unsigned long), GFP_ATOMIC);
+	tag_map = kzalloc(nr_ulongs * sizeof(unsigned long), GFP_ATOMIC);
 	if (!tag_map)
 	if (!tag_map)
 		goto fail;
 		goto fail;
 
 
-	memset(tag_index, 0, depth * sizeof(struct request *));
-	memset(tag_map, 0, nr_ulongs * sizeof(unsigned long));
 	tags->real_max_depth = depth;
 	tags->real_max_depth = depth;
 	tags->max_depth = depth;
 	tags->max_depth = depth;
 	tags->tag_index = tag_index;
 	tags->tag_index = tag_index;
@@ -2481,10 +2479,12 @@ void blk_execute_rq_nowait(request_queue_t *q, struct gendisk *bd_disk,
 	rq->rq_disk = bd_disk;
 	rq->rq_disk = bd_disk;
 	rq->flags |= REQ_NOMERGE;
 	rq->flags |= REQ_NOMERGE;
 	rq->end_io = done;
 	rq->end_io = done;
-	elv_add_request(q, rq, where, 1);
-	generic_unplug_device(q);
+	WARN_ON(irqs_disabled());
+	spin_lock_irq(q->queue_lock);
+	__elv_add_request(q, rq, where, 1);
+	__generic_unplug_device(q);
+	spin_unlock_irq(q->queue_lock);
 }
 }
-
 EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);
 EXPORT_SYMBOL_GPL(blk_execute_rq_nowait);
 
 
 /**
 /**

+ 2 - 5
drivers/block/DAC960.c

@@ -311,11 +311,10 @@ static boolean DAC960_CreateAuxiliaryStructures(DAC960_Controller_T *Controller)
 		CommandsRemaining = CommandAllocationGroupSize;
 		CommandsRemaining = CommandAllocationGroupSize;
 	  CommandGroupByteCount =
 	  CommandGroupByteCount =
 		CommandsRemaining * CommandAllocationLength;
 		CommandsRemaining * CommandAllocationLength;
-	  AllocationPointer = kmalloc(CommandGroupByteCount, GFP_ATOMIC);
+	  AllocationPointer = kzalloc(CommandGroupByteCount, GFP_ATOMIC);
 	  if (AllocationPointer == NULL)
 	  if (AllocationPointer == NULL)
 		return DAC960_Failure(Controller,
 		return DAC960_Failure(Controller,
 					"AUXILIARY STRUCTURE CREATION");
 					"AUXILIARY STRUCTURE CREATION");
-	  memset(AllocationPointer, 0, CommandGroupByteCount);
 	 }
 	 }
       Command = (DAC960_Command_T *) AllocationPointer;
       Command = (DAC960_Command_T *) AllocationPointer;
       AllocationPointer += CommandAllocationLength;
       AllocationPointer += CommandAllocationLength;
@@ -2709,14 +2708,12 @@ DAC960_DetectController(struct pci_dev *PCI_Device,
   void __iomem *BaseAddress;
   void __iomem *BaseAddress;
   int i;
   int i;
 
 
-  Controller = (DAC960_Controller_T *)
-	kmalloc(sizeof(DAC960_Controller_T), GFP_ATOMIC);
+  Controller = kzalloc(sizeof(DAC960_Controller_T), GFP_ATOMIC);
   if (Controller == NULL) {
   if (Controller == NULL) {
 	DAC960_Error("Unable to allocate Controller structure for "
 	DAC960_Error("Unable to allocate Controller structure for "
                        "Controller at\n", NULL);
                        "Controller at\n", NULL);
 	return NULL;
 	return NULL;
   }
   }
-  memset(Controller, 0, sizeof(DAC960_Controller_T));
   Controller->ControllerNumber = DAC960_ControllerCount;
   Controller->ControllerNumber = DAC960_ControllerCount;
   DAC960_Controllers[DAC960_ControllerCount++] = Controller;
   DAC960_Controllers[DAC960_ControllerCount++] = Controller;
   Controller->Bus = PCI_Device->bus->number;
   Controller->Bus = PCI_Device->bus->number;

+ 4 - 8
drivers/block/cciss.c

@@ -996,13 +996,11 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
 			status = -EINVAL;
 			status = -EINVAL;
 			goto cleanup1;
 			goto cleanup1;
 		}
 		}
-		buff = (unsigned char **) kmalloc(MAXSGENTRIES * 
-				sizeof(char *), GFP_KERNEL);
+		buff = kzalloc(MAXSGENTRIES * sizeof(char *), GFP_KERNEL);
 		if (!buff) {
 		if (!buff) {
 			status = -ENOMEM;
 			status = -ENOMEM;
 			goto cleanup1;
 			goto cleanup1;
 		}
 		}
-		memset(buff, 0, MAXSGENTRIES);
 		buff_size = (int *) kmalloc(MAXSGENTRIES * sizeof(int), 
 		buff_size = (int *) kmalloc(MAXSGENTRIES * sizeof(int), 
 					GFP_KERNEL);
 					GFP_KERNEL);
 		if (!buff_size) {
 		if (!buff_size) {
@@ -2729,9 +2727,9 @@ static void __devinit cciss_interrupt_mode(ctlr_info_t *c, struct pci_dev *pdev,
                         return;
                         return;
                 }
                 }
         }
         }
+default_int_mode:
 #endif /* CONFIG_PCI_MSI */
 #endif /* CONFIG_PCI_MSI */
 	/* if we get here we're going to use the default interrupt mode */
 	/* if we get here we're going to use the default interrupt mode */
-default_int_mode:
         c->intr[SIMPLE_MODE_INT] = pdev->irq;
         c->intr[SIMPLE_MODE_INT] = pdev->irq;
 	return;
 	return;
 }
 }
@@ -2940,13 +2938,12 @@ static void cciss_getgeometry(int cntl_num)
 	int block_size;
 	int block_size;
 	int total_size; 
 	int total_size; 
 
 
-	ld_buff = kmalloc(sizeof(ReportLunData_struct), GFP_KERNEL);
+	ld_buff = kzalloc(sizeof(ReportLunData_struct), GFP_KERNEL);
 	if (ld_buff == NULL)
 	if (ld_buff == NULL)
 	{
 	{
 		printk(KERN_ERR "cciss: out of memory\n");
 		printk(KERN_ERR "cciss: out of memory\n");
 		return;
 		return;
 	}
 	}
-	memset(ld_buff, 0, sizeof(ReportLunData_struct));
 	size_buff = kmalloc(sizeof( ReadCapdata_struct), GFP_KERNEL);
 	size_buff = kmalloc(sizeof( ReadCapdata_struct), GFP_KERNEL);
         if (size_buff == NULL)
         if (size_buff == NULL)
         {
         {
@@ -3060,10 +3057,9 @@ static int alloc_cciss_hba(void)
 	for(i=0; i< MAX_CTLR; i++) {
 	for(i=0; i< MAX_CTLR; i++) {
 		if (!hba[i]) {
 		if (!hba[i]) {
 			ctlr_info_t *p;
 			ctlr_info_t *p;
-			p = kmalloc(sizeof(ctlr_info_t), GFP_KERNEL);
+			p = kzalloc(sizeof(ctlr_info_t), GFP_KERNEL);
 			if (!p)
 			if (!p)
 				goto Enomem;
 				goto Enomem;
-			memset(p, 0, sizeof(ctlr_info_t));
 			for (n = 0; n < NWD; n++)
 			for (n = 0; n < NWD; n++)
 				p->gendisk[n] = disk[n];
 				p->gendisk[n] = disk[n];
 			hba[i] = p;
 			hba[i] = p;

+ 1 - 2
drivers/block/cciss_scsi.c

@@ -1027,12 +1027,11 @@ cciss_update_non_disk_devices(int cntl_num, int hostno)
 	int i;
 	int i;
 
 
 	c = (ctlr_info_t *) hba[cntl_num];	
 	c = (ctlr_info_t *) hba[cntl_num];	
-	ld_buff = kmalloc(reportlunsize, GFP_KERNEL);
+	ld_buff = kzalloc(reportlunsize, GFP_KERNEL);
 	if (ld_buff == NULL) {
 	if (ld_buff == NULL) {
 		printk(KERN_ERR "cciss: out of memory\n");
 		printk(KERN_ERR "cciss: out of memory\n");
 		return;
 		return;
 	}
 	}
-	memset(ld_buff, 0, reportlunsize);
 	inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
 	inq_buff = kmalloc(OBDR_TAPE_INQ_SIZE, GFP_KERNEL);
         if (inq_buff == NULL) {
         if (inq_buff == NULL) {
                 printk(KERN_ERR "cciss: out of memory\n");
                 printk(KERN_ERR "cciss: out of memory\n");

+ 1 - 2
drivers/block/paride/bpck6.c

@@ -224,10 +224,9 @@ static void bpck6_log_adapter( PIA *pi, char * scratch, int verbose )
 
 
 static int bpck6_init_proto(PIA *pi)
 static int bpck6_init_proto(PIA *pi)
 {
 {
-	Interface *p = kmalloc(sizeof(Interface), GFP_KERNEL);
+	Interface *p = kzalloc(sizeof(Interface), GFP_KERNEL);
 
 
 	if (p) {
 	if (p) {
-		memset(p, 0, sizeof(Interface));
 		pi->private = (unsigned long)p;
 		pi->private = (unsigned long)p;
 		return 0;
 		return 0;
 	}
 	}

+ 1 - 0
drivers/ide/ide-cd.c

@@ -2143,6 +2143,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
 	req.cmd[0] = GPCMD_READ_CDVD_CAPACITY;
 	req.cmd[0] = GPCMD_READ_CDVD_CAPACITY;
 	req.data = (char *)&capbuf;
 	req.data = (char *)&capbuf;
 	req.data_len = sizeof(capbuf);
 	req.data_len = sizeof(capbuf);
+	req.flags |= REQ_QUIET;
 
 
 	stat = cdrom_queue_packet_command(drive, &req);
 	stat = cdrom_queue_packet_command(drive, &req);
 	if (stat == 0) {
 	if (stat == 0) {

+ 6 - 6
include/linux/genhd.h

@@ -90,12 +90,12 @@ struct hd_struct {
 #define GENHD_FL_SUPPRESS_PARTITION_INFO	32
 #define GENHD_FL_SUPPRESS_PARTITION_INFO	32
 
 
 struct disk_stats {
 struct disk_stats {
-	unsigned sectors[2];		/* READs and WRITEs */
-	unsigned ios[2];
-	unsigned merges[2];
-	unsigned ticks[2];
-	unsigned io_ticks;
-	unsigned time_in_queue;
+	unsigned long sectors[2];	/* READs and WRITEs */
+	unsigned long ios[2];
+	unsigned long merges[2];
+	unsigned long ticks[2];
+	unsigned long io_ticks;
+	unsigned long time_in_queue;
 };
 };
 	
 	
 struct gendisk {
 struct gendisk {

+ 1 - 1
lib/Kconfig.debug

@@ -172,7 +172,7 @@ config DEBUG_IOREMAP
 
 
 config DEBUG_FS
 config DEBUG_FS
 	bool "Debug Filesystem"
 	bool "Debug Filesystem"
-	depends on DEBUG_KERNEL && SYSFS
+	depends on SYSFS
 	help
 	help
 	  debugfs is a virtual file system that kernel developers use to put
 	  debugfs is a virtual file system that kernel developers use to put
 	  debugging files into.  Enable this option to be able to read and
 	  debugging files into.  Enable this option to be able to read and