[Ocfs2-tools-devel] [PATCH 1/1] Ocfs2-tools: Correct fs_locks dump for debugfs.ocfs2

Sunil Mushran sunil.mushran at oracle.com
Mon Feb 2 10:28:51 PST 2009


Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>

Tristan Ye wrote:
> Noticed that dump_fs_locks only dumps half of the all lockres, it was due to
> the fault of dump_version_two() func, this func seems has been added early for
> the sake of keeping compatible for version two. and it was used to dump 9 more
> records which were new in version 2. but unfortuately, the author seems wrongly
> read the '\t' of last record of each lock entry. this patch correct such a reading
> mistake.
>
> Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
> ---
>  debugfs.ocfs2/dump_fs_locks.c |   14 +++++++-------
>  1 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/debugfs.ocfs2/dump_fs_locks.c b/debugfs.ocfs2/dump_fs_locks.c
> index 1d4a56e..e902d66 100644
> --- a/debugfs.ocfs2/dump_fs_locks.c
> +++ b/debugfs.ocfs2/dump_fs_locks.c
> @@ -243,7 +243,7 @@ static int dump_version_two(FILE *file, FILE *out)
>  		     "%llu\t"
>  		     "%u\t"
>  		     "%u\t"
> -		     "%u\t",
> +		     "%u",
>  		     &num_prmode,
>  		     &num_exmode,
>  		     &num_prmode_failed,
> @@ -275,7 +275,8 @@ out:
>  
>  /* 0 = eof, > 0 = success, < 0 = error */
>  static int dump_version_one(FILE *file, FILE *out, int lvbs, int only_busy,
> -			    struct list_head *locklist, int *skipped)
> +			    struct list_head *locklist, int *skipped,
> +			    unsigned int version)
>  {
>  	char id[OCFS2_LOCK_ID_MAX_LEN + 1];	
>  	char lvb[DLM_LVB_LEN];
> @@ -315,7 +316,7 @@ static int dump_version_one(FILE *file, FILE *out, int lvbs, int only_busy,
>  		 * include the field delimiting '\t' then fscanf will
>  		 * also catch the record delimiting '\n' character,
>  		 * which we want to save for the caller to find. */
> -		if (i == (DLM_LVB_LEN - 1))
> +		if ((i == (DLM_LVB_LEN - 1)) && (version < 2))
>  			format = "0x%x";
>  
>  		ret = fscanf(file, format, &dummy);
> @@ -394,20 +395,19 @@ static int dump_one_lockres(FILE *file, FILE *out, int lvbs, int only_busy,
>  		return 0;
>  	}
>  
> -	ret = dump_version_one(file, out, lvbs, only_busy, locklist, &skipped);
> +	ret = dump_version_one(file, out, lvbs, only_busy, locklist, &skipped, version);
>  	if (ret <= 0)
>  		return 0;
>  
>  	if (!skipped) {
> -		if (version >= 2) {
> +		if (version == CURRENT_PROTO) {
>  			ret = dump_version_two(file, out);
>  			if (ret <= 0)
>  				return 0;
>  		}
> -	}
>  
> -	if (!skipped)
>  		fprintf(out, "\n");
> +	}
>  
>  	/* Read to the end of the record here. Any new fields tagged
>  	 * onto the current format will be silently ignored. */
>   




More information about the Ocfs2-tools-devel mailing list