Rudimentary TRIM support.
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.
Showing with 334 additions and 177 deletions