scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL
PATCH 1/1 scsi_scan: Convert GFP_ATOMIC to GFP_KERNEL
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.
drivers/scsi/scsi_scan.c +4 -6
@@ -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;
Signature · 4 lines
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."
James Bottomley
maintainerQuoted 3 lines · Matthew Wilcox
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.
Quoted 2 lines
Also remove the
GFP_DMAflag. 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