aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fscache/stats.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2009-11-19 13:11:45 -0500
committerDavid Howells <dhowells@redhat.com>2009-11-19 13:11:45 -0500
commit60d543ca724be155c2b6166e36a00c80b21bd810 (patch)
tree90ec6edd77ddb7666dbf7069aa2e001f155cea49 /fs/fscache/stats.c
parentd461d26dde901b0523c46b0317e7fccf574a3933 (diff)
FS-Cache: Start processing an object's operations on that object's death
Start processing an object's operations when that object moves into the DYING state as the object cannot be destroyed until all its outstanding operations have completed. Furthermore, make sure that read and allocation operations handle being woken up on a dead object. Such events are recorded in the Allocs.abt and Retrvls.abt statistics as viewable through /proc/fs/fscache/stats. The code for waiting for object activation for the read and allocation operations is also extracted into its own function as it is much the same in all cases, differing only in the stats incremented. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/fscache/stats.c')
-rw-r--r--fs/fscache/stats.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/fscache/stats.c b/fs/fscache/stats.c
index 9e15289eb5c1..05f77caf4a2d 100644
--- a/fs/fscache/stats.c
+++ b/fs/fscache/stats.c
@@ -39,6 +39,7 @@ atomic_t fscache_n_allocs_ok;
39atomic_t fscache_n_allocs_wait; 39atomic_t fscache_n_allocs_wait;
40atomic_t fscache_n_allocs_nobufs; 40atomic_t fscache_n_allocs_nobufs;
41atomic_t fscache_n_allocs_intr; 41atomic_t fscache_n_allocs_intr;
42atomic_t fscache_n_allocs_object_dead;
42atomic_t fscache_n_alloc_ops; 43atomic_t fscache_n_alloc_ops;
43atomic_t fscache_n_alloc_op_waits; 44atomic_t fscache_n_alloc_op_waits;
44 45
@@ -49,6 +50,7 @@ atomic_t fscache_n_retrievals_nodata;
49atomic_t fscache_n_retrievals_nobufs; 50atomic_t fscache_n_retrievals_nobufs;
50atomic_t fscache_n_retrievals_intr; 51atomic_t fscache_n_retrievals_intr;
51atomic_t fscache_n_retrievals_nomem; 52atomic_t fscache_n_retrievals_nomem;
53atomic_t fscache_n_retrievals_object_dead;
52atomic_t fscache_n_retrieval_ops; 54atomic_t fscache_n_retrieval_ops;
53atomic_t fscache_n_retrieval_op_waits; 55atomic_t fscache_n_retrieval_op_waits;
54 56
@@ -188,9 +190,10 @@ static int fscache_stats_show(struct seq_file *m, void *v)
188 atomic_read(&fscache_n_allocs_wait), 190 atomic_read(&fscache_n_allocs_wait),
189 atomic_read(&fscache_n_allocs_nobufs), 191 atomic_read(&fscache_n_allocs_nobufs),
190 atomic_read(&fscache_n_allocs_intr)); 192 atomic_read(&fscache_n_allocs_intr));
191 seq_printf(m, "Allocs : ops=%u owt=%u\n", 193 seq_printf(m, "Allocs : ops=%u owt=%u abt=%u\n",
192 atomic_read(&fscache_n_alloc_ops), 194 atomic_read(&fscache_n_alloc_ops),
193 atomic_read(&fscache_n_alloc_op_waits)); 195 atomic_read(&fscache_n_alloc_op_waits),
196 atomic_read(&fscache_n_allocs_object_dead));
194 197
195 seq_printf(m, "Retrvls: n=%u ok=%u wt=%u nod=%u nbf=%u" 198 seq_printf(m, "Retrvls: n=%u ok=%u wt=%u nod=%u nbf=%u"
196 " int=%u oom=%u\n", 199 " int=%u oom=%u\n",
@@ -201,9 +204,10 @@ static int fscache_stats_show(struct seq_file *m, void *v)
201 atomic_read(&fscache_n_retrievals_nobufs), 204 atomic_read(&fscache_n_retrievals_nobufs),
202 atomic_read(&fscache_n_retrievals_intr), 205 atomic_read(&fscache_n_retrievals_intr),
203 atomic_read(&fscache_n_retrievals_nomem)); 206 atomic_read(&fscache_n_retrievals_nomem));
204 seq_printf(m, "Retrvls: ops=%u owt=%u\n", 207 seq_printf(m, "Retrvls: ops=%u owt=%u abt=%u\n",
205 atomic_read(&fscache_n_retrieval_ops), 208 atomic_read(&fscache_n_retrieval_ops),
206 atomic_read(&fscache_n_retrieval_op_waits)); 209 atomic_read(&fscache_n_retrieval_op_waits),
210 atomic_read(&fscache_n_retrievals_object_dead));
207 211
208 seq_printf(m, "Stores : n=%u ok=%u agn=%u nbf=%u oom=%u\n", 212 seq_printf(m, "Stores : n=%u ok=%u agn=%u nbf=%u oom=%u\n",
209 atomic_read(&fscache_n_stores), 213 atomic_read(&fscache_n_stores),