ANDROID: uid_sys_stats: account for fsync syscalls
authorJin Qian <jinqian@google.com>
Thu, 2 Mar 2017 21:39:43 +0000 (13:39 -0800)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 10 Apr 2017 07:42:16 +0000 (13:12 +0530)
Change-Id: Ie888d8a0f4ec7a27dea86dc4afba8e6fd4203488
Signed-off-by: Jin Qian <jinqian@google.com>
drivers/misc/uid_sys_stats.c

index 7b746acf416c9e9034a5b6d39fd1e8c63d387375..4988e323cf02b0784aaff86512c93f4e78153a0c 100644 (file)
@@ -39,6 +39,7 @@ struct io_stats {
        u64 write_bytes;
        u64 rchar;
        u64 wchar;
+       u64 fsync;
 };
 
 #define UID_STATE_FOREGROUND   0
@@ -220,6 +221,7 @@ static void add_uid_io_curr_stats(struct uid_entry *uid_entry,
        io_curr->write_bytes += compute_write_bytes(task);
        io_curr->rchar += task->ioac.rchar;
        io_curr->wchar += task->ioac.wchar;
+       io_curr->fsync += task->ioac.syscfs;
 }
 
 static void clean_uid_io_last_stats(struct uid_entry *uid_entry,
@@ -231,6 +233,7 @@ static void clean_uid_io_last_stats(struct uid_entry *uid_entry,
        io_last->write_bytes -= compute_write_bytes(task);
        io_last->rchar -= task->ioac.rchar;
        io_last->wchar -= task->ioac.wchar;
+       io_last->fsync -= task->ioac.syscfs;
 }
 
 static void update_io_stats_locked(void)
@@ -267,11 +270,13 @@ static void update_io_stats_locked(void)
                        io_curr->write_bytes - io_last->write_bytes;
                io_bucket->rchar += io_curr->rchar - io_last->rchar;
                io_bucket->wchar += io_curr->wchar - io_last->wchar;
+               io_bucket->fsync += io_curr->fsync - io_last->fsync;
 
                io_last->read_bytes = io_curr->read_bytes;
                io_last->write_bytes = io_curr->write_bytes;
                io_last->rchar = io_curr->rchar;
                io_last->wchar = io_curr->wchar;
+               io_last->fsync = io_curr->fsync;
        }
 }
 
@@ -285,7 +290,7 @@ static int uid_io_show(struct seq_file *m, void *v)
        update_io_stats_locked();
 
        hash_for_each(hash_table, bkt, uid_entry, hash) {
-               seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu\n",
+               seq_printf(m, "%d %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu\n",
                        uid_entry->uid,
                        uid_entry->io[UID_STATE_FOREGROUND].rchar,
                        uid_entry->io[UID_STATE_FOREGROUND].wchar,
@@ -294,7 +299,9 @@ static int uid_io_show(struct seq_file *m, void *v)
                        uid_entry->io[UID_STATE_BACKGROUND].rchar,
                        uid_entry->io[UID_STATE_BACKGROUND].wchar,
                        uid_entry->io[UID_STATE_BACKGROUND].read_bytes,
-                       uid_entry->io[UID_STATE_BACKGROUND].write_bytes);
+                       uid_entry->io[UID_STATE_BACKGROUND].write_bytes,
+                       uid_entry->io[UID_STATE_FOREGROUND].fsync,
+                       uid_entry->io[UID_STATE_BACKGROUND].fsync);
        }
 
        mutex_unlock(&uid_lock);