[External] : Re: [bug-report] 5-9% FIO randomwrite ext4 perf regression on 6.12.y kernel

Saeed Mirzamohammadi saeed.mirzamohammadi at oracle.com
Mon Nov 25 10:28:35 PST 2024



> On Nov 22, 2024, at 1:09 PM, Keith Busch <kbusch at kernel.org> wrote:
> 
> On Fri, Nov 22, 2024 at 06:26:46PM +0000, Saeed Mirzamohammadi wrote:
>> FYI, Tried disabling write zeros but still getting the same errors:
>> [ 326.097275] operation not supported error, dev nvme2n1, sector 10624 op 0x9:(WRITE_ZEROES) flags 0x800 phys_seg 0 prio class 0
>> [ 338.496217] nvme0n1: Dataset Management(0x9) @ LBA 10928, 256 blocks, Invalid Command Opcode (sct 0x0 / sc 0x1) DNR
>> ... 
>> 
>> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
>> index d3bde17c818d5..ad2ce6008062e 100644
>> --- a/drivers/nvme/host/pci.c
>> +++ b/drivers/nvme/host/pci.c
>> @@ -3425,7 +3425,8 @@ static const struct pci_device_id nvme_id_table[] = {
>>                .driver_data = NVME_QUIRK_STRIPE_SIZE |
>>                                NVME_QUIRK_DEALLOCATE_ZEROES |
>>                                NVME_QUIRK_IGNORE_DEV_SUBNQN |
>> -                               NVME_QUIRK_BOGUS_NID, },
>> +                               NVME_QUIRK_BOGUS_NID |
>> +                               NVME_QUIRK_DISABLE_WRITE_ZEROES, },
>>        { PCI_VDEVICE(INTEL, 0x0a55),   /* Dell Express Flash P4600 */
>>                .driver_data = NVME_QUIRK_STRIPE_SIZE |
>>                                NVME_QUIRK_DEALLOCATE_ZEROES, },
> 
> Could you instead try deleting the NVME_QUIRK_DEALLOCATE_ZEROES quirk
> for this device? The driver apparently uses this to assume you meant to
> do a Discard, but it sounds like the device wants an actual Write Zeroes
> command here.

Deleting the NVME_QUIRK_DEALLOCATE_ZEROES recovers the performance.

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index d3bde17c818d5..09f6fce2fec54 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -3423,7 +3423,6 @@ static const struct pci_device_id nvme_id_table[] = {
                                NVME_QUIRK_DEALLOCATE_ZEROES, },
        { PCI_VDEVICE(INTEL, 0x0a54),   /* Intel P4500/P4600 */
                .driver_data = NVME_QUIRK_STRIPE_SIZE |
-                               NVME_QUIRK_DEALLOCATE_ZEROES |
                                NVME_QUIRK_IGNORE_DEV_SUBNQN |
                                NVME_QUIRK_BOGUS_NID, },
        { PCI_VDEVICE(INTEL, 0x0a55),   /* Dell Express Flash P4600 */







More information about the Linux-nvme mailing list