Initialise scatter/gather list in sg driver
PATCH 1/1 Initialise scatter/gather list in sg driver
After turning on DEBUG_SG I hit a fail:
kernel BUG at include/linux/scatterlist.h:50!
ata_qc_issue
ata_scsi_translate
ipr_queuecommand
scsi_dispatch_cmd
scsi_request_fn
elv_insert
blk_execute_rq_nowait
blk_execute_rq
sg_io
scsi_cmd_ioctl
cdrom_ioctl
sr_block_ioctl
blkdev_driver_ioctl
blkdev_ioctl
block_ioctl
do_ioctl
vfs_ioctl
sys_ioctl
sg_ioctl_trans
It looks like ata_sg_setup is working on an uninitialised sg table. Call sg_init_table to initialise it before use.
---
Jens this is against your sg branch. This fixes the fail but Id appreciate a confirmation that it's the right fix :)
drivers/ata/libata-core.c +1 -0
@@ -4689,6 +4689,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)* data in this function or read data in ata_sg_clean. */ offset = lsg->offset + lsg->length - qc->pad_len; +sg_init_table (psg,1 );sg_set_page (psg,nth_page (sg_page (lsg), offset >>PAGE_SHIFT ), qc->pad_len,offset_in_page (offset));
PATCH 1/1 Initialise scatter/gather list in ata_sg_setup
(Sorry the subject was incorrect)...
After turning on DEBUG_SG I hit a fail:
kernel BUG at include/linux/scatterlist.h:50!
ata_qc_issue
ata_scsi_translate
ipr_queuecommand
scsi_dispatch_cmd
scsi_request_fn
elv_insert
blk_execute_rq_nowait
blk_execute_rq
sg_io
scsi_cmd_ioctl
cdrom_ioctl
sr_block_ioctl
blkdev_driver_ioctl
blkdev_ioctl
block_ioctl
do_ioctl
vfs_ioctl
sys_ioctl
sg_ioctl_trans
It looks like ata_sg_setup is working on an uninitialised sg table. Call sg_init_table to initialise it before use.
---
Jens this is against your sg branch. This fixes the fail but Id appreciate a confirmation that it's the right fix :)
drivers/ata/libata-core.c +1 -0
@@ -4689,6 +4689,7 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)* data in this function or read data in ata_sg_clean. */ offset = lsg->offset + lsg->length - qc->pad_len; +sg_init_table (psg,1 );sg_set_page (psg,nth_page (sg_page (lsg), offset >>PAGE_SHIFT ), qc->pad_len,offset_in_page (offset));
Re: [PATCH] Initialise scatter/gather list in ata_sg_setup
Quoted 27 lines · Anton Blanchard
(Sorry the subject was incorrect)...
After turning on
DEBUG_SGI hit a fail:kernel BUG at
include/linux/scatterlist.h:50!
ata_qc_issue
ata_scsi_translate
ipr_queuecommand
scsi_dispatch_cmd
scsi_request_fn
elv_insert
blk_execute_rq_nowait
blk_execute_rq
sg_io
scsi_cmd_ioctl
cdrom_ioctl
sr_block_ioctl
blkdev_driver_ioctl
blkdev_ioctl
block_ioctl
do_ioctl
vfs_ioctl
sys_ioctl
sg_ioctl_trans
Quoted 8 lines
It looks like
ata_sg_setupis working on an uninitialised sg table. Callsg_init_tableto initialise it before use.Signed-off-by Anton Blanchard <[email protected]>---
Jens this is against your sg branch. This fixes the fail but Id appreciate a confirmation that it's the right fix :)
The patch looks OK, you could also get away with just doing that sg_init_table() on qc init/alloc.
Signature · 1 line
Jens Axboe