I’m shopping for a new NVMe SSD drive for my laptop and with the second deciding factor being Linux compatibility, I’d looked up the names of specific drives in the source code of Linux and discovered that their controllers have quirks that have to be worked around.

Now, I figured out more or less how quirks affecting one of the controllers impact its functionality under Linux, but there’s another controller that I have a trouble understanding how disabling the aforementioned command limits the functionality of, if at all; therefore I’d like to ask you all, under what circumstances is the command used by a host and can disabling it lower the performance or power efficiency of an impacted controller/drive?

To be clear, the quirk workaround I’m talking a about is NVME_QUIRK_DISABLE_WRITE_ZEROES.

  • themoonisacheese@sh.itjust.works
    link
    fedilink
    arrow-up
    28
    arrow-down
    1
    ·
    2 years ago

    Considering what specific nvme drive to use on Linux hasn’t been a real problem for at least 5 years, especially if you just plan to stick it in a laptop. Just buy a drive from a reputable brand from a reputable source.

    • ReversalHatchery@beehaw.org
      link
      fedilink
      arrow-up
      3
      ·
      2 years ago

      That’s good news, but what if this affects wear leveling? Or efficiency in some other way, that would result in these dying sooner than expected (still years probably, but… yeah)

        • ReversalHatchery@beehaw.org
          link
          fedilink
          arrow-up
          1
          ·
          2 years ago

          Others may still be interested in longevity. Like me. $55 is, while not expensive, not cheap either for me, or at least not in the way that I would be comfortable replacing it every 1-2 years. I’m not swimming in money at that amount has a better place than a recurring spending. I doubt I am in a minority with this.

          It’s good to know what the quirks mean, and if it means any longevity problem, because if the above turns out as a problem, it may be cheaper in the long term to buy a better drive.

  • MNByChoice@midwest.social
    link
    fedilink
    arrow-up
    8
    ·
    2 years ago

    I am coming at this from a more general angle, so this may not be as applicable.

    When a repeated series of inputs is written to a drive, a number of optimisations can be applied. If the user wants a large number of zeros written, the drive’s firmware can use a short cut. Instead of writing those zeros, it can make a note that a number of blocks, at a location, are all zero.

    This becomes apparent if one runs fio against the raw block devices versus a software later like LVM. Some operations against some layers will be unreasonably fast. There is a lot of nuance to this.

    My read of the quirk is an incompatibility between what Linux expects and the firmware. Enable the quirk only if the dmesg errors are present. Do not expect that the drive has been zeroed. If you want your data secure at disposal of the drive, the then use encryption.

    • swizzle9144@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      2
      ·
      2 years ago

      Thanks a lot! This clarifies it for me, and if I understand correctly, it shouldn’t be a concern for me since my laptop isn’t used for data-intensive computing.

    • forestfuturist@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      What if you try to wipe a NVME-drive for which this quirk is enabled by default in the kernel? Does that mean that even if you used something like the ‘erase device’ function in GNOME Disks on said drive, it would in fact not actually completely zero the drive? What if you use GNOME Disks to wipe a partition on said drive?

      Or does this quirk refer to an entirely different operation?

    • Bitrot@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      10
      ·
      2 years ago

      No, it is referring to the NVMe write zeroes command that is used to set a range of blocks to zero. It seems like it is related to deallocate/TRIM functionality but I can only find documentation about the command without a good definition of why it would be used.

      Some drives say they support it but don’t really, or it negatively affects performance, so they have quirks.

      • forestfuturist@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 years ago

        What if you try to wipe a NVME-drive for which this quirk is enabled by default in the kernel? Does that mean that even if you used something like the ‘erase device’ function in GNOME Disks on said drive, it would in fact not actually completely zero the drive? What if you use GNOME Disks to wipe a partition on said drive?

        Or does this quirk refer to an entirely different operation?

        • Bitrot@lemmy.sdf.org
          link
          fedilink
          English
          arrow-up
          2
          ·
          2 years ago

          Different feature. NVMe drives include a format command that can zero the drive or do a more in depth erasure, newer drives also have the sanitize option. I think this command just lets the system send a bunch of zeroes instead of having to send each one individually.

          • forestfuturist@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            2 years ago

            Thanks for the answer! So do I assume correctly then that things like using the ‘overwrite data’-option when running BleachBit, or wiping/erasing partitions or disks with zeroes in GNOME Disks or GParted actually does zero the data like normal, even if the quirk is enabled?

            • Bitrot@lemmy.sdf.org
              link
              fedilink
              English
              arrow-up
              1
              ·
              2 years ago

              It depends how those tools are working at a lower level. Usually it is better to use a security erase feature in the drive itself, or the NVMe format command. Every drive has some sort of implementation.

              SSDs have a lot of tricks to increase performance and longevity, things like wear leveling or not actually writing all those zeroes to the NAND, so writing all zeroes may leave a lot of data untouched on the actual drive while the firmware keeps a tally.