All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file
@ 2008-12-05  6:14 Mark Fasheh
  2008-12-05  6:56 ` Tao Ma
  2008-12-26 22:39 ` Mark Fasheh
  0 siblings, 2 replies; 4+ messages in thread
From: Mark Fasheh @ 2008-12-05  6:14 UTC (permalink / raw)
  To: ocfs2-devel

This way we can review locking state even if all a customer provides us is
the contents of /sys/kernel/debug/o2dlm/locking_state.

Signed-off-by: Mark Fasheh <mfasheh@suse.com>
---
 debugfs.ocfs2/commands.c               |   36 ++++++++++++++++++++++-------
 debugfs.ocfs2/dump_dlm_locks.c         |   38 ++++++++++++++++++++-----------
 debugfs.ocfs2/include/dump_dlm_locks.h |    2 +-
 3 files changed, 52 insertions(+), 24 deletions(-)

diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
index 0e46151..06b6c98 100644
--- a/debugfs.ocfs2/commands.c
+++ b/debugfs.ocfs2/commands.c
@@ -831,7 +831,7 @@ static void do_help (char **args)
 	printf ("controld dump\t\t\tObtain information from ocfs2_controld\n");
 	printf ("curdev\t\t\t\t\tShow current device\n");
 	printf ("decode <lockname#> ...\t\t\tDecode block#(s) from the lockname(s)\n");
-	printf ("dlm_locks [-l] lockname\t\t\tShow live dlm locking state\n");
+	printf ("dlm_locks [-f <file>] [-l] lockname\t\t\tShow live dlm locking state\n");
 	printf ("dump [-p] <filespec> <outfile>\t\tDumps file to outfile on a mounted fs\n");
 	printf ("encode <filespec>\t\t\tShow lock name\n");
 	printf ("extent <block#>\t\t\t\tShow extent block\n");
@@ -1485,26 +1485,44 @@ static void do_dlm_locks(char **args)
 	int dump_lvbs = 0;
 	int i;
 	struct list_head locklist;
-
-	if (check_device_open())
-		return;
+	char *path = NULL, *uuid_str = NULL;
+	int c, argc;
 
 	init_stringlist(&locklist);
 
-	i = 1;
-	if (args[i] && strlen(args[i])) {
-		if (!strcmp("-l", args[i])) {
+	for (argc = 0; (args[argc]); ++argc);
+	optind = 0;
+
+	while ((c = getopt(argc, args, "lf:")) != -1) {
+		switch (c) {
+		case 'l':
 			dump_lvbs = 1;
-			i++;
+			break;
+		case 'f':
+			path = optarg;
+			break;
+		default:
+			break;
 		}
+	}
+	if ((path == NULL)) {
+		/* Only error for a missing device if we're asked to
+		 * read from a live file system. */
+		if (check_device_open())
+			return;
+
+		uuid_str = gbls.fs->uuid_str;
+	}
 
+	i = optind;
+	if (args[i] && strlen(args[i])) {
 		for ( ; args[i] && strlen(args[i]); ++i)
 			if (add_to_stringlist(args[i], &locklist))
 				break;
 	}
 
 	out = open_pager(gbls.interactive);
-	dump_dlm_locks(gbls.fs->uuid_str, out, dump_lvbs, &locklist);
+	dump_dlm_locks(uuid_str, out, path, dump_lvbs, &locklist);
 	close_pager(out);
 
 	free_stringlist(&locklist);
diff --git a/debugfs.ocfs2/dump_dlm_locks.c b/debugfs.ocfs2/dump_dlm_locks.c
index b946821..6344ff1 100644
--- a/debugfs.ocfs2/dump_dlm_locks.c
+++ b/debugfs.ocfs2/dump_dlm_locks.c
@@ -411,7 +411,7 @@ static int get_next_dlm_lockname(FILE *file, char *name, int len)
 	return 0;
 }
 
-void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
+void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
 		    struct list_head *locklist)
 {
 	errcode_t ret;
@@ -421,20 +421,30 @@ void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
 	struct lockres res;
 	int show_all_locks = 0;
 
-	ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
-	if (ret) {
-		fprintf(stderr, "Could not locate debugfs file system. "
-			"Perhaps it is not mounted?\n");
-		return;
-	}
+	if (path == NULL) {
+		ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
+		if (ret) {
+			fprintf(stderr, "Could not locate debugfs file system. "
+				"Perhaps it is not mounted?\n");
+			return;
+		}
 
-	ret = open_debugfs_file(debugfs_path, "o2dlm", uuid, "locking_state",
-				&file);
-	if (ret) {
-		fprintf(stderr, "Could not open debug state for \"%s\".\n"
-			"Perhaps that OCFS2 file system is not mounted?\n",
-			uuid);
-		return;
+		ret = open_debugfs_file(debugfs_path, "o2dlm", uuid,
+					"locking_state", &file);
+		if (ret) {
+			fprintf(stderr,
+				"Could not open debug state for \"%s\".\n"
+				"Perhaps that OCFS2 file system is not mounted?\n",
+				uuid);
+			return;
+		}
+	} else {
+		file = fopen(path, "r");
+		if (!file) {
+			fprintf(stderr, "Could not open file at \"%s\"\n",
+				path);
+			return;
+		}
 	}
 
 	show_all_locks = list_empty(locklist);
diff --git a/debugfs.ocfs2/include/dump_dlm_locks.h b/debugfs.ocfs2/include/dump_dlm_locks.h
index 2cbb72a..7bc35ba 100644
--- a/debugfs.ocfs2/include/dump_dlm_locks.h
+++ b/debugfs.ocfs2/include/dump_dlm_locks.h
@@ -74,7 +74,7 @@ struct lock {
 	struct list_head list;
 };
 
-void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
+void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
 		    struct list_head *locklist);
 
 #endif		/* _DUMP_DLM_LOCKS_H_ */
-- 
1.6.0.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file
  2008-12-05  6:14 [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file Mark Fasheh
@ 2008-12-05  6:56 ` Tao Ma
  2008-12-26 22:39 ` Mark Fasheh
  1 sibling, 0 replies; 4+ messages in thread
From: Tao Ma @ 2008-12-05  6:56 UTC (permalink / raw)
  To: ocfs2-devel

Signed-off-by: Tao Ma <tao.ma@oracle.com>

Mark Fasheh wrote:
> This way we can review locking state even if all a customer provides us is
> the contents of /sys/kernel/debug/o2dlm/locking_state.
> 
> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
> ---
>  debugfs.ocfs2/commands.c               |   36 ++++++++++++++++++++++-------
>  debugfs.ocfs2/dump_dlm_locks.c         |   38 ++++++++++++++++++++-----------
>  debugfs.ocfs2/include/dump_dlm_locks.h |    2 +-
>  3 files changed, 52 insertions(+), 24 deletions(-)
> 
> diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
> index 0e46151..06b6c98 100644
> --- a/debugfs.ocfs2/commands.c
> +++ b/debugfs.ocfs2/commands.c
> @@ -831,7 +831,7 @@ static void do_help (char **args)
>  	printf ("controld dump\t\t\tObtain information from ocfs2_controld\n");
>  	printf ("curdev\t\t\t\t\tShow current device\n");
>  	printf ("decode <lockname#> ...\t\t\tDecode block#(s) from the lockname(s)\n");
> -	printf ("dlm_locks [-l] lockname\t\t\tShow live dlm locking state\n");
> +	printf ("dlm_locks [-f <file>] [-l] lockname\t\t\tShow live dlm locking state\n");
>  	printf ("dump [-p] <filespec> <outfile>\t\tDumps file to outfile on a mounted fs\n");
>  	printf ("encode <filespec>\t\t\tShow lock name\n");
>  	printf ("extent <block#>\t\t\t\tShow extent block\n");
> @@ -1485,26 +1485,44 @@ static void do_dlm_locks(char **args)
>  	int dump_lvbs = 0;
>  	int i;
>  	struct list_head locklist;
> -
> -	if (check_device_open())
> -		return;
> +	char *path = NULL, *uuid_str = NULL;
> +	int c, argc;
>  
>  	init_stringlist(&locklist);
>  
> -	i = 1;
> -	if (args[i] && strlen(args[i])) {
> -		if (!strcmp("-l", args[i])) {
> +	for (argc = 0; (args[argc]); ++argc);
> +	optind = 0;
> +
> +	while ((c = getopt(argc, args, "lf:")) != -1) {
> +		switch (c) {
> +		case 'l':
>  			dump_lvbs = 1;
> -			i++;
> +			break;
> +		case 'f':
> +			path = optarg;
> +			break;
> +		default:
> +			break;
>  		}
> +	}
> +	if ((path == NULL)) {
> +		/* Only error for a missing device if we're asked to
> +		 * read from a live file system. */
> +		if (check_device_open())
> +			return;
> +
> +		uuid_str = gbls.fs->uuid_str;
> +	}
>  
> +	i = optind;
> +	if (args[i] && strlen(args[i])) {
>  		for ( ; args[i] && strlen(args[i]); ++i)
>  			if (add_to_stringlist(args[i], &locklist))
>  				break;
>  	}
>  
>  	out = open_pager(gbls.interactive);
> -	dump_dlm_locks(gbls.fs->uuid_str, out, dump_lvbs, &locklist);
> +	dump_dlm_locks(uuid_str, out, path, dump_lvbs, &locklist);
>  	close_pager(out);
>  
>  	free_stringlist(&locklist);
> diff --git a/debugfs.ocfs2/dump_dlm_locks.c b/debugfs.ocfs2/dump_dlm_locks.c
> index b946821..6344ff1 100644
> --- a/debugfs.ocfs2/dump_dlm_locks.c
> +++ b/debugfs.ocfs2/dump_dlm_locks.c
> @@ -411,7 +411,7 @@ static int get_next_dlm_lockname(FILE *file, char *name, int len)
>  	return 0;
>  }
>  
> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
>  		    struct list_head *locklist)
>  {
>  	errcode_t ret;
> @@ -421,20 +421,30 @@ void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
>  	struct lockres res;
>  	int show_all_locks = 0;
>  
> -	ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
> -	if (ret) {
> -		fprintf(stderr, "Could not locate debugfs file system. "
> -			"Perhaps it is not mounted?\n");
> -		return;
> -	}
> +	if (path == NULL) {
> +		ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
> +		if (ret) {
> +			fprintf(stderr, "Could not locate debugfs file system. "
> +				"Perhaps it is not mounted?\n");
> +			return;
> +		}
>  
> -	ret = open_debugfs_file(debugfs_path, "o2dlm", uuid, "locking_state",
> -				&file);
> -	if (ret) {
> -		fprintf(stderr, "Could not open debug state for \"%s\".\n"
> -			"Perhaps that OCFS2 file system is not mounted?\n",
> -			uuid);
> -		return;
> +		ret = open_debugfs_file(debugfs_path, "o2dlm", uuid,
> +					"locking_state", &file);
> +		if (ret) {
> +			fprintf(stderr,
> +				"Could not open debug state for \"%s\".\n"
> +				"Perhaps that OCFS2 file system is not mounted?\n",
> +				uuid);
> +			return;
> +		}
> +	} else {
> +		file = fopen(path, "r");
> +		if (!file) {
> +			fprintf(stderr, "Could not open file at \"%s\"\n",
> +				path);
> +			return;
> +		}
>  	}
>  
>  	show_all_locks = list_empty(locklist);
> diff --git a/debugfs.ocfs2/include/dump_dlm_locks.h b/debugfs.ocfs2/include/dump_dlm_locks.h
> index 2cbb72a..7bc35ba 100644
> --- a/debugfs.ocfs2/include/dump_dlm_locks.h
> +++ b/debugfs.ocfs2/include/dump_dlm_locks.h
> @@ -74,7 +74,7 @@ struct lock {
>  	struct list_head list;
>  };
>  
> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
>  		    struct list_head *locklist);
>  
>  #endif		/* _DUMP_DLM_LOCKS_H_ */

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file
  2008-12-05  6:14 [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file Mark Fasheh
  2008-12-05  6:56 ` Tao Ma
@ 2008-12-26 22:39 ` Mark Fasheh
  2008-12-26 23:04   ` Sunil Mushran
  1 sibling, 1 reply; 4+ messages in thread
From: Mark Fasheh @ 2008-12-26 22:39 UTC (permalink / raw)
  To: ocfs2-devel

Anyone get a chance to sob this? It's pretty much a copy of the fs locks
patch...
	--Mark

On Thu, Dec 04, 2008 at 10:14:50PM -0800, Mark Fasheh wrote:
> This way we can review locking state even if all a customer provides us is
> the contents of /sys/kernel/debug/o2dlm/locking_state.
> 
> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
> ---
>  debugfs.ocfs2/commands.c               |   36 ++++++++++++++++++++++-------
>  debugfs.ocfs2/dump_dlm_locks.c         |   38 ++++++++++++++++++++-----------
>  debugfs.ocfs2/include/dump_dlm_locks.h |    2 +-
>  3 files changed, 52 insertions(+), 24 deletions(-)
> 
> diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
> index 0e46151..06b6c98 100644
> --- a/debugfs.ocfs2/commands.c
> +++ b/debugfs.ocfs2/commands.c
> @@ -831,7 +831,7 @@ static void do_help (char **args)
>  	printf ("controld dump\t\t\tObtain information from ocfs2_controld\n");
>  	printf ("curdev\t\t\t\t\tShow current device\n");
>  	printf ("decode <lockname#> ...\t\t\tDecode block#(s) from the lockname(s)\n");
> -	printf ("dlm_locks [-l] lockname\t\t\tShow live dlm locking state\n");
> +	printf ("dlm_locks [-f <file>] [-l] lockname\t\t\tShow live dlm locking state\n");
>  	printf ("dump [-p] <filespec> <outfile>\t\tDumps file to outfile on a mounted fs\n");
>  	printf ("encode <filespec>\t\t\tShow lock name\n");
>  	printf ("extent <block#>\t\t\t\tShow extent block\n");
> @@ -1485,26 +1485,44 @@ static void do_dlm_locks(char **args)
>  	int dump_lvbs = 0;
>  	int i;
>  	struct list_head locklist;
> -
> -	if (check_device_open())
> -		return;
> +	char *path = NULL, *uuid_str = NULL;
> +	int c, argc;
>  
>  	init_stringlist(&locklist);
>  
> -	i = 1;
> -	if (args[i] && strlen(args[i])) {
> -		if (!strcmp("-l", args[i])) {
> +	for (argc = 0; (args[argc]); ++argc);
> +	optind = 0;
> +
> +	while ((c = getopt(argc, args, "lf:")) != -1) {
> +		switch (c) {
> +		case 'l':
>  			dump_lvbs = 1;
> -			i++;
> +			break;
> +		case 'f':
> +			path = optarg;
> +			break;
> +		default:
> +			break;
>  		}
> +	}
> +	if ((path == NULL)) {
> +		/* Only error for a missing device if we're asked to
> +		 * read from a live file system. */
> +		if (check_device_open())
> +			return;
> +
> +		uuid_str = gbls.fs->uuid_str;
> +	}
>  
> +	i = optind;
> +	if (args[i] && strlen(args[i])) {
>  		for ( ; args[i] && strlen(args[i]); ++i)
>  			if (add_to_stringlist(args[i], &locklist))
>  				break;
>  	}
>  
>  	out = open_pager(gbls.interactive);
> -	dump_dlm_locks(gbls.fs->uuid_str, out, dump_lvbs, &locklist);
> +	dump_dlm_locks(uuid_str, out, path, dump_lvbs, &locklist);
>  	close_pager(out);
>  
>  	free_stringlist(&locklist);
> diff --git a/debugfs.ocfs2/dump_dlm_locks.c b/debugfs.ocfs2/dump_dlm_locks.c
> index b946821..6344ff1 100644
> --- a/debugfs.ocfs2/dump_dlm_locks.c
> +++ b/debugfs.ocfs2/dump_dlm_locks.c
> @@ -411,7 +411,7 @@ static int get_next_dlm_lockname(FILE *file, char *name, int len)
>  	return 0;
>  }
>  
> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
>  		    struct list_head *locklist)
>  {
>  	errcode_t ret;
> @@ -421,20 +421,30 @@ void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
>  	struct lockres res;
>  	int show_all_locks = 0;
>  
> -	ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
> -	if (ret) {
> -		fprintf(stderr, "Could not locate debugfs file system. "
> -			"Perhaps it is not mounted?\n");
> -		return;
> -	}
> +	if (path == NULL) {
> +		ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
> +		if (ret) {
> +			fprintf(stderr, "Could not locate debugfs file system. "
> +				"Perhaps it is not mounted?\n");
> +			return;
> +		}
>  
> -	ret = open_debugfs_file(debugfs_path, "o2dlm", uuid, "locking_state",
> -				&file);
> -	if (ret) {
> -		fprintf(stderr, "Could not open debug state for \"%s\".\n"
> -			"Perhaps that OCFS2 file system is not mounted?\n",
> -			uuid);
> -		return;
> +		ret = open_debugfs_file(debugfs_path, "o2dlm", uuid,
> +					"locking_state", &file);
> +		if (ret) {
> +			fprintf(stderr,
> +				"Could not open debug state for \"%s\".\n"
> +				"Perhaps that OCFS2 file system is not mounted?\n",
> +				uuid);
> +			return;
> +		}
> +	} else {
> +		file = fopen(path, "r");
> +		if (!file) {
> +			fprintf(stderr, "Could not open file at \"%s\"\n",
> +				path);
> +			return;
> +		}
>  	}
>  
>  	show_all_locks = list_empty(locklist);
> diff --git a/debugfs.ocfs2/include/dump_dlm_locks.h b/debugfs.ocfs2/include/dump_dlm_locks.h
> index 2cbb72a..7bc35ba 100644
> --- a/debugfs.ocfs2/include/dump_dlm_locks.h
> +++ b/debugfs.ocfs2/include/dump_dlm_locks.h
> @@ -74,7 +74,7 @@ struct lock {
>  	struct list_head list;
>  };
>  
> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int dump_lvbs,
>  		    struct list_head *locklist);
>  
>  #endif		/* _DUMP_DLM_LOCKS_H_ */
> -- 
> 1.6.0.2
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
Mark Fasheh

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file
  2008-12-26 22:39 ` Mark Fasheh
@ 2008-12-26 23:04   ` Sunil Mushran
  0 siblings, 0 replies; 4+ messages in thread
From: Sunil Mushran @ 2008-12-26 23:04 UTC (permalink / raw)
  To: ocfs2-devel

I thought Tao had sob-ed it.

On Dec 26, 2008, at 2:39 PM, Mark Fasheh <mfasheh@suse.com> wrote:

> Anyone get a chance to sob this? It's pretty much a copy of the fs  
> locks
> patch...
>    --Mark
>
> On Thu, Dec 04, 2008 at 10:14:50PM -0800, Mark Fasheh wrote:
>> This way we can review locking state even if all a customer  
>> provides us is
>> the contents of /sys/kernel/debug/o2dlm/locking_state.
>>
>> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
>> ---
>> debugfs.ocfs2/commands.c               |   36 +++++++++++++++++++++ 
>> +-------
>> debugfs.ocfs2/dump_dlm_locks.c         |   38 +++++++++++++++++++ 
>> +-----------
>> debugfs.ocfs2/include/dump_dlm_locks.h |    2 +-
>> 3 files changed, 52 insertions(+), 24 deletions(-)
>>
>> diff --git a/debugfs.ocfs2/commands.c b/debugfs.ocfs2/commands.c
>> index 0e46151..06b6c98 100644
>> --- a/debugfs.ocfs2/commands.c
>> +++ b/debugfs.ocfs2/commands.c
>> @@ -831,7 +831,7 @@ static void do_help (char **args)
>>    printf ("controld dump\t\t\tObtain information from  
>> ocfs2_controld\n");
>>    printf ("curdev\t\t\t\t\tShow current device\n");
>>    printf ("decode <lockname#> ...\t\t\tDecode block#(s) from the  
>> lockname(s)\n");
>> -    printf ("dlm_locks [-l] lockname\t\t\tShow live dlm locking  
>> state\n");
>> +    printf ("dlm_locks [-f <file>] [-l] lockname\t\t\tShow live  
>> dlm locking state\n");
>>    printf ("dump [-p] <filespec> <outfile>\t\tDumps file to outfile  
>> on a mounted fs\n");
>>    printf ("encode <filespec>\t\t\tShow lock name\n");
>>    printf ("extent <block#>\t\t\t\tShow extent block\n");
>> @@ -1485,26 +1485,44 @@ static void do_dlm_locks(char **args)
>>    int dump_lvbs = 0;
>>    int i;
>>    struct list_head locklist;
>> -
>> -    if (check_device_open())
>> -        return;
>> +    char *path = NULL, *uuid_str = NULL;
>> +    int c, argc;
>>
>>    init_stringlist(&locklist);
>>
>> -    i = 1;
>> -    if (args[i] && strlen(args[i])) {
>> -        if (!strcmp("-l", args[i])) {
>> +    for (argc = 0; (args[argc]); ++argc);
>> +    optind = 0;
>> +
>> +    while ((c = getopt(argc, args, "lf:")) != -1) {
>> +        switch (c) {
>> +        case 'l':
>>            dump_lvbs = 1;
>> -            i++;
>> +            break;
>> +        case 'f':
>> +            path = optarg;
>> +            break;
>> +        default:
>> +            break;
>>        }
>> +    }
>> +    if ((path == NULL)) {
>> +        /* Only error for a missing device if we're asked to
>> +         * read from a live file system. */
>> +        if (check_device_open())
>> +            return;
>> +
>> +        uuid_str = gbls.fs->uuid_str;
>> +    }
>>
>> +    i = optind;
>> +    if (args[i] && strlen(args[i])) {
>>        for ( ; args[i] && strlen(args[i]); ++i)
>>            if (add_to_stringlist(args[i], &locklist))
>>                break;
>>    }
>>
>>    out = open_pager(gbls.interactive);
>> -    dump_dlm_locks(gbls.fs->uuid_str, out, dump_lvbs, &locklist);
>> +    dump_dlm_locks(uuid_str, out, path, dump_lvbs, &locklist);
>>    close_pager(out);
>>
>>    free_stringlist(&locklist);
>> diff --git a/debugfs.ocfs2/dump_dlm_locks.c b/debugfs.ocfs2/ 
>> dump_dlm_locks.c
>> index b946821..6344ff1 100644
>> --- a/debugfs.ocfs2/dump_dlm_locks.c
>> +++ b/debugfs.ocfs2/dump_dlm_locks.c
>> @@ -411,7 +411,7 @@ static int get_next_dlm_lockname(FILE *file,  
>> char *name, int len)
>>    return 0;
>> }
>>
>> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
>> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int  
>> dump_lvbs,
>>            struct list_head *locklist)
>> {
>>    errcode_t ret;
>> @@ -421,20 +421,30 @@ void dump_dlm_locks(char *uuid, FILE *out,  
>> int dump_lvbs,
>>    struct lockres res;
>>    int show_all_locks = 0;
>>
>> -    ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
>> -    if (ret) {
>> -        fprintf(stderr, "Could not locate debugfs file system. "
>> -            "Perhaps it is not mounted?\n");
>> -        return;
>> -    }
>> +    if (path == NULL) {
>> +        ret = get_debugfs_path(debugfs_path, sizeof(debugfs_path));
>> +        if (ret) {
>> +            fprintf(stderr, "Could not locate debugfs file system. "
>> +                "Perhaps it is not mounted?\n");
>> +            return;
>> +        }
>>
>> -    ret = open_debugfs_file(debugfs_path, "o2dlm", uuid,  
>> "locking_state",
>> -                &file);
>> -    if (ret) {
>> -        fprintf(stderr, "Could not open debug state for \"%s\".\n"
>> -            "Perhaps that OCFS2 file system is not mounted?\n",
>> -            uuid);
>> -        return;
>> +        ret = open_debugfs_file(debugfs_path, "o2dlm", uuid,
>> +                    "locking_state", &file);
>> +        if (ret) {
>> +            fprintf(stderr,
>> +                "Could not open debug state for \"%s\".\n"
>> +                "Perhaps that OCFS2 file system is not mounted?\n",
>> +                uuid);
>> +            return;
>> +        }
>> +    } else {
>> +        file = fopen(path, "r");
>> +        if (!file) {
>> +            fprintf(stderr, "Could not open file at \"%s\"\n",
>> +                path);
>> +            return;
>> +        }
>>    }
>>
>>    show_all_locks = list_empty(locklist);
>> diff --git a/debugfs.ocfs2/include/dump_dlm_locks.h b/debugfs.ocfs2/ 
>> include/dump_dlm_locks.h
>> index 2cbb72a..7bc35ba 100644
>> --- a/debugfs.ocfs2/include/dump_dlm_locks.h
>> +++ b/debugfs.ocfs2/include/dump_dlm_locks.h
>> @@ -74,7 +74,7 @@ struct lock {
>>    struct list_head list;
>> };
>>
>> -void dump_dlm_locks(char *uuid, FILE *out, int dump_lvbs,
>> +void dump_dlm_locks(char *uuid, FILE *out, char *path, int  
>> dump_lvbs,
>>            struct list_head *locklist);
>>
>> #endif        /* _DUMP_DLM_LOCKS_H_ */
>> -- 
>> 1.6.0.2
>>
>>
>> _______________________________________________
>> Ocfs2-devel mailing list
>> Ocfs2-devel at oss.oracle.com
>> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
> --
> Mark Fasheh
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-12-26 23:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-05  6:14 [Ocfs2-devel] [PATCH] debugfs.ocfs2: Allow dumping dlm locks from a file Mark Fasheh
2008-12-05  6:56 ` Tao Ma
2008-12-26 22:39 ` Mark Fasheh
2008-12-26 23:04   ` Sunil Mushran

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.