Merge "storaged: handle negative delta in io usage"
diff --git a/storaged/storaged_uid_monitor.cpp b/storaged/storaged_uid_monitor.cpp
index 3b893b5..49d0d48 100644
--- a/storaged/storaged_uid_monitor.cpp
+++ b/storaged/storaged_uid_monitor.cpp
@@ -204,18 +204,23 @@
}
struct uid_io_usage& usage = curr_io_stats[uid.name];
- usage.bytes[READ][FOREGROUND][charger_stat] +=
- uid.io[FOREGROUND].read_bytes -
+ int64_t fg_rd_delta = uid.io[FOREGROUND].read_bytes -
last_uid_io_stats[uid.uid].io[FOREGROUND].read_bytes;
- usage.bytes[READ][BACKGROUND][charger_stat] +=
- uid.io[BACKGROUND].read_bytes -
+ int64_t bg_rd_delta = uid.io[BACKGROUND].read_bytes -
last_uid_io_stats[uid.uid].io[BACKGROUND].read_bytes;
- usage.bytes[WRITE][FOREGROUND][charger_stat] +=
- uid.io[FOREGROUND].write_bytes -
+ int64_t fg_wr_delta = uid.io[FOREGROUND].write_bytes -
last_uid_io_stats[uid.uid].io[FOREGROUND].write_bytes;
+ int64_t bg_wr_delta = uid.io[BACKGROUND].write_bytes -
+ last_uid_io_stats[uid.uid].io[BACKGROUND].write_bytes;
+
+ usage.bytes[READ][FOREGROUND][charger_stat] +=
+ (fg_rd_delta < 0) ? uid.io[FOREGROUND].read_bytes : fg_rd_delta;
+ usage.bytes[READ][BACKGROUND][charger_stat] +=
+ (bg_rd_delta < 0) ? uid.io[BACKGROUND].read_bytes : bg_rd_delta;
+ usage.bytes[WRITE][FOREGROUND][charger_stat] +=
+ (fg_wr_delta < 0) ? uid.io[FOREGROUND].write_bytes : fg_wr_delta;
usage.bytes[WRITE][BACKGROUND][charger_stat] +=
- uid.io[BACKGROUND].write_bytes -
- last_uid_io_stats[uid.uid].io[BACKGROUND].write_bytes;;
+ (bg_wr_delta < 0) ? uid.io[BACKGROUND].write_bytes : bg_wr_delta;
}
last_uid_io_stats = uid_io_stats;