[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