Re: use_clustering (sht) bit set to 0 in AHCI ?
From: Jens Axboe <hidden>
Date: 2007-05-21 12:18:20
On Thu, Apr 26 2007, Alok kataria wrote:
Hi Jeff, I recently got a new AHCI disk, and was using the AHCI-libata driver to run this. I noticed that the scattergather lists that were being built for the I/O on this device were just of PAGE_SIZE length, even though i was doing IO on contiguous pages. Through a little instrumentation i figured out that the use_clustering bit in the ahci_sht (scsi_host_template) is set to zero. Due to which we are not putting consecutive bios into one sg in blk_rq_map_sg. I tried changing the clustering bit to 1, but encountered a panic at the initialization of the disks during the bootup process, and so couldn't entirely get hold of the panic mesg. I was wondering, though the max segment size suported with this driver is 65536, why was i not able to feed in bigger SG's to this driver. I searched on the net and the intel ahci arch doc too but couldn't find anything relative to the clustering support for AHCI. It would be great help if you could let me know about the possible problems with clustering on AHCI ? why is it off by default in the driver ? or anything else that might help.
It's a good question. If you look at the documentation, it states that ahci supports up to 64k sg entries and each can have a size of up to 4mb (bits 0 through 21). So as far as I can tell, clustering should work with a segment size up to those 4mb. ahci has always had clustering disabled, perhaps Jeff can expand on why? -- Jens Axboe