lkml.org 
[lkml]   [2013]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 5/5] f2fs: move the list_head initialization into the lock protection region
From
Date
Hi Gu,

IMO, there is no reason to cover the list header by the lock.
In any flows, sbi should have the header all the time.
What is your opinion?

Thanks,

2013-11-19 (화), 18:03 +0800, Gu Zheng:
> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
> ---
> fs/f2fs/checkpoint.c | 15 ++++++++++-----
> 1 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
> index f884589..1de70cc 100644
> --- a/fs/f2fs/checkpoint.c
> +++ b/fs/f2fs/checkpoint.c
> @@ -511,8 +511,8 @@ void add_dirty_dir_inode(struct inode *inode)
> void remove_dirty_dir_inode(struct inode *inode)
> {
> struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
> - struct list_head *head = &sbi->dir_inode_list;
> - struct list_head *this;
> +
> + struct list_head *this, *head;
>
> if (!S_ISDIR(inode->i_mode))
> return;
> @@ -523,6 +523,7 @@ void remove_dirty_dir_inode(struct inode *inode)
> return;
> }
>
> + head = &sbi->dir_inode_list;
> list_for_each(this, head) {
> struct dir_inode_entry *entry;
> entry = list_entry(this, struct dir_inode_entry, list);
> @@ -544,11 +545,13 @@ void remove_dirty_dir_inode(struct inode *inode)
>
> struct inode *check_dirty_dir_inode(struct f2fs_sb_info *sbi, nid_t ino)
> {
> - struct list_head *head = &sbi->dir_inode_list;
> - struct list_head *this;
> +
> + struct list_head *this, *head;
> struct inode *inode = NULL;
>
> spin_lock(&sbi->dir_inode_lock);
> +
> + head = &sbi->dir_inode_list;
> list_for_each(this, head) {
> struct dir_inode_entry *entry;
> entry = list_entry(this, struct dir_inode_entry, list);
> @@ -563,11 +566,13 @@ struct inode *check_dirty_dir_inode(struct f2fs_sb_info *sbi, nid_t ino)
>
> void sync_dirty_dir_inodes(struct f2fs_sb_info *sbi)
> {
> - struct list_head *head = &sbi->dir_inode_list;
> + struct list_head *head;
> struct dir_inode_entry *entry;
> struct inode *inode;
> retry:
> spin_lock(&sbi->dir_inode_lock);
> +
> + head = &sbi->dir_inode_list;
> if (list_empty(head)) {
> spin_unlock(&sbi->dir_inode_lock);
> return;

--
Jaegeuk Kim
Samsung

--
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/

\
 
 \ /
  Last update: 2013-11-20 02:41    [W:0.113 / U:0.232 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site