linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL
@ 2008-02-20 18:10 Matthew Wilcox
  2008-02-20 19:45 ` James Bottomley
  0 siblings, 1 reply; 2+ messages in thread
From: Matthew Wilcox @ 2008-02-20 18:10 UTC (permalink / raw)
  To: linux-scsi


There is no need to allocate this memory atomically.  There is no problem
with sleeping during a bus scan, and it's actually causing problems
for libata.

Also remove the GFP_DMA flag.  If it's needed, the block layer will
bounce-buffer it.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>

diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 1dc165a..98c66bd 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -242,7 +242,7 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
 	extern void scsi_evt_thread(struct work_struct *work);
 
 	sdev = kzalloc(sizeof(*sdev) + shost->transportt->device_size,
-		       GFP_ATOMIC);
+		       GFP_KERNEL);
 	if (!sdev)
 		goto out;
 
@@ -747,7 +747,7 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
 	 */
 	sdev->inquiry = kmemdup(inq_result,
 				max_t(size_t, sdev->inquiry_len, 36),
-				GFP_ATOMIC);
+				GFP_KERNEL);
 	if (sdev->inquiry == NULL)
 		return SCSI_SCAN_NO_RESPONSE;
 
@@ -1010,8 +1010,7 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
 	if (!sdev)
 		goto out;
 
-	result = kmalloc(result_len, GFP_ATOMIC |
-			((shost->unchecked_isa_dma) ? __GFP_DMA : 0));
+	result = kmalloc(result_len, GFP_KERNEL);
 	if (!result)
 		goto out_free_sdev;
 
@@ -1328,8 +1327,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
 	 * prevent us from finding any LUNs on this target.
 	 */
 	length = (max_scsi_report_luns + 1) * sizeof(struct scsi_lun);
-	lun_data = kmalloc(length, GFP_ATOMIC |
-			   (sdev->host->unchecked_isa_dma ? __GFP_DMA : 0));
+	lun_data = kmalloc(length, GFP_KERNEL);
 	if (!lun_data) {
 		printk(ALLOC_FAILURE_MSG, __FUNCTION__);
 		goto out;

-- 
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL
  2008-02-20 18:10 [PATCH] scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL Matthew Wilcox
@ 2008-02-20 19:45 ` James Bottomley
  0 siblings, 0 replies; 2+ messages in thread
From: James Bottomley @ 2008-02-20 19:45 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: linux-scsi


On Wed, 2008-02-20 at 11:10 -0700, Matthew Wilcox wrote:
> There is no need to allocate this memory atomically.  There is no problem
> with sleeping during a bus scan, and it's actually causing problems
> for libata.

This bit is fine.

> Also remove the GFP_DMA flag.  If it's needed, the block layer will
> bounce-buffer it.

Just because the block layer is capable of doing it doesn't mean we
should automatically force it.  Bounce buffers are scarce resources, and
since we know they're required and we know that kmalloc allocates from
the top of its pools, and so will *always* require bouncing, doesn't it
make sense simply to save it the trouble?

James



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-02-20 19:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-20 18:10 [PATCH] scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL Matthew Wilcox
2008-02-20 19:45 ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).