if (p != metadata.end()) {
life_expectancy_stamp.parse(p->second);
}
+ p = metadata.find("wear_level");
+ if (p != metadata.end()) {
+ wear_level = atof(p->second.c_str());
+ }
}
void DeviceState::set_life_expectancy(utime_t from, utime_t to, utime_t now)
metadata.erase("life_expectancy_stamp");
}
+void DeviceState::set_wear_level(float wear)
+{
+ wear_level = wear;
+ if (wear >= 0) {
+ metadata["wear_level"] = stringify(wear);
+ } else {
+ metadata.erase("wear_level");
+ }
+}
+
string DeviceState::get_life_expectancy_str(utime_t now) const
{
if (life_expectancy.first == utime_t()) {
f->dump_stream("life_expectancy_stamp")
<< life_expectancy_stamp;
}
+ if (wear_level >= 0) {
+ f->dump_float("wear_level", wear_level);
+ }
}
void DeviceState::print(ostream& out) const
<< life_expectancy.second
<< " (as of " << life_expectancy_stamp << ")\n";
}
+ if (wear_level >= 0) {
+ out << "wear_level " << wear_level << "\n";
+ }
}
void DaemonStateIndex::insert(DaemonStatePtr dm)
pair<utime_t,utime_t> life_expectancy; ///< when device failure is expected
utime_t life_expectancy_stamp; ///< when life expectency was recorded
+ float wear_level = -1; ///< SSD wear level (negative if unknown)
void set_metadata(map<string,string>&& m);
void set_life_expectancy(utime_t from, utime_t to, utime_t now);
void rm_life_expectancy();
+ void set_wear_level(float wear);
+
string get_life_expectancy_str(utime_t now) const;
/// true of we can be safely forgotten/removed from memory