[PATCH] [16/21] Convert sr driver over the blk_kmalloc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This replaces references to unchecked_isa_dma. Instead just let the block
layer allocate dma able memory for it.

Signed-off-by: Andi Kleen <ak@xxxxxxx>

---
 drivers/scsi/sr.c        |   12 ++++++------
 drivers/scsi/sr_ioctl.c  |   22 +++++++++-------------
 drivers/scsi/sr_vendor.c |    8 ++++----
 3 files changed, 19 insertions(+), 23 deletions(-)

Index: linux/drivers/scsi/sr_ioctl.c
===================================================================
--- linux.orig/drivers/scsi/sr_ioctl.c
+++ linux/drivers/scsi/sr_ioctl.c
@@ -30,11 +30,6 @@ static int xa_test = 0;
 
 module_param(xa_test, int, S_IRUGO | S_IWUSR);
 
-/* primitive to determine whether we need to have GFP_DMA set based on
- * the status of the unchecked_isa_dma flag in the host structure */
-#define SR_GFP_DMA(cd) (((cd)->device->host->unchecked_isa_dma) ? GFP_DMA : 0)
-
-
 static int sr_read_tochdr(struct cdrom_device_info *cdi,
 		struct cdrom_tochdr *tochdr)
 {
@@ -43,7 +38,7 @@ static int sr_read_tochdr(struct cdrom_d
 	int result;
 	unsigned char *buffer;
 
-	buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd));
+	buffer = blk_kmalloc(cd->device->request_queue, 32, GFP_KERNEL);
 	if (!buffer)
 		return -ENOMEM;
 
@@ -61,7 +56,7 @@ static int sr_read_tochdr(struct cdrom_d
 	tochdr->cdth_trk0 = buffer[2];
 	tochdr->cdth_trk1 = buffer[3];
 
-	kfree(buffer);
+	blk_kfree(buffer, 32);
 	return result;
 }
 
@@ -73,7 +68,7 @@ static int sr_read_tocentry(struct cdrom
 	int result;
 	unsigned char *buffer;
 
-	buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd));
+	buffer = blk_kmalloc(cd->device->request_queue, 32, GFP_KERNEL);
 	if (!buffer)
 		return -ENOMEM;
 
@@ -100,7 +95,7 @@ static int sr_read_tocentry(struct cdrom
 		tocentry->cdte_addr.lba = (((((buffer[8] << 8) + buffer[9]) << 8)
 			+ buffer[10]) << 8) + buffer[11];
 
-	kfree(buffer);
+	blk_kfree(buffer, 32);
 	return result;
 }
 
@@ -385,7 +380,8 @@ int sr_get_mcn(struct cdrom_device_info 
 {
 	Scsi_CD *cd = cdi->handle;
 	struct packet_command cgc;
-	char *buffer = kmalloc(32, GFP_KERNEL | SR_GFP_DMA(cd));
+	struct scsi_device *dev = cd->device;
+	char *buffer = blk_kmalloc(dev->request_queue, 32, GFP_KERNEL);
 	int result;
 
 	if (!buffer)
@@ -405,7 +401,7 @@ int sr_get_mcn(struct cdrom_device_info 
 	memcpy(mcn->medium_catalog_number, buffer + 9, 13);
 	mcn->medium_catalog_number[13] = 0;
 
-	kfree(buffer);
+	blk_kfree(buffer, 32);
 	return result;
 }
 
@@ -564,7 +560,7 @@ int sr_is_xa(Scsi_CD *cd)
 	if (!xa_test)
 		return 0;
 
-	raw_sector = kmalloc(2048, GFP_KERNEL | SR_GFP_DMA(cd));
+	raw_sector = blk_kmalloc(cd->device->request_queue, 2048, GFP_KERNEL);
 	if (!raw_sector)
 		return -ENOMEM;
 	if (0 == sr_read_sector(cd, cd->ms_offset + 16,
@@ -574,7 +570,7 @@ int sr_is_xa(Scsi_CD *cd)
 		/* read a raw sector failed for some reason. */
 		is_xa = -1;
 	}
-	kfree(raw_sector);
+	blk_kfree(raw_sector, 2048);
 #ifdef DEBUG
 	printk("%s: sr_is_xa: %d\n", cd->cdi.name, is_xa);
 #endif
Index: linux/drivers/scsi/sr.c
===================================================================
--- linux.orig/drivers/scsi/sr.c
+++ linux/drivers/scsi/sr.c
@@ -674,7 +674,8 @@ static void get_sectorsize(struct scsi_c
 	int sector_size;
 	struct request_queue *queue;
 
-	buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
+	queue = cd->device->request_queue;
+	buffer = blk_kmalloc(queue, 512, GFP_KERNEL);
 	if (!buffer)
 		goto Enomem;
 
@@ -739,10 +740,9 @@ static void get_sectorsize(struct scsi_c
 		set_capacity(cd->disk, cd->capacity);
 	}
 
-	queue = cd->device->request_queue;
 	blk_queue_hardsect_size(queue, sector_size);
 out:
-	kfree(buffer);
+	blk_kfree(buffer, 512);
 	return;
 
 Enomem:
@@ -772,7 +772,7 @@ static void get_capabilities(struct scsi
 
 
 	/* allocate transfer buffer */
-	buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
+	buffer = blk_kmalloc(cd->device->request_queue, 512, GFP_KERNEL);
 	if (!buffer) {
 		printk(KERN_ERR "sr: out of memory.\n");
 		return;
@@ -792,7 +792,7 @@ static void get_capabilities(struct scsi
 				 CDC_DVD | CDC_DVD_RAM |
 				 CDC_SELECT_DISC | CDC_SELECT_SPEED |
 				 CDC_MRW | CDC_MRW_W | CDC_RAM);
-		kfree(buffer);
+		blk_kfree(buffer, 512);
 		printk("%s: scsi-1 drive\n", cd->cdi.name);
 		return;
 	}
@@ -851,7 +851,7 @@ static void get_capabilities(struct scsi
 		cd->device->writeable = 1;
 	}
 
-	kfree(buffer);
+	blk_kfree(buffer, 512);
 }
 
 /*
Index: linux/drivers/scsi/sr_vendor.c
===================================================================
--- linux.orig/drivers/scsi/sr_vendor.c
+++ linux/drivers/scsi/sr_vendor.c
@@ -117,7 +117,7 @@ int sr_set_blocklength(Scsi_CD *cd, int 
 		density = (blocklength > 2048) ? 0x81 : 0x83;
 #endif
 
-	buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
+	buffer = blk_kmalloc(cd->device->request_queue, 512, GFP_KERNEL);
 	if (!buffer)
 		return -ENOMEM;
 
@@ -146,7 +146,7 @@ int sr_set_blocklength(Scsi_CD *cd, int 
 		printk("%s: switching blocklength to %d bytes failed\n",
 		       cd->cdi.name, blocklength);
 #endif
-	kfree(buffer);
+	blk_kfree(buffer, 512);
 	return rc;
 }
 
@@ -164,7 +164,7 @@ int sr_cd_check(struct cdrom_device_info
 	if (cd->cdi.mask & CDC_MULTI_SESSION)
 		return 0;
 
-	buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
+	buffer = blk_kmalloc(cd->device->request_queue, 512, GFP_KERNEL);
 	if (!buffer)
 		return -ENOMEM;
 
@@ -323,6 +323,6 @@ int sr_cd_check(struct cdrom_device_info
 		printk(KERN_DEBUG "%s: multisession offset=%lu\n",
 		       cd->cdi.name, sector);
 #endif
-	kfree(buffer);
+	blk_kfree(buffer, 512);
 	return rc;
 }
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux