* [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
@ 2013-10-21 7:24 Gu Zheng
2013-10-22 2:45 ` Haicheng Li
2013-10-22 3:49 ` Gao feng
0 siblings, 2 replies; 9+ messages in thread
From: Gu Zheng @ 2013-10-21 7:24 UTC (permalink / raw)
To: Kim; +Cc: f2fs, fsdevel, linux-kernel
Introduce the unfailed version of kmem_cache_alloc named f2fs_kmem_cache_alloc
to hide the retry routine and make the code a bit cleaner.
Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
---
fs/f2fs/checkpoint.c | 26 +++++++-------------------
fs/f2fs/f2fs.h | 13 +++++++++++++
fs/f2fs/gc.c | 8 ++------
fs/f2fs/node.c | 6 +-----
4 files changed, 23 insertions(+), 30 deletions(-)
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 8d16071..6fb484c 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -226,12 +226,8 @@ void add_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino)
break;
orphan = NULL;
}
-retry:
- new = kmem_cache_alloc(orphan_entry_slab, GFP_ATOMIC);
- if (!new) {
- cond_resched();
- goto retry;
- }
+
+ new = f2fs_kmem_cache_alloc(orphan_entry_slab, GFP_ATOMIC);
new->ino = ino;
/* add new_oentry into list which is sorted by inode number */
@@ -484,12 +480,8 @@ void set_dirty_dir_page(struct inode *inode, struct page *page)
if (!S_ISDIR(inode->i_mode))
return;
-retry:
- new = kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
- if (!new) {
- cond_resched();
- goto retry;
- }
+
+ new = f2fs_kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
new->inode = inode;
INIT_LIST_HEAD(&new->list);
@@ -506,13 +498,9 @@ retry:
void add_dirty_dir_inode(struct inode *inode)
{
struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
- struct dir_inode_entry *new;
-retry:
- new = kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
- if (!new) {
- cond_resched();
- goto retry;
- }
+ struct dir_inode_entry *new =
+ f2fs_kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
+
new->inode = inode;
INIT_LIST_HEAD(&new->list);
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 171c52f..fa9ad03 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -787,6 +787,19 @@ static inline struct kmem_cache *f2fs_kmem_cache_create(const char *name,
return kmem_cache_create(name, size, 0, SLAB_RECLAIM_ACCOUNT, ctor);
}
+static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
+ gfp_t flags)
+{
+ void *entry = kmem_cache_alloc(cachep, flags);
+retry:
+ if (!entry) {
+ cond_resched();
+ goto retry;
+ }
+
+ return entry;
+}
+
#define RAW_IS_INODE(p) ((p)->footer.nid == (p)->footer.ino)
static inline bool IS_INODE(struct page *page)
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index fbad968..7914b92 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -361,12 +361,8 @@ static void add_gc_inode(struct inode *inode, struct list_head *ilist)
iput(inode);
return;
}
-repeat:
- new_ie = kmem_cache_alloc(winode_slab, GFP_NOFS);
- if (!new_ie) {
- cond_resched();
- goto repeat;
- }
+
+ new_ie = f2fs_kmem_cache_alloc(winode_slab, GFP_NOFS);
new_ie->inode = inode;
list_add_tail(&new_ie->list, ilist);
}
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index ef80f79..fe3cf8e 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
if (allocated)
return 0;
retry:
- i = kmem_cache_alloc(free_nid_slab, GFP_NOFS);
- if (!i) {
- cond_resched();
- goto retry;
- }
+ i = f2fs_kmem_cache_alloc(free_nid_slab, GFP_NOFS);
i->nid = nid;
i->state = NID_NEW;
--
1.7.7
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-21 7:24 [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation Gu Zheng
@ 2013-10-22 2:45 ` Haicheng Li
2013-10-22 5:17 ` Haicheng Li
2013-10-22 3:49 ` Gao feng
1 sibling, 1 reply; 9+ messages in thread
From: Haicheng Li @ 2013-10-22 2:45 UTC (permalink / raw)
To: Gu Zheng; +Cc: fsdevel, linux-kernel, f2fs
Looks neat.
Reviewed-by: Haicheng Li <haicheng.li@linux.intel.com>
On Mon, Oct 21, 2013 at 03:24:55PM +0800, Gu Zheng wrote:
> Introduce the unfailed version of kmem_cache_alloc named f2fs_kmem_cache_alloc
> to hide the retry routine and make the code a bit cleaner.
>
> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> ---
> fs/f2fs/checkpoint.c | 26 +++++++-------------------
> fs/f2fs/f2fs.h | 13 +++++++++++++
> fs/f2fs/gc.c | 8 ++------
> fs/f2fs/node.c | 6 +-----
> 4 files changed, 23 insertions(+), 30 deletions(-)
>
> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> index 8d16071..6fb484c 100644
> --- a/fs/f2fs/checkpoint.c
> +++ b/fs/f2fs/checkpoint.c
> @@ -226,12 +226,8 @@ void add_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino)
> break;
> orphan = NULL;
> }
> -retry:
> - new = kmem_cache_alloc(orphan_entry_slab, GFP_ATOMIC);
> - if (!new) {
> - cond_resched();
> - goto retry;
> - }
> +
> + new = f2fs_kmem_cache_alloc(orphan_entry_slab, GFP_ATOMIC);
> new->ino = ino;
>
> /* add new_oentry into list which is sorted by inode number */
> @@ -484,12 +480,8 @@ void set_dirty_dir_page(struct inode *inode, struct page *page)
>
> if (!S_ISDIR(inode->i_mode))
> return;
> -retry:
> - new = kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
> - if (!new) {
> - cond_resched();
> - goto retry;
> - }
> +
> + new = f2fs_kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
> new->inode = inode;
> INIT_LIST_HEAD(&new->list);
>
> @@ -506,13 +498,9 @@ retry:
> void add_dirty_dir_inode(struct inode *inode)
> {
> struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
> - struct dir_inode_entry *new;
> -retry:
> - new = kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
> - if (!new) {
> - cond_resched();
> - goto retry;
> - }
> + struct dir_inode_entry *new =
> + f2fs_kmem_cache_alloc(inode_entry_slab, GFP_NOFS);
> +
> new->inode = inode;
> INIT_LIST_HEAD(&new->list);
>
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 171c52f..fa9ad03 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -787,6 +787,19 @@ static inline struct kmem_cache *f2fs_kmem_cache_create(const char *name,
> return kmem_cache_create(name, size, 0, SLAB_RECLAIM_ACCOUNT, ctor);
> }
>
> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
> + gfp_t flags)
> +{
> + void *entry = kmem_cache_alloc(cachep, flags);
> +retry:
> + if (!entry) {
> + cond_resched();
> + goto retry;
> + }
> +
> + return entry;
> +}
> +
> #define RAW_IS_INODE(p) ((p)->footer.nid == (p)->footer.ino)
>
> static inline bool IS_INODE(struct page *page)
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index fbad968..7914b92 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -361,12 +361,8 @@ static void add_gc_inode(struct inode *inode, struct list_head *ilist)
> iput(inode);
> return;
> }
> -repeat:
> - new_ie = kmem_cache_alloc(winode_slab, GFP_NOFS);
> - if (!new_ie) {
> - cond_resched();
> - goto repeat;
> - }
> +
> + new_ie = f2fs_kmem_cache_alloc(winode_slab, GFP_NOFS);
> new_ie->inode = inode;
> list_add_tail(&new_ie->list, ilist);
> }
> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
> index ef80f79..fe3cf8e 100644
> --- a/fs/f2fs/node.c
> +++ b/fs/f2fs/node.c
> @@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
> if (allocated)
> return 0;
> retry:
> - i = kmem_cache_alloc(free_nid_slab, GFP_NOFS);
> - if (!i) {
> - cond_resched();
> - goto retry;
> - }
> + i = f2fs_kmem_cache_alloc(free_nid_slab, GFP_NOFS);
> i->nid = nid;
> i->state = NID_NEW;
>
> --
> 1.7.7
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-21 7:24 [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation Gu Zheng
2013-10-22 2:45 ` Haicheng Li
@ 2013-10-22 3:49 ` Gao feng
2013-10-22 5:16 ` Haicheng Li
2013-10-22 5:30 ` Gu Zheng
1 sibling, 2 replies; 9+ messages in thread
From: Gao feng @ 2013-10-22 3:49 UTC (permalink / raw)
To: Gu Zheng; +Cc: Kim, f2fs, fsdevel, linux-kernel
On 10/21/2013 03:24 PM, Gu Zheng wrote:
> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
> + gfp_t flags)
> +{
> + void *entry = kmem_cache_alloc(cachep, flags);
> +retry:
retry after kmem_cache_alloc?
> + if (!entry) {
> + cond_resched();
> + goto retry;
> + }
> +
> + return entry;
> +}
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 3:49 ` Gao feng
@ 2013-10-22 5:16 ` Haicheng Li
2013-10-22 5:34 ` Gu Zheng
2013-10-22 5:30 ` Gu Zheng
1 sibling, 1 reply; 9+ messages in thread
From: Haicheng Li @ 2013-10-22 5:16 UTC (permalink / raw)
To: Gao feng; +Cc: Gu Zheng, fsdevel, linux-kernel, f2fs
On Tue, Oct 22, 2013 at 11:49:58AM +0800, Gao feng wrote:
> On 10/21/2013 03:24 PM, Gu Zheng wrote:
> > +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
> > + gfp_t flags)
> > +{
> > + void *entry = kmem_cache_alloc(cachep, flags);
> > +retry:
>
> retry after kmem_cache_alloc?
Good catch.
Sorry for the carelessness in my previous review.
Besides this, I also found another issue as below:
> On Mon, Oct 21, 2013 at 03:24:55PM +0800, Gu Zheng wrote:
> > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
> > index ef80f79..fe3cf8e 100644
> > --- a/fs/f2fs/node.c
> > +++ b/fs/f2fs/node.c
> > @@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
> > if (allocated)
> > return 0;
> > retry:
-retry?
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 2:45 ` Haicheng Li
@ 2013-10-22 5:17 ` Haicheng Li
0 siblings, 0 replies; 9+ messages in thread
From: Haicheng Li @ 2013-10-22 5:17 UTC (permalink / raw)
To: Gu Zheng; +Cc: fsdevel, linux-kernel, f2fs
On Tue, Oct 22, 2013 at 10:45:48AM +0800, Haicheng Li wrote:
> Looks neat.
>
> Reviewed-by: Haicheng Li <haicheng.li@linux.intel.com>
pls. ignore this mail.
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 3:49 ` Gao feng
2013-10-22 5:16 ` Haicheng Li
@ 2013-10-22 5:30 ` Gu Zheng
1 sibling, 0 replies; 9+ messages in thread
From: Gu Zheng @ 2013-10-22 5:30 UTC (permalink / raw)
To: Gao feng; +Cc: fsdevel, linux-kernel, f2fs
On 10/22/2013 11:49 AM, Gao feng wrote:
> On 10/21/2013 03:24 PM, Gu Zheng wrote:
>> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
>> + gfp_t flags)
>> +{
>> + void *entry = kmem_cache_alloc(cachep, flags);
>> +retry:
>
> retry after kmem_cache_alloc?
Oh~, stupid mistake, thanks for your reminder.:)
>
>> + if (!entry) {
>> + cond_resched();
>> + goto retry;
>> + }
>> +
>> + return entry;
>> +}
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 5:16 ` Haicheng Li
@ 2013-10-22 5:34 ` Gu Zheng
2013-10-22 6:15 ` Haicheng Li
0 siblings, 1 reply; 9+ messages in thread
From: Gu Zheng @ 2013-10-22 5:34 UTC (permalink / raw)
To: Haicheng Li; +Cc: fsdevel, Gao feng, linux-kernel, f2fs
On 10/22/2013 01:16 PM, Haicheng Li wrote:
> On Tue, Oct 22, 2013 at 11:49:58AM +0800, Gao feng wrote:
>> On 10/21/2013 03:24 PM, Gu Zheng wrote:
>>> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
>>> + gfp_t flags)
>>> +{
>>> + void *entry = kmem_cache_alloc(cachep, flags);
>>> +retry:
>>
>> retry after kmem_cache_alloc?
>
> Good catch.
>
> Sorry for the carelessness in my previous review.
> Besides this, I also found another issue as below:
>
>> On Mon, Oct 21, 2013 at 03:24:55PM +0800, Gu Zheng wrote:
>>> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
>>> index ef80f79..fe3cf8e 100644
>>> --- a/fs/f2fs/node.c
>>> +++ b/fs/f2fs/node.c
>>> @@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
>>> if (allocated)
>>> return 0;
>>> retry:
> -retry?
Can be removed here, this tag still used by front goto jumping. But it
seems that we need to use another suitable name rather than "retry".
Regards,
Gu
>
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 5:34 ` Gu Zheng
@ 2013-10-22 6:15 ` Haicheng Li
2013-10-22 6:26 ` Gu Zheng
0 siblings, 1 reply; 9+ messages in thread
From: Haicheng Li @ 2013-10-22 6:15 UTC (permalink / raw)
To: Gu Zheng; +Cc: Gao feng, Kim, f2fs, fsdevel, linux-kernel
On Tue, Oct 22, 2013 at 01:34:26PM +0800, Gu Zheng wrote:
> On 10/22/2013 01:16 PM, Haicheng Li wrote:
>
> > On Tue, Oct 22, 2013 at 11:49:58AM +0800, Gao feng wrote:
> >> On 10/21/2013 03:24 PM, Gu Zheng wrote:
> >>> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
> >>> + gfp_t flags)
> >>> +{
> >>> + void *entry = kmem_cache_alloc(cachep, flags);
> >>> +retry:
> >>
> >> retry after kmem_cache_alloc?
> >
> > Good catch.
> >
> > Sorry for the carelessness in my previous review.
> > Besides this, I also found another issue as below:
> >
> >> On Mon, Oct 21, 2013 at 03:24:55PM +0800, Gu Zheng wrote:
> >>> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
> >>> index ef80f79..fe3cf8e 100644
> >>> --- a/fs/f2fs/node.c
> >>> +++ b/fs/f2fs/node.c
> >>> @@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
> >>> if (allocated)
> >>> return 0;
> >>> retry:
> > -retry?
>
> Can be removed here, this tag still used by front goto jumping. But it
> seems that we need to use another suitable name rather than "retry".
how about like this?
---
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index fe3cf8e..4fa3fd5 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1296,18 +1296,17 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
if (nid == 0)
return 0;
- if (!build)
- goto retry;
+ if (build) {
+ /* do not add allocated nids */
+ read_lock(&nm_i->nat_tree_lock);
+ ne = __lookup_nat_cache(nm_i, nid);
+ if (ne && nat_get_blkaddr(ne) != NULL_ADDR)
+ allocated = true;
+ read_unlock(&nm_i->nat_tree_lock);
+ if (allocated)
+ return 0;
+ }
- /* do not add allocated nids */
- read_lock(&nm_i->nat_tree_lock);
- ne = __lookup_nat_cache(nm_i, nid);
- if (ne && nat_get_blkaddr(ne) != NULL_ADDR)
- allocated = true;
- read_unlock(&nm_i->nat_tree_lock);
- if (allocated)
- return 0;
-retry:
i = f2fs_kmem_cache_alloc(free_nid_slab, GFP_NOFS);
i->nid = nid;
i->state = NID_NEW;
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation
2013-10-22 6:15 ` Haicheng Li
@ 2013-10-22 6:26 ` Gu Zheng
0 siblings, 0 replies; 9+ messages in thread
From: Gu Zheng @ 2013-10-22 6:26 UTC (permalink / raw)
To: Haicheng Li; +Cc: fsdevel, Gao feng, linux-kernel, f2fs
On 10/22/2013 02:15 PM, Haicheng Li wrote:
> On Tue, Oct 22, 2013 at 01:34:26PM +0800, Gu Zheng wrote:
>> On 10/22/2013 01:16 PM, Haicheng Li wrote:
>>
>>> On Tue, Oct 22, 2013 at 11:49:58AM +0800, Gao feng wrote:
>>>> On 10/21/2013 03:24 PM, Gu Zheng wrote:
>>>>> +static inline void *f2fs_kmem_cache_alloc(struct kmem_cache *cachep,
>>>>> + gfp_t flags)
>>>>> +{
>>>>> + void *entry = kmem_cache_alloc(cachep, flags);
>>>>> +retry:
>>>>
>>>> retry after kmem_cache_alloc?
>>>
>>> Good catch.
>>>
>>> Sorry for the carelessness in my previous review.
>>> Besides this, I also found another issue as below:
>>>
>>>> On Mon, Oct 21, 2013 at 03:24:55PM +0800, Gu Zheng wrote:
>>>>> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
>>>>> index ef80f79..fe3cf8e 100644
>>>>> --- a/fs/f2fs/node.c
>>>>> +++ b/fs/f2fs/node.c
>>>>> @@ -1308,11 +1308,7 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
>>>>> if (allocated)
>>>>> return 0;
>>>>> retry:
>>> -retry?
>>
>> Can be removed here, this tag still used by front goto jumping. But it
>> seems that we need to use another suitable name rather than "retry".
>
> how about like this?
> ---
> diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
> index fe3cf8e..4fa3fd5 100644
> --- a/fs/f2fs/node.c
> +++ b/fs/f2fs/node.c
> @@ -1296,18 +1296,17 @@ static int add_free_nid(struct f2fs_nm_info *nm_i, nid_t nid, bool build)
> if (nid == 0)
> return 0;
>
> - if (!build)
> - goto retry;
> + if (build) {
> + /* do not add allocated nids */
> + read_lock(&nm_i->nat_tree_lock);
> + ne = __lookup_nat_cache(nm_i, nid);
> + if (ne && nat_get_blkaddr(ne) != NULL_ADDR)
> + allocated = true;
> + read_unlock(&nm_i->nat_tree_lock);
> + if (allocated)
> + return 0;
> + }
Good, it's more neat, I'll take this, thanks.:)
Regards,
Gu
>
> - /* do not add allocated nids */
> - read_lock(&nm_i->nat_tree_lock);
> - ne = __lookup_nat_cache(nm_i, nid);
> - if (ne && nat_get_blkaddr(ne) != NULL_ADDR)
> - allocated = true;
> - read_unlock(&nm_i->nat_tree_lock);
> - if (allocated)
> - return 0;
> -retry:
> i = f2fs_kmem_cache_alloc(free_nid_slab, GFP_NOFS);
> i->nid = nid;
> i->state = NID_NEW;
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-10-22 6:26 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-21 7:24 [PATCH] f2fs: introduce f2fs_kmem_cache_alloc to hide the unfailed kmem cache allocation Gu Zheng
2013-10-22 2:45 ` Haicheng Li
2013-10-22 5:17 ` Haicheng Li
2013-10-22 3:49 ` Gao feng
2013-10-22 5:16 ` Haicheng Li
2013-10-22 5:34 ` Gu Zheng
2013-10-22 6:15 ` Haicheng Li
2013-10-22 6:26 ` Gu Zheng
2013-10-22 5:30 ` Gu Zheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).