Signed-off-by: Florian Schmaus <[email protected]>
---
 drivers/staging/zcache/zcache-main.c |   54 ++++++++++++++++++++++------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/drivers/staging/zcache/zcache-main.c 
b/drivers/staging/zcache/zcache-main.c
index 1bece03..d2f9d9e 100644
--- a/drivers/staging/zcache/zcache-main.c
+++ b/drivers/staging/zcache/zcache-main.c
@@ -95,25 +95,7 @@ enum comp_op {
 
 static inline int zcache_comp_op(enum comp_op op,
                                const u8 *src, unsigned int slen,
-                               u8 *dst, unsigned int *dlen)
-{
-       struct crypto_comp *tfm;
-       int ret;
-
-       BUG_ON(!zcache_comp_pcpu_tfms);
-       tfm = *per_cpu_ptr(zcache_comp_pcpu_tfms, get_cpu());
-       BUG_ON(!tfm);
-       switch (op) {
-       case ZCACHE_COMPOP_COMPRESS:
-               ret = crypto_comp_compress(tfm, src, slen, dst, dlen);
-               break;
-       case ZCACHE_COMPOP_DECOMPRESS:
-               ret = crypto_comp_decompress(tfm, src, slen, dst, dlen);
-               break;
-       }
-       put_cpu();
-       return ret;
-}
+                                u8 *dst, unsigned int *dlen);
 
 /**********
  * Compression buddies ("zbud") provides for packing two (or, possibly
@@ -1057,6 +1039,8 @@ static atomic_t zcache_curr_obj_count = ATOMIC_INIT(0);
 static unsigned long zcache_curr_obj_count_max;
 static atomic_t zcache_curr_objnode_count = ATOMIC_INIT(0);
 static unsigned long zcache_curr_objnode_count_max;
+static atomic_t zcache_compress_count = ATOMIC_INIT(0);
+static atomic_t zcache_decompress_count = ATOMIC_INIT(0);
 
 /*
  * to avoid memory allocation recursion (e.g. due to direct reclaim), we
@@ -1521,6 +1505,8 @@ ZCACHE_SYSFS_RO_ATOMIC(zbud_curr_raw_pages);
 ZCACHE_SYSFS_RO_ATOMIC(zbud_curr_zpages);
 ZCACHE_SYSFS_RO_ATOMIC(curr_obj_count);
 ZCACHE_SYSFS_RO_ATOMIC(curr_objnode_count);
+ZCACHE_SYSFS_RO_ATOMIC(compress_count);
+ZCACHE_SYSFS_RO_ATOMIC(decompress_count);
 ZCACHE_SYSFS_RO_CUSTOM(zbud_unbuddied_list_counts,
                        zbud_show_unbuddied_list_counts);
 ZCACHE_SYSFS_RO_CUSTOM(zbud_cumul_chunk_counts,
@@ -1564,6 +1550,8 @@ static struct attribute *zcache_attrs[] = {
        &zcache_zv_max_mean_zsize_attr.attr,
        &zcache_zv_page_count_policy_percent_attr.attr,
        &zcache_freeze_attr.attr,
+       &zcache_compress_count_attr.attr,
+       &zcache_decompress_count_attr.attr,
        NULL,
 };
 
@@ -1574,6 +1562,34 @@ static struct attribute_group zcache_attr_group = {
 
 #endif /* CONFIG_SYSFS */
 
+static inline int zcache_comp_op(enum comp_op op,
+                               const u8 *src, unsigned int slen,
+                                u8 *dst, unsigned int *dlen)
+{
+       struct crypto_comp *tfm;
+       int ret;
+
+       BUG_ON(!zcache_comp_pcpu_tfms);
+       tfm = *per_cpu_ptr(zcache_comp_pcpu_tfms, get_cpu());
+       BUG_ON(!tfm);
+       switch (op) {
+       case ZCACHE_COMPOP_COMPRESS:
+               ret = crypto_comp_compress(tfm, src, slen, dst, dlen);
+#ifdef CONFIG_SYSFS
+               atomic_inc(&zcache_compress_count);
+#endif
+               break;
+       case ZCACHE_COMPOP_DECOMPRESS:
+               ret = crypto_comp_decompress(tfm, src, slen, dst, dlen);
+#ifdef CONFIG_SYSFS
+               atomic_inc(&zcache_decompress_count);
+#endif
+               break;
+       }
+       put_cpu();
+       return ret;
+}
+
 /*
  * zcache shrinker interface (only useful for ephemeral pages, so zbud only)
  */
-- 
1.7.5.4

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to