Re: [PATCH 5/5] f2fs: move the list_head initialization into the lockprotection region

From: Jaegeuk Kim
Date: Tue Nov 19 2013 - 20:32:41 EST


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@xxxxxxxxxxxxxx>
> ---
> 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/