[Ocfs2-devel] [PATCH 4/5] ocfs2: Disallow duplicate entries in the list

Gang He ghe at suse.com
Mon May 30 02:28:27 PDT 2016


Looks good to me.

Thanks
Gang


>>> 
> From: Goldwyn Rodrigues <rgoldwyn at suse.com>
> 
> Signed-off-by: Goldwyn Rodrigues <rgoldwyn at suse.com>
> ---
>  fs/ocfs2/filecheck.c | 26 +++++++++++++++++---------
>  1 file changed, 17 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/ocfs2/filecheck.c b/fs/ocfs2/filecheck.c
> index 0b41967..006d521 100644
> --- a/fs/ocfs2/filecheck.c
> +++ b/fs/ocfs2/filecheck.c
> @@ -217,14 +217,12 @@ ocfs2_filecheck_handle_entry(struct ocfs2_super *osb,
>  int ocfs2_filecheck_add_inode(struct ocfs2_super *osb,
>  				     unsigned long ino)
>  {
> -	struct ocfs2_filecheck_entry *entry;
> +	struct ocfs2_filecheck_entry *entry, *p;
>  	ssize_t ret = 0;
>  
>  	entry = kmalloc(sizeof(struct ocfs2_filecheck_entry), GFP_NOFS);
> -	if (!entry) {
> -		ret = -ENOMEM;
> -		goto exit;
> -	}
> +	if (!entry)
> +		return -ENOMEM;
>  
>  	spin_lock(&osb->fc_lock);
>  	if ((osb->fc_size >= osb->fc_max) &&
> @@ -244,6 +242,12 @@ int ocfs2_filecheck_add_inode(struct ocfs2_super *osb,
>  			 */
>  			BUG_ON(!ocfs2_filecheck_erase_entry(osb));
>  		}
> +		list_for_each_entry(p, &osb->file_check_entries, fe_list)
> +			if (p->fe_ino == ino) {
> +				ret = -EEXIST;
> +				kfree(entry);
> +				goto unlock;
> +			}
>  
>  		entry->fe_ino = ino;
>  		entry->fe_type = OCFS2_FILECHECK_TYPE_CHK;
> @@ -252,11 +256,15 @@ int ocfs2_filecheck_add_inode(struct ocfs2_super *osb,
>  		list_add_tail(&entry->fe_list, &osb->file_check_entries);
>  		osb->fc_size++;
>  	}
> +unlock:
>  	spin_unlock(&osb->fc_lock);
>  
> -	if (!ret)
> -		ocfs2_filecheck_handle_entry(osb, entry);
> +	if (ret)
> +		return ret;
>  
> -exit:
> -	return ret;
> +	entry->fe_status = ocfs2_filecheck_handle(osb,
> +			entry->fe_ino, OCFS2_FI_FLAG_FILECHECK_CHK);
> +
> +	ocfs2_filecheck_done_entry(osb, entry);
> +	return 0;
>  }
> -- 
> 2.6.6
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com 
> https://oss.oracle.com/mailman/listinfo/ocfs2-devel




More information about the Ocfs2-devel mailing list