nilfs2: cleanup multi kmem_cache_{create,destroy} code
PATCH 1/2 nilfs2: cleanup multi kmem_cache_{create,destroy} code
Hi KONISHI Ryusuke,
The following two patches are base on the tip of your nilfs2/for-next branch. A build and simple mount test has been passed.
Thanks,
Li Hong
From 834d30bc730aab19f48474ad77733ef450e96e62 Mon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 00:54:11 +0800
Subject: [PATCH] nilfs2: cleanup multi kmem_cache_{create,destroy} code
This cleanup patch gives several improvements:
- Moving all kmem_cache_{create_destroy} calls into one place, which removes some small function calls, cleans up error check code and clarify the logic.
- Mark all initial code in __init section.
- Remove some very obvious comments.
- Adjust some declarations.
- Fix some space-tab issues.
--- fs/nilfs2/btree.c | 40 ---------------- fs/nilfs2/btree.h | 23 ++++++++- fs/nilfs2/segbuf.c | 25 ---------- fs/nilfs2/segbuf.h | 1 + fs/nilfs2/segment.c | 36 -------------- fs/nilfs2/segment.h | 2 + fs/nilfs2/super.c | 128 ++++++++++++++++++++++++++------------------------ 7 files changed, 90 insertions(+), 165 deletions(-)
fs/nilfs2/btree.c +0 -40
@@ -31,46 +31,6 @@#include "alloc.h" #include "dat.h" -/** -* struct nilfs_btree_path - A path on which B-tree operations are executed -* @bp_bh: buffer head of node block -* @bp_sib_bh: buffer head of sibling node block -* @bp_index: index of child node -* @bp_oldreq: ptr end request for old ptr -* @bp_newreq: ptr alloc request for new ptr -* @bp_op: rebalance operation -*/ -struct nilfs_btree_path { -struct buffer_head *bp_bh; -struct buffer_head *bp_sib_bh; -int bp_index; -union nilfs_bmap_ptr_req bp_oldreq; -union nilfs_bmap_ptr_req bp_newreq; -struct nilfs_btnode_chkey_ctxt bp_ctxt; -void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, -int ,__u64 *,__u64 *); -}; - -/* -* B-tree path operations -*/ - -static struct kmem_cache *nilfs_btree_path_cache; - -int __init nilfs_btree_path_cache_init (void ) -{ - nilfs_btree_path_cache = -kmem_cache_create ("nilfs2_btree_path_cache" , -sizeof (struct nilfs_btree_path ) * -NILFS_BTREE_LEVEL_MAX ,0 ,0 ,NULL ); -return (nilfs_btree_path_cache !=NULL ) ?0 : -ENOMEM ; -} - -void nilfs_btree_path_cache_destroy (void ) -{ -kmem_cache_destroy (nilfs_btree_path_cache); -} -static struct nilfs_btree_path *nilfs_btree_alloc_path (void ) {struct nilfs_btree_path *path;
fs/nilfs2/btree.h +20 -3
@@ -30,9 +30,6 @@#include "btnode.h" #include "bmap.h" -struct nilfs_btree ; -struct nilfs_btree_path ; -/** * struct nilfs_btree - B-tree structure * @bt_bmap: bmap base structure
@@ -41,6 +38,25 @@ struct nilfs_btree {struct nilfs_bmap bt_bmap; }; +/** +* struct nilfs_btree_path - A path on which B-tree operations are executed +* @bp_bh: buffer head of node block +* @bp_sib_bh: buffer head of sibling node block +* @bp_index: index of child node +* @bp_oldreq: ptr end request for old ptr +* @bp_newreq: ptr alloc request for new ptr +* @bp_op: rebalance operation +*/ +struct nilfs_btree_path { +struct buffer_head *bp_bh; +struct buffer_head *bp_sib_bh; +int bp_index; +union nilfs_bmap_ptr_req bp_oldreq; +union nilfs_bmap_ptr_req bp_newreq; +struct nilfs_btnode_chkey_ctxt bp_ctxt; +void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, +int ,__u64 *,__u64 *); +};#define NILFS_BTREE_ROOT_SIZE NILFS_BMAP_SIZE#define NILFS_BTREE_ROOT_NCHILDREN_MAX \
@@ -57,6 +73,7 @@ struct nilfs_btree {#define NILFS_BTREE_KEY_MIN ((__u64)0)#define NILFS_BTREE_KEY_MAX (~(__u64)0) +extern struct kmem_cache *nilfs_btree_path_cache;int nilfs_btree_path_cache_init (void );void nilfs_btree_path_cache_destroy (void );
fs/nilfs2/segbuf.c +0 -25
@@ -39,35 +39,10 @@ struct nilfs_write_info {sector_t blocknr; }; -static int nilfs_segbuf_write (struct nilfs_segment_buffer *segbuf,struct the_nilfs *nilfs);static int nilfs_segbuf_wait (struct nilfs_segment_buffer *segbuf); - -static struct kmem_cache *nilfs_segbuf_cachep; - -static void nilfs_segbuf_init_once (void *obj) -{ -memset (obj,0 ,sizeof (struct nilfs_segment_buffer )); -} - -int __init nilfs_init_segbuf_cache (void ) -{ - nilfs_segbuf_cachep = -kmem_cache_create ("nilfs2_segbuf_cache" , -sizeof (struct nilfs_segment_buffer ), -0 ,SLAB_RECLAIM_ACCOUNT , - nilfs_segbuf_init_once); - -return (nilfs_segbuf_cachep ==NULL ) ? -ENOMEM :0 ; -} - -void nilfs_destroy_segbuf_cache (void ) -{ -kmem_cache_destroy (nilfs_segbuf_cachep); -} -struct nilfs_segment_buffer *nilfs_segbuf_new (struct super_block *sb) {struct nilfs_segment_buffer *segbuf;
fs/nilfs2/segbuf.h +1 -0
@@ -121,6 +121,7 @@ struct nilfs_segment_buffer { b_assoc_buffers))#define NILFS_SEGBUF_BH_IS_LAST (bh, head) ((bh)->b_assoc_buffers.next == head) +extern struct kmem_cache *nilfs_segbuf_cachep;int __init nilfs_init_segbuf_cache (void );void nilfs_destroy_segbuf_cache (void );
fs/nilfs2/segment.c +0 -36
@@ -115,42 +115,6 @@ static void nilfs_dispose_list(struct nilfs_sb_info *, struct list_head *,#define nilfs_cnt32_lt (a, b) nilfs_cnt32_gt(b, a)#define nilfs_cnt32_le (a, b) nilfs_cnt32_ge(b, a) -/* -* Transaction -*/ -static struct kmem_cache *nilfs_transaction_cachep; - -/** -* nilfs_init_transaction_cache - create a cache for nilfs_transaction_info -* -* nilfs_init_transaction_cache() creates a slab cache for the struct -* nilfs_transaction_info. -* -* Return Value: On success, it returns 0. On error, one of the following -* negative error code is returned. -* -* %-ENOMEM - Insufficient memory available. -*/ -int nilfs_init_transaction_cache (void ) -{ - nilfs_transaction_cachep = -kmem_cache_create ("nilfs2_transaction_cache" , -sizeof (struct nilfs_transaction_info ), -0 ,SLAB_RECLAIM_ACCOUNT ,NULL ); -return (nilfs_transaction_cachep ==NULL ) ? -ENOMEM :0 ; -} - -/** -* nilfs_destroy_transaction_cache - destroy the cache for transaction info -* -* nilfs_destroy_transaction_cache() frees the slab cache for the struct -* nilfs_transaction_info. -*/ -void nilfs_destroy_transaction_cache (void ) -{ -kmem_cache_destroy (nilfs_transaction_cachep); -} -static int nilfs_prepare_segment_lock (struct nilfs_transaction_info *ti) {struct nilfs_transaction_info *cur_ti = current->journal_info;
fs/nilfs2/segment.h +2 -0
@@ -219,6 +219,8 @@ enum {*/ #define NILFS_SC_DEFAULT_WATERMARK 3600 +/* super.c */ +extern struct kmem_cache *nilfs_transaction_cachep;/* segment.c */ extern int nilfs_init_transaction_cache (void );
fs/nilfs2/super.c +67 -61
168 lines not on this page · raw message
Signature · 6 lines
1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/2 nilfs2: add a print message after loading nilfs2
From b4e426f77cd05bd6046c1fa67c51ee06368ea23e Mon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 01:23:04 +0800
Subject: [PATCH] nilfs2: add a print message after loading nilfs2
--- fs/nilfs2/super.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
fs/nilfs2/super.c +6 -1
@@ -1186,7 +1186,12 @@ static int __init init_nilfs_fs(void)return err; err =register_filesystem (&nilfs_fs_type); -return err; +if (err) +return err; + +printk (KERN_INFO "nilfs2 file system loaded!\n" ); +return 0 ; + } static void __exit exit_nilfs_fs(void)
Signature · 6 lines
1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] nilfs2: add a print message after loading nilfs2
Hi KONISHI Ryusuke,
Any feedbacks on these patches?
Thanks,
Li Hong
Quoted 32 lines · Li Hong
From
b4e426f77cd05bd6046c1fa67c51ee06368ea23eMon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 01:23:04 +0800
Subject: [PATCH] nilfs2: add a print message after loading nilfs2Signed-off-by Li Hong <[email protected]>--- fs/nilfs2/super.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)fs/nilfs2/super.c +6
-1@@ -1186,7 +1186,12 @@ static int __init init_nilfs_fs(void)return err; err =register_filesystem (&nilfs_fs_type); -return err; +if (err) +return err; + +printk (KERN_INFO "nilfs2 file system loaded!\n" ); +return 0 ; + } static void __exit exit_nilfs_fs(void)Signature · 1 line
1.6.3.3
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] nilfs2: add a print message after loading nilfs2
Quoted 6 lines · Li Hong
Hi KONISHI Ryusuke,
Any feedbacks on these patches?
Thanks,
Li Hong
Well, adding a load message is ok, but it should be more moderate like "nilfs2 file system loaded\n".
I think this sort of change should be discussed in the sub topic mailing list (i.e. linux-nilfs). You don't have to cc every patch to linux-kernel.
And, please include some explanation in the change log to clarify the aim or motivation.
Thanks,
Ryusuke Konishi
Quoted 19 lines · Li Hong
Quoted 18 lines
From
b4e426f77cd05bd6046c1fa67c51ee06368ea23eMon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 01:23:04 +0800
Subject: [PATCH] nilfs2: add a print message after loading nilfs2Signed-off-by Li Hong <[email protected]>--- fs/nilfs2/super.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)fs/nilfs2/super.c +0
-0@@ -1186,7 +1186,12 @@ static int __init init_nilfs_fs(void)return err;
Quoted 6 lines
fs/nilfs2/super.c static int __init init_nilfs_fs(void) · line 1192
Quoted 6 lines
fs/nilfs2/super.c +4
-1err =register_filesystem (&nilfs_fs_type); -return err; +if (err) +return err; + +printk (KERN_INFO "nilfs2 file system loaded!\n" );
printk(KERN_INFO "nilfs2 file system loaded!\n");
Quoted 4 lines
Quoted 4 lines
fs/nilfs2/super.c +2
-0+return 0 ; + }
Quoted 9 lines
Quoted 4 lines
fs/nilfs2/super.c +0
-0static void __exit exit_nilfs_fs(void)Signature · 1 line
1.6.3.3--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/2] nilfs2: add a print message after loading nilfs2
2010/4/8 Ryusuke Konishi <[email protected]>:
Quoted 10 lines · Li Hong
Quoted 6 lines
Hi KONISHI Ryusuke,
Any feedbacks on these patches?
Thanks,
Li HongWell, adding a load message is ok, but it should be more moderate like "nilfs2 file system loaded\n".
Yes. I just thought that printing a message after loading a file system is a practice.
You may choose any string that you think is suitable :)
Quoted 3 lines
I think this sort of change should be discussed in the sub topic mailing list (i.e. linux-nilfs). You don't have to cc every patch to linux-kernel.
Ok. No problem.
Quoted 2 lines
And, please include some explanation in the change log to clarify the aim or motivation.
I took it as a very simple patch and thought a header was enough. I can add more explanations if here has a demand.
Quoted 3 lines
Thanks,
Ryusuke Konishi
Thanks very much,
Li Hong
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): u2p3a3680031004072245t5ea476a5xbd6cbe6d3302de00-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Re: [PATCH 2/2] nilfs2: add a print message after loading nilfs2
Quoted 6 lines · Li Hong
2010/4/8 Ryusuke Konishi <[email protected]>:
Quoted 5 lines · Li Hong
Quoted 4 lines
Hi KONISHI Ryusuke,
Any feedbacks on these patches?
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Thanks,
Li HongWell, adding a load message is ok, but it should be more moderate like "nilfs2 file system loaded\n".
Yes. I just thought that printing a message after loading a file system is a practice.
You may choose any string that you think is suitable :)
How about "NILFS version 2 loaded\n" ?
Seems that most messages have prefix "NILFS: ..." or "NILFS (device %s):".
Quoted 9 lines
Quoted 3 lines
I think this sort of change should be discussed in the sub topic mailing list (i.e. linux-nilfs). You don't have to cc every patch to linux-kernel.
Ok. No problem.
Quoted 2 lines
And, please include some explanation in the change log to clarify the aim or motivation.
I took it as a very simple patch and thought a header was enough. I can add more explanations if here has a demand.
You thought "printing a message after loading a file system is a practice.", so it is the reason :)
Thanks,
Ryusuke Konishi
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH 2/2] nilfs2: add a print message after loading nilfs2
Hi Ryusuke Konishi,
The patch is resent.
Thanks very much for your review and suggestions.
Regards,
Li Hong
------------------ cut here -----------------------
From d5ecb6ca6bafa2c9aa7058aee8918b94eea9b993 Mon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 01:23:04 +0800
Subject: [PATCH] nilfs2: add a print message after loading nilfs2
Printing a message after loading a file system is a practice. Add this to provide a better user-friendly experience.
--- fs/nilfs2/super.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
fs/nilfs2/super.c +6 -1
@@ -1186,7 +1186,12 @@ static int __init init_nilfs_fs(void)return err; err =register_filesystem (&nilfs_fs_type); -return err; +if (err) +return err; + +printk (KERN_INFO "NILFS version 2 loaded\n" ); +return 0 ; + } static void __exit exit_nilfs_fs(void)
Signature · 1 line
1.6.3.3
Quoted 28 lines · Ryusuke Konishi
Quoted 6 lines · Li Hong
2010/4/8 Ryusuke Konishi <[email protected]>:
Quoted 5 lines · Li Hong
Quoted 4 lines
Hi KONISHI Ryusuke,
Any feedbacks on these patches?
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Thanks,
Li HongWell, adding a load message is ok, but it should be more moderate like "nilfs2 file system loaded\n".
Yes. I just thought that printing a message after loading a file system is a practice.
You may choose any string that you think is suitable :)How about "NILFS version 2 loaded\n" ?
Seems that most messages have prefix "NILFS: ..." or "NILFS (device %s):".
Quoted 7 lines
Quoted 3 lines
I think this sort of change should be discussed in the sub topic mailing list (i.e. linux-nilfs). You don't have to cc every patch to linux-kernel.
Ok. No problem.
Quoted 2 lines
And, please include some explanation in the change log to clarify the aim or motivation.
Quoted 8 lines
Quoted 2 lines
I took it as a very simple patch and thought a header was enough. I can add more explanations if here has a demand.
You thought "printing a message after loading a file system is a practice.", so it is the reason :)
Thanks,
Ryusuke Konishi
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 20 lines · Li Hong
Hi KONISHI Ryusuke,
The following two patches are base on the tip of your nilfs2/for-next branch. A build and simple mount test has been passed.
Thanks,
Li HongFrom
834d30bc730aab19f48474ad77733ef450e96e62Mon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 00:54:11 +0800
Subject: [PATCH] nilfs2: cleanup multi kmem_cache_{create,destroy} codeThis cleanup patch gives several improvements:
- Moving all kmem_cache_{create_destroy} calls into one place, which removes some small function calls, cleans up error check code and clarify the logic.
- Mark all initial code in
__initsection.
Quoted 7 lines
- Remove some very obvious comments.
- Adjust some declarations.
- Fix some space-tab issues.
Signed-off-by Li Hong <[email protected]>
OK, will queue it up.
Thanks,
Ryusuke Konishi
Quoted 405 lines
--- fs/nilfs2/btree.c | 40 ---------------- fs/nilfs2/btree.h | 23 ++++++++- fs/nilfs2/segbuf.c | 25 ---------- fs/nilfs2/segbuf.h | 1 + fs/nilfs2/segment.c | 36 -------------- fs/nilfs2/segment.h | 2 + fs/nilfs2/super.c | 128 ++++++++++++++++++++++++++------------------------ 7 files changed, 90 insertions(+), 165 deletions(-)fs/nilfs2/btree.c +0
-40@@ -31,46 +31,6 @@#include "alloc.h" #include "dat.h" -/** -* struct nilfs_btree_path - A path on which B-tree operations are executed -* @bp_bh: buffer head of node block -* @bp_sib_bh: buffer head of sibling node block -* @bp_index: index of child node -* @bp_oldreq: ptr end request for old ptr -* @bp_newreq: ptr alloc request for new ptr -* @bp_op: rebalance operation -*/ -struct nilfs_btree_path { -struct buffer_head *bp_bh; -struct buffer_head *bp_sib_bh; -int bp_index; -union nilfs_bmap_ptr_req bp_oldreq; -union nilfs_bmap_ptr_req bp_newreq; -struct nilfs_btnode_chkey_ctxt bp_ctxt; -void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, -int ,__u64 *,__u64 *); -}; - -/* -* B-tree path operations -*/ - -static struct kmem_cache *nilfs_btree_path_cache; - -int __init nilfs_btree_path_cache_init (void ) -{ - nilfs_btree_path_cache = -kmem_cache_create ("nilfs2_btree_path_cache" , -sizeof (struct nilfs_btree_path ) * -NILFS_BTREE_LEVEL_MAX ,0 ,0 ,NULL ); -return (nilfs_btree_path_cache !=NULL ) ?0 : -ENOMEM ; -} - -void nilfs_btree_path_cache_destroy (void ) -{ -kmem_cache_destroy (nilfs_btree_path_cache); -} -static struct nilfs_btree_path *nilfs_btree_alloc_path (void ) {struct nilfs_btree_path *path;fs/nilfs2/btree.h +20
-3@@ -30,9 +30,6 @@#include "btnode.h" #include "bmap.h" -struct nilfs_btree ; -struct nilfs_btree_path ; -/** * struct nilfs_btree - B-tree structure * @bt_bmap: bmap base structure @@ -41,6 +38,25 @@ struct nilfs_btree {struct nilfs_bmap bt_bmap; }; +/** +* struct nilfs_btree_path - A path on which B-tree operations are executed +* @bp_bh: buffer head of node block +* @bp_sib_bh: buffer head of sibling node block +* @bp_index: index of child node +* @bp_oldreq: ptr end request for old ptr +* @bp_newreq: ptr alloc request for new ptr +* @bp_op: rebalance operation +*/ +struct nilfs_btree_path { +struct buffer_head *bp_bh; +struct buffer_head *bp_sib_bh; +int bp_index; +union nilfs_bmap_ptr_req bp_oldreq; +union nilfs_bmap_ptr_req bp_newreq; +struct nilfs_btnode_chkey_ctxt bp_ctxt; +void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, +int ,__u64 *,__u64 *); +};#define NILFS_BTREE_ROOT_SIZE NILFS_BMAP_SIZE#define NILFS_BTREE_ROOT_NCHILDREN_MAX \@@ -57,6 +73,7 @@ struct nilfs_btree {#define NILFS_BTREE_KEY_MIN ((__u64)0)#define NILFS_BTREE_KEY_MAX (~(__u64)0) +extern struct kmem_cache *nilfs_btree_path_cache;int nilfs_btree_path_cache_init (void );void nilfs_btree_path_cache_destroy (void );fs/nilfs2/segbuf.c +0
-25@@ -39,35 +39,10 @@ struct nilfs_write_info {sector_t blocknr; }; -static int nilfs_segbuf_write (struct nilfs_segment_buffer *segbuf,struct the_nilfs *nilfs);static int nilfs_segbuf_wait (struct nilfs_segment_buffer *segbuf); - -static struct kmem_cache *nilfs_segbuf_cachep; - -static void nilfs_segbuf_init_once (void *obj) -{ -memset (obj,0 ,sizeof (struct nilfs_segment_buffer )); -} - -int __init nilfs_init_segbuf_cache (void ) -{ - nilfs_segbuf_cachep = -kmem_cache_create ("nilfs2_segbuf_cache" , -sizeof (struct nilfs_segment_buffer ), -0 ,SLAB_RECLAIM_ACCOUNT , - nilfs_segbuf_init_once); - -return (nilfs_segbuf_cachep ==NULL ) ? -ENOMEM :0 ; -} - -void nilfs_destroy_segbuf_cache (void ) -{ -kmem_cache_destroy (nilfs_segbuf_cachep); -} -struct nilfs_segment_buffer *nilfs_segbuf_new (struct super_block *sb) {struct nilfs_segment_buffer *segbuf;fs/nilfs2/segbuf.h +1
-0@@ -121,6 +121,7 @@ struct nilfs_segment_buffer { b_assoc_buffers))#define NILFS_SEGBUF_BH_IS_LAST (bh, head) ((bh)->b_assoc_buffers.next == head) +extern struct kmem_cache *nilfs_segbuf_cachep;int __init nilfs_init_segbuf_cache (void );void nilfs_destroy_segbuf_cache (void );fs/nilfs2/segment.c +0
-36@@ -115,42 +115,6 @@ static void nilfs_dispose_list(struct nilfs_sb_info *, struct list_head *,#define nilfs_cnt32_lt (a, b) nilfs_cnt32_gt(b, a)#define nilfs_cnt32_le (a, b) nilfs_cnt32_ge(b, a) -/* -* Transaction -*/ -static struct kmem_cache *nilfs_transaction_cachep; - -/** -* nilfs_init_transaction_cache - create a cache for nilfs_transaction_info -* -* nilfs_init_transaction_cache() creates a slab cache for the struct -* nilfs_transaction_info. -* -* Return Value: On success, it returns 0. On error, one of the following -* negative error code is returned. -* -* %-ENOMEM - Insufficient memory available. -*/ -int nilfs_init_transaction_cache (void ) -{ - nilfs_transaction_cachep = -kmem_cache_create ("nilfs2_transaction_cache" , -sizeof (struct nilfs_transaction_info ), -0 ,SLAB_RECLAIM_ACCOUNT ,NULL ); -return (nilfs_transaction_cachep ==NULL ) ? -ENOMEM :0 ; -} - -/** -* nilfs_destroy_transaction_cache - destroy the cache for transaction info -* -* nilfs_destroy_transaction_cache() frees the slab cache for the struct -* nilfs_transaction_info. -*/ -void nilfs_destroy_transaction_cache (void ) -{ -kmem_cache_destroy (nilfs_transaction_cachep); -} -static int nilfs_prepare_segment_lock (struct nilfs_transaction_info *ti) {struct nilfs_transaction_info *cur_ti = current->journal_info;fs/nilfs2/segment.h +2
-0@@ -219,6 +219,8 @@ enum {*/ #define NILFS_SC_DEFAULT_WATERMARK 3600 +/* super.c */ +extern struct kmem_cache *nilfs_transaction_cachep;/* segment.c */ extern int nilfs_init_transaction_cache (void );fs/nilfs2/super.c +67
-61@@ -67,6 +67,11 @@ MODULE_DESCRIPTION("A New Implementation of the Log-structured Filesystem " "(NILFS)");MODULE_LICENSE ("GPL" ); +struct kmem_cache *nilfs_inode_cachep; +struct kmem_cache *nilfs_transaction_cachep; +struct kmem_cache *nilfs_segbuf_cachep; +struct kmem_cache *nilfs_btree_path_cache; +static int nilfs_remount (struct super_block *sb,int *flags,char *data);/** @@ -129,7 +134,6 @@ void nilfs_warning(struct super_block *sb, const char *function,va_end (args); } -static struct kmem_cache *nilfs_inode_cachep;struct inode *nilfs_alloc_inode_common (struct the_nilfs *nilfs) {@@ -155,34 +159,6 @@ void nilfs_destroy_inode(struct inode *inode)kmem_cache_free (nilfs_inode_cachep,NILFS_I (inode)); } -static void init_once (void *obj) -{ -struct nilfs_inode_info *ii = obj; - -INIT_LIST_HEAD (&ii->i_dirty); -#ifdef CONFIG_NILFS_XATTR -init_rwsem (&ii->xattr_sem); -#endif -nilfs_btnode_cache_init_once (&ii->i_btnode_cache); - ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union; -inode_init_once (&ii->vfs_inode); -} - -static int nilfs_init_inode_cache (void ) -{ - nilfs_inode_cachep =kmem_cache_create ("nilfs2_inode_cache" , -sizeof (struct nilfs_inode_info ), -0 ,SLAB_RECLAIM_ACCOUNT , - init_once); - -return (nilfs_inode_cachep ==NULL ) ? -ENOMEM :0 ; -} - -static inline void nilfs_destroy_inode_cache (void ) -{ -kmem_cache_destroy (nilfs_inode_cachep); -} -static void nilfs_clear_inode (struct inode *inode) {struct nilfs_inode_info *ii =NILFS_I (inode);@@ -1138,54 +1114,84 @@ struct file_system_type nilfs_fs_type = { .fs_flags = FS_REQUIRES_DEV, }; -static int __init init_nilfs_fs (void ) +static void nilfs_inode_init_once (void *obj) { -int err; - - err =nilfs_init_inode_cache (); -if (err) - goto failed; +struct nilfs_inode_info *ii = obj; - err =nilfs_init_transaction_cache (); -if (err) - goto failed_inode_cache; +INIT_LIST_HEAD (&ii->i_dirty); +#ifdef CONFIG_NILFS_XATTR +init_rwsem (&ii->xattr_sem); +#endif +nilfs_btnode_cache_init_once (&ii->i_btnode_cache); + ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union; +inode_init_once (&ii->vfs_inode); +} - err =nilfs_init_segbuf_cache (); -if (err) - goto failed_transaction_cache; +static void nilfs_segbuf_init_once (void *obj) +{ +memset (obj,0 ,sizeof (struct nilfs_segment_buffer )); +} - err =nilfs_btree_path_cache_init (); -if (err) - goto failed_segbuf_cache; +static void nilfs_destroy_cachep (void ) +{ +if (nilfs_inode_cachep) +kmem_cache_destroy (nilfs_inode_cachep); +if (nilfs_transaction_cachep) +kmem_cache_destroy (nilfs_transaction_cachep); +if (nilfs_segbuf_cachep) +kmem_cache_destroy (nilfs_segbuf_cachep); +if (nilfs_btree_path_cache) +kmem_cache_destroy (nilfs_btree_path_cache); +} - err =register_filesystem (&nilfs_fs_type); -if (err) - goto failed_btree_path_cache; +static int __init nilfs_init_cachep (void ) +{ + nilfs_inode_cachep =kmem_cache_create ("nilfs2_inode_cache" , +sizeof (struct nilfs_inode_info ),0 , +SLAB_RECLAIM_ACCOUNT , nilfs_inode_init_once); +if (!nilfs_inode_cachep) + goto fail; + + nilfs_transaction_cachep =kmem_cache_create ("nilfs2_transaction_cache" , +sizeof (struct nilfs_transaction_info ),0 , +SLAB_RECLAIM_ACCOUNT ,NULL ); +if (!nilfs_transaction_cachep) + goto fail; + + nilfs_segbuf_cachep =kmem_cache_create ("nilfs2_segbuf_cache" , +sizeof (struct nilfs_segment_buffer ),0 , +SLAB_RECLAIM_ACCOUNT , nilfs_segbuf_init_once); +if (!nilfs_segbuf_cachep) + goto fail; + + nilfs_btree_path_cache =kmem_cache_create ("nilfs2_btree_path_cache" , +sizeof (struct nilfs_btree_path ) *NILFS_BTREE_LEVEL_MAX , +0 ,0 ,NULL ); +if (!nilfs_btree_path_cache) + goto fail;return 0 ; - failed_btree_path_cache: -nilfs_btree_path_cache_destroy (); - - failed_segbuf_cache: -nilfs_destroy_segbuf_cache (); +fail: +nilfs_destroy_cachep (); +return -ENOMEM ; +} - failed_transaction_cache: -nilfs_destroy_transaction_cache (); +static int __init init_nilfs_fs (void ) +{ +int err; - failed_inode_cache: -nilfs_destroy_inode_cache (); + err =nilfs_init_cachep (); +if (err) +return err; - failed: + err =register_filesystem (&nilfs_fs_type);return err; } static void __exit exit_nilfs_fs(void) { -nilfs_destroy_segbuf_cache (); -nilfs_destroy_transaction_cache (); -nilfs_destroy_inode_cache (); -nilfs_btree_path_cache_destroy (); +nilfs_destroy_cachep ();unregister_filesystem (&nilfs_fs_type); }Signature · 7 lines
1.6.3.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 25 lines · Ryusuke Konishi
Quoted 24 lines · Li Hong
Hi KONISHI Ryusuke,
The following two patches are base on the tip of your nilfs2/for-next branch. A build and simple mount test has been passed.
Thanks,
Li HongFrom
834d30bc730aab19f48474ad77733ef450e96e62Mon Sep 17 00:00:00 2001
From: Li Hong <[email protected]>
Date: Tue, 6 Apr 2010 00:54:11 +0800
Subject: [PATCH] nilfs2: cleanup multi kmem_cache_{create,destroy} codeThis cleanup patch gives several improvements:
- Moving all kmem_cache_{create_destroy} calls into one place, which removes some small function calls, cleans up error check code and clarify the logic.
- Mark all initial code in
__initsection.- Remove some very obvious comments.
- Adjust some declarations.
Quoted 8 lines
Quoted 3 lines
- Fix some space-tab issues.
Signed-off-by Li Hong <[email protected]>OK, will queue it up.
Thanks,
Ryusuke Konishi
Ah, this patch has a leak problem.
If register_filesystem() failed in init_nilfs_fs(), the slab caches allocated by nilfs_init_cachep() must be freed.
So, init_nilfs_fs() must call nilfs_destroy_cachep() in the error path.
Could you rewrite both patches ?
Thanks,
Ryusuke Konishi
Quoted 400 lines
Quoted 400 lines
--- fs/nilfs2/btree.c | 40 ---------------- fs/nilfs2/btree.h | 23 ++++++++- fs/nilfs2/segbuf.c | 25 ---------- fs/nilfs2/segbuf.h | 1 + fs/nilfs2/segment.c | 36 -------------- fs/nilfs2/segment.h | 2 + fs/nilfs2/super.c | 128 ++++++++++++++++++++++++++------------------------ 7 files changed, 90 insertions(+), 165 deletions(-)fs/nilfs2/btree.c +0
-40@@ -31,46 +31,6 @@#include "alloc.h" #include "dat.h" -/** -* struct nilfs_btree_path - A path on which B-tree operations are executed -* @bp_bh: buffer head of node block -* @bp_sib_bh: buffer head of sibling node block -* @bp_index: index of child node -* @bp_oldreq: ptr end request for old ptr -* @bp_newreq: ptr alloc request for new ptr -* @bp_op: rebalance operation -*/ -struct nilfs_btree_path { -struct buffer_head *bp_bh; -struct buffer_head *bp_sib_bh; -int bp_index; -union nilfs_bmap_ptr_req bp_oldreq; -union nilfs_bmap_ptr_req bp_newreq; -struct nilfs_btnode_chkey_ctxt bp_ctxt; -void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, -int ,__u64 *,__u64 *); -}; - -/* -* B-tree path operations -*/ - -static struct kmem_cache *nilfs_btree_path_cache; - -int __init nilfs_btree_path_cache_init (void ) -{ - nilfs_btree_path_cache = -kmem_cache_create ("nilfs2_btree_path_cache" , -sizeof (struct nilfs_btree_path ) * -NILFS_BTREE_LEVEL_MAX ,0 ,0 ,NULL ); -return (nilfs_btree_path_cache !=NULL ) ?0 : -ENOMEM ; -} - -void nilfs_btree_path_cache_destroy (void ) -{ -kmem_cache_destroy (nilfs_btree_path_cache); -} -static struct nilfs_btree_path *nilfs_btree_alloc_path (void ) {struct nilfs_btree_path *path;fs/nilfs2/btree.h +20
-3@@ -30,9 +30,6 @@#include "btnode.h" #include "bmap.h" -struct nilfs_btree ; -struct nilfs_btree_path ; -/** * struct nilfs_btree - B-tree structure * @bt_bmap: bmap base structure @@ -41,6 +38,25 @@ struct nilfs_btree {struct nilfs_bmap bt_bmap; }; +/** +* struct nilfs_btree_path - A path on which B-tree operations are executed +* @bp_bh: buffer head of node block +* @bp_sib_bh: buffer head of sibling node block +* @bp_index: index of child node +* @bp_oldreq: ptr end request for old ptr +* @bp_newreq: ptr alloc request for new ptr +* @bp_op: rebalance operation +*/ +struct nilfs_btree_path { +struct buffer_head *bp_bh; +struct buffer_head *bp_sib_bh; +int bp_index; +union nilfs_bmap_ptr_req bp_oldreq; +union nilfs_bmap_ptr_req bp_newreq; +struct nilfs_btnode_chkey_ctxt bp_ctxt; +void (*bp_op)(struct nilfs_btree *,struct nilfs_btree_path *, +int ,__u64 *,__u64 *); +};#define NILFS_BTREE_ROOT_SIZE NILFS_BMAP_SIZE#define NILFS_BTREE_ROOT_NCHILDREN_MAX \@@ -57,6 +73,7 @@ struct nilfs_btree {#define NILFS_BTREE_KEY_MIN ((__u64)0)#define NILFS_BTREE_KEY_MAX (~(__u64)0) +extern struct kmem_cache *nilfs_btree_path_cache;int nilfs_btree_path_cache_init (void );void nilfs_btree_path_cache_destroy (void );fs/nilfs2/segbuf.c +0
-25@@ -39,35 +39,10 @@ struct nilfs_write_info {sector_t blocknr; }; -static int nilfs_segbuf_write (struct nilfs_segment_buffer *segbuf,struct the_nilfs *nilfs);static int nilfs_segbuf_wait (struct nilfs_segment_buffer *segbuf); - -static struct kmem_cache *nilfs_segbuf_cachep; - -static void nilfs_segbuf_init_once (void *obj) -{ -memset (obj,0 ,sizeof (struct nilfs_segment_buffer )); -} - -int __init nilfs_init_segbuf_cache (void ) -{ - nilfs_segbuf_cachep = -kmem_cache_create ("nilfs2_segbuf_cache" , -sizeof (struct nilfs_segment_buffer ), -0 ,SLAB_RECLAIM_ACCOUNT , - nilfs_segbuf_init_once); - -return (nilfs_segbuf_cachep ==NULL ) ? -ENOMEM :0 ; -} - -void nilfs_destroy_segbuf_cache (void ) -{ -kmem_cache_destroy (nilfs_segbuf_cachep); -} -struct nilfs_segment_buffer *nilfs_segbuf_new (struct super_block *sb) {struct nilfs_segment_buffer *segbuf;fs/nilfs2/segbuf.h +1
-0@@ -121,6 +121,7 @@ struct nilfs_segment_buffer { b_assoc_buffers))#define NILFS_SEGBUF_BH_IS_LAST (bh, head) ((bh)->b_assoc_buffers.next == head) +extern struct kmem_cache *nilfs_segbuf_cachep;int __init nilfs_init_segbuf_cache (void );void nilfs_destroy_segbuf_cache (void );fs/nilfs2/segment.c +0
-36@@ -115,42 +115,6 @@ static void nilfs_dispose_list(struct nilfs_sb_info *, struct list_head *,#define nilfs_cnt32_lt (a, b) nilfs_cnt32_gt(b, a)#define nilfs_cnt32_le (a, b) nilfs_cnt32_ge(b, a) -/* -* Transaction -*/ -static struct kmem_cache *nilfs_transaction_cachep; - -/** -* nilfs_init_transaction_cache - create a cache for nilfs_transaction_info -* -* nilfs_init_transaction_cache() creates a slab cache for the struct -* nilfs_transaction_info. -* -* Return Value: On success, it returns 0. On error, one of the following -* negative error code is returned. -* -* %-ENOMEM - Insufficient memory available. -*/ -int nilfs_init_transaction_cache (void ) -{ - nilfs_transaction_cachep = -kmem_cache_create ("nilfs2_transaction_cache" , -sizeof (struct nilfs_transaction_info ), -0 ,SLAB_RECLAIM_ACCOUNT ,NULL ); -return (nilfs_transaction_cachep ==NULL ) ? -ENOMEM :0 ; -} - -/** -* nilfs_destroy_transaction_cache - destroy the cache for transaction info -* -* nilfs_destroy_transaction_cache() frees the slab cache for the struct -* nilfs_transaction_info. -*/ -void nilfs_destroy_transaction_cache (void ) -{ -kmem_cache_destroy (nilfs_transaction_cachep); -} -static int nilfs_prepare_segment_lock (struct nilfs_transaction_info *ti) {struct nilfs_transaction_info *cur_ti = current->journal_info;fs/nilfs2/segment.h +2
-0@@ -219,6 +219,8 @@ enum {*/ #define NILFS_SC_DEFAULT_WATERMARK 3600 +/* super.c */ +extern struct kmem_cache *nilfs_transaction_cachep;/* segment.c */ extern int nilfs_init_transaction_cache (void );fs/nilfs2/super.c +67
-61@@ -67,6 +67,11 @@ MODULE_DESCRIPTION("A New Implementation of the Log-structured Filesystem " "(NILFS)");MODULE_LICENSE ("GPL" ); +struct kmem_cache *nilfs_inode_cachep; +struct kmem_cache *nilfs_transaction_cachep; +struct kmem_cache *nilfs_segbuf_cachep; +struct kmem_cache *nilfs_btree_path_cache; +static int nilfs_remount (struct super_block *sb,int *flags,char *data);/** @@ -129,7 +134,6 @@ void nilfs_warning(struct super_block *sb, const char *function,va_end (args); } -static struct kmem_cache *nilfs_inode_cachep;struct inode *nilfs_alloc_inode_common (struct the_nilfs *nilfs) {@@ -155,34 +159,6 @@ void nilfs_destroy_inode(struct inode *inode)kmem_cache_free (nilfs_inode_cachep,NILFS_I (inode)); } -static void init_once (void *obj) -{ -struct nilfs_inode_info *ii = obj; - -INIT_LIST_HEAD (&ii->i_dirty); -#ifdef CONFIG_NILFS_XATTR -init_rwsem (&ii->xattr_sem); -#endif -nilfs_btnode_cache_init_once (&ii->i_btnode_cache); - ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union; -inode_init_once (&ii->vfs_inode); -} - -static int nilfs_init_inode_cache (void ) -{ - nilfs_inode_cachep =kmem_cache_create ("nilfs2_inode_cache" , -sizeof (struct nilfs_inode_info ), -0 ,SLAB_RECLAIM_ACCOUNT , - init_once); - -return (nilfs_inode_cachep ==NULL ) ? -ENOMEM :0 ; -} - -static inline void nilfs_destroy_inode_cache (void ) -{ -kmem_cache_destroy (nilfs_inode_cachep); -} -static void nilfs_clear_inode (struct inode *inode) {struct nilfs_inode_info *ii =NILFS_I (inode);@@ -1138,54 +1114,84 @@ struct file_system_type nilfs_fs_type = { .fs_flags = FS_REQUIRES_DEV, }; -static int __init init_nilfs_fs (void ) +static void nilfs_inode_init_once (void *obj) { -int err; - - err =nilfs_init_inode_cache (); -if (err) - goto failed; +struct nilfs_inode_info *ii = obj; - err =nilfs_init_transaction_cache (); -if (err) - goto failed_inode_cache; +INIT_LIST_HEAD (&ii->i_dirty); +#ifdef CONFIG_NILFS_XATTR +init_rwsem (&ii->xattr_sem); +#endif +nilfs_btnode_cache_init_once (&ii->i_btnode_cache); + ii->i_bmap = (struct nilfs_bmap *)&ii->i_bmap_union; +inode_init_once (&ii->vfs_inode); +} - err =nilfs_init_segbuf_cache (); -if (err) - goto failed_transaction_cache; +static void nilfs_segbuf_init_once (void *obj) +{ +memset (obj,0 ,sizeof (struct nilfs_segment_buffer )); +} - err =nilfs_btree_path_cache_init (); -if (err) - goto failed_segbuf_cache; +static void nilfs_destroy_cachep (void ) +{ +if (nilfs_inode_cachep) +kmem_cache_destroy (nilfs_inode_cachep); +if (nilfs_transaction_cachep) +kmem_cache_destroy (nilfs_transaction_cachep); +if (nilfs_segbuf_cachep) +kmem_cache_destroy (nilfs_segbuf_cachep); +if (nilfs_btree_path_cache) +kmem_cache_destroy (nilfs_btree_path_cache); +} - err =register_filesystem (&nilfs_fs_type); -if (err) - goto failed_btree_path_cache; +static int __init nilfs_init_cachep (void ) +{ + nilfs_inode_cachep =kmem_cache_create ("nilfs2_inode_cache" , +sizeof (struct nilfs_inode_info ),0 , +SLAB_RECLAIM_ACCOUNT , nilfs_inode_init_once); +if (!nilfs_inode_cachep) + goto fail; + + nilfs_transaction_cachep =kmem_cache_create ("nilfs2_transaction_cache" , +sizeof (struct nilfs_transaction_info ),0 , +SLAB_RECLAIM_ACCOUNT ,NULL ); +if (!nilfs_transaction_cachep) + goto fail; + + nilfs_segbuf_cachep =kmem_cache_create ("nilfs2_segbuf_cache" , +sizeof (struct nilfs_segment_buffer ),0 , +SLAB_RECLAIM_ACCOUNT , nilfs_segbuf_init_once); +if (!nilfs_segbuf_cachep) + goto fail; + + nilfs_btree_path_cache =kmem_cache_create ("nilfs2_btree_path_cache" , +sizeof (struct nilfs_btree_path ) *NILFS_BTREE_LEVEL_MAX , +0 ,0 ,NULL ); +if (!nilfs_btree_path_cache) + goto fail;return 0 ; - failed_btree_path_cache: -nilfs_btree_path_cache_destroy (); - - failed_segbuf_cache: -nilfs_destroy_segbuf_cache (); +fail: +nilfs_destroy_cachep (); +return -ENOMEM ; +} - failed_transaction_cache: -nilfs_destroy_transaction_cache (); +static int __init init_nilfs_fs (void ) +{ +int err; - failed_inode_cache: -nilfs_destroy_inode_cache (); + err =nilfs_init_cachep (); +if (err) +return err; - failed: + err =register_filesystem (&nilfs_fs_type);return err; } static void __exit exit_nilfs_fs(void) { -nilfs_destroy_segbuf_cache (); -nilfs_destroy_transaction_cache (); -nilfs_destroy_inode_cache (); -nilfs_btree_path_cache_destroy (); +nilfs_destroy_cachep ();unregister_filesystem (&nilfs_fs_type); }Signature · 1 line
1.6.3.3
Quoted 10 lines
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html