lkml.org 
[lkml]   [2021]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 54/64] fscache, cachefiles: Display stat of culling events
    From
    Date
    Add a stat counter of culling events whereby the cache backend culls a file
    to make space (when asked by cachefilesd in this case) and display in
    /proc/fs/fscache/stats.

    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: linux-cachefs@redhat.com
    ---

    fs/cachefiles/namei.c | 1 +
    fs/fscache/stats.c | 7 +++++--
    include/linux/fscache-cache.h | 3 +++
    3 files changed, 9 insertions(+), 2 deletions(-)

    diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
    index 7e24a7a2234d..a651da35dcd0 100644
    --- a/fs/cachefiles/namei.c
    +++ b/fs/cachefiles/namei.c
    @@ -803,6 +803,7 @@ int cachefiles_cull(struct cachefiles_cache *cache, struct dentry *dir,
    if (ret < 0)
    goto error;

    + fscache_count_culled();
    dput(victim);
    _leave(" = 0");
    return 0;
    diff --git a/fs/fscache/stats.c b/fs/fscache/stats.c
    index db2f4e225dd9..fc94e5e79f1c 100644
    --- a/fs/fscache/stats.c
    +++ b/fs/fscache/stats.c
    @@ -46,6 +46,8 @@ atomic_t fscache_n_no_write_space;
    EXPORT_SYMBOL(fscache_n_no_write_space);
    atomic_t fscache_n_no_create_space;
    EXPORT_SYMBOL(fscache_n_no_create_space);
    +atomic_t fscache_n_culled;
    +EXPORT_SYMBOL(fscache_n_culled);

    /*
    * display the general statistics
    @@ -86,9 +88,10 @@ int fscache_stats_show(struct seq_file *m, void *v)
    atomic_read(&fscache_n_relinquishes_retire),
    atomic_read(&fscache_n_relinquishes_dropped));

    - seq_printf(m, "NoSpace: nwr=%u ncr=%u\n",
    + seq_printf(m, "NoSpace: nwr=%u ncr=%u cull=%u\n",
    atomic_read(&fscache_n_no_write_space),
    - atomic_read(&fscache_n_no_create_space));
    + atomic_read(&fscache_n_no_create_space),
    + atomic_read(&fscache_n_culled));

    seq_printf(m, "IO : rd=%u wr=%u\n",
    atomic_read(&fscache_n_read),
    diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
    index 1d7d43171243..7665bcab945e 100644
    --- a/include/linux/fscache-cache.h
    +++ b/include/linux/fscache-cache.h
    @@ -188,15 +188,18 @@ extern atomic_t fscache_n_read;
    extern atomic_t fscache_n_write;
    extern atomic_t fscache_n_no_write_space;
    extern atomic_t fscache_n_no_create_space;
    +extern atomic_t fscache_n_culled;
    #define fscache_count_read() atomic_inc(&fscache_n_read)
    #define fscache_count_write() atomic_inc(&fscache_n_write)
    #define fscache_count_no_write_space() atomic_inc(&fscache_n_no_write_space)
    #define fscache_count_no_create_space() atomic_inc(&fscache_n_no_create_space)
    +#define fscache_count_culled() atomic_inc(&fscache_n_culled)
    #else
    #define fscache_count_read() do {} while(0)
    #define fscache_count_write() do {} while(0)
    #define fscache_count_no_write_space() do {} while(0)
    #define fscache_count_no_create_space() do {} while(0)
    +#define fscache_count_culled() do {} while(0)
    #endif

    #endif /* _LINUX_FSCACHE_CACHE_H */

    \
     
     \ /
      Last update: 2021-11-29 15:38    [W:6.854 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site