Re: [PATCH V2 2/7] Cleancache (was Transcendent Memory): core files
From: Nitin Gupta <hidden>
Date: 2010-06-10 01:41:52
Also in:
linux-btrfs, linux-fsdevel, linux-mm, lkml, ocfs2-devel
Hi, On 05/28/2010 11:05 PM, Dan Magenheimer wrote:
[PATCH V2 2/7] Cleancache (was Transcendent Memory): core files
I just finished a rough (but working) implementation of in-kernel page cache compression backend (called zcache). During this work, I found some issues with cleancache, mostly related to (lack of) comments/documentation:
+ +static inline int cleancache_init_fs(size_t pagesize) +
- It is not very obvious that this function is called when an instance of cleancache supported filesystem is *mounted*. Initially, I thought this is called which any such filesystem module is loaded. - It seems that returning pool_id of 0 is considered as error condition (as it appears from deactivate_locked_super() changes). This seems weird; I think only negative pool_id should considered as error. Anyway, please add function comments for these.
+int __cleancache_get_page(struct page *page)
+{
+ int ret = 0;
+ int pool_id = page->mapping->host->i_sb->cleancache_poolid;
+
+ if (pool_id >= 0) {
+ ret = (*cleancache_ops->get_page)(pool_id,
+ page->mapping->host->i_ino,
+ page->index,
+ page);
+ if (ret == CLEANCACHE_GET_PAGE_SUCCESS)
+ succ_gets++;
+ else
+ failed_gets++;
+ }
+ return ret;
+}It seems "non-standard" to use '1' as success code. You could simply use 0 for success and negative error code as failure. Then you can also get rid of CLEANCACHE_GET_PAGE_SUCCESS.
+ +int __cleancache_put_page(struct page *page)
What return values stands for successful put? 1? Anyway, following the same, 0 for success, negative codes for errors, seems to be better.
+ +int __cleancache_flush_page(struct address_space *mapping, struct page *page)
+int __cleancache_flush_inode(struct address_space *mapping)
Return values for all the flush functions is ignored everywhere, so why not make them return void instead?
+static inline void cleancache_flush_fs(int pool_id)
Like init_fs, please document that it is called when a cleancache aware filesystem is unmounted (or in other cases too?). Page cache compression was a long-pending project. I'm glad its coming into shape with the help of cleancache :) Thanks, Nitin