• Mike Hibler's avatar
    Rudimentary TRIM support. · bdde40fe
    Mike Hibler authored
    We pass through a flag in the tmcd loadinfo call to tell whether to attempt
    to do a TRIM when loading the disk (or after loading the disk). If TRIM=1
    then we do so.
    Since it is not clear from what I have read whether repeated TRIMming is
    a detriment to SSD life, we throttle it as follows:
    1. We don't TRIM at all unless the sitevariable general/bootdisk_trim_interval
       is non zero. If it is set, we will wait at least that many seconds after
       the previous TRIM before we do it again.
    2. We keep track of the last trim via the node_attribute "bootdisk_lasttrim"
       which is a unix timestamp of the last time that tmcd responded to a
       loadinfo request in which it returned TRIM=1.
    2. We track, on a per-node basis, whether the boot disk should be TRIMmed
       or not. If the node or node-type attribute "bootdisk_trim" is non-zero,
       we will attempt a trim if the interval has passed since the last trim.
    So, we never trim if the sitevariable is 0 (the default value). If it is
    non-zero, we only trim the boot disk of those nodes that have the node or
    node_type attribute set and only after a sufficient interval has passed.
    This does not address non-boot disks, but currently frisbee won't mess
    with any other disk anyway. Eventually, we will have to have per-disk or
    per-disktype attributes if we want to do this better.
tmcd.c 329 KB