[06/12] fsx: add five-argument logging function
diff mbox series

Message ID 154290954603.1218.7246941650070239499.stgit@magnolia
State New
Headers show
Series
  • xfstests: add copy/dedupe/clone to fsx/fsstress
Related show

Commit Message

Darrick J. Wong Nov. 22, 2018, 5:59 p.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

Add a five-argument logging function to support new operations.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 ltp/fsx.c |   45 ++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 40 insertions(+), 5 deletions(-)

Comments

Allison Henderson Nov. 24, 2018, 6:23 p.m. UTC | #1
Ok, you can add my review:

Reviewed-By: Allison Henderson <allison.henderson@oracle.com>

On 11/22/18 10:59 AM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Add a five-argument logging function to support new operations.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>   ltp/fsx.c |   45 ++++++++++++++++++++++++++++++++++++++++-----
>   1 file changed, 40 insertions(+), 5 deletions(-)
> 
> 
> diff --git a/ltp/fsx.c b/ltp/fsx.c
> index dabad302..c525ba13 100644
> --- a/ltp/fsx.c
> +++ b/ltp/fsx.c
> @@ -51,7 +51,8 @@ enum opflags { FL_NONE = 0, FL_SKIPPED = 1, FL_CLOSE_OPEN = 2, FL_KEEP_SIZE = 4
>   
>   struct log_entry {
>   	int	operation;
> -	int	args[3];
> +	int	nr_args;
> +	int	args[4];
>   	enum opflags flags;
>   };
>   
> @@ -278,6 +279,27 @@ static int op_code(const char *name)
>   	return -1;
>   }
>   
> +void
> +log5(int operation, int arg0, int arg1, int arg2, enum opflags flags)
> +{
> +	struct log_entry *le;
> +
> +	le = &oplog[logptr];
> +	le->operation = operation;
> +	if (closeopen)
> +		flags |= FL_CLOSE_OPEN;
> +	le->args[0] = arg0;
> +	le->args[1] = arg1;
> +	le->args[2] = arg2;
> +	le->args[3] = file_size;
> +	le->nr_args = 4;
> +	le->flags = flags;
> +	logptr++;
> +	logcount++;
> +	if (logptr >= LOGSIZE)
> +		logptr = 0;
> +}
> +
>   void
>   log4(int operation, int arg0, int arg1, enum opflags flags)
>   {
> @@ -290,6 +312,7 @@ log4(int operation, int arg0, int arg1, enum opflags flags)
>   	le->args[0] = arg0;
>   	le->args[1] = arg1;
>   	le->args[2] = file_size;
> +	le->nr_args = 3;
>   	le->flags = flags;
>   	logptr++;
>   	logcount++;
> @@ -439,11 +462,13 @@ logdump(void)
>   			i = 0;
>   
>   		if (logopsf) {
> +			int j;
> +
>   			if (lp->flags & FL_SKIPPED)
>   				fprintf(logopsf, "skip ");
> -			fprintf(logopsf, "%s 0x%x 0x%x 0x%x",
> -				op_name(lp->operation),
> -				lp->args[0], lp->args[1], lp->args[2]);
> +			fprintf(logopsf, "%s", op_name(lp->operation));
> +			for (j = 0; j < lp->nr_args; j++)
> +				fprintf(logopsf, " 0x%x", lp->args[j]);
>   			if (lp->flags & FL_KEEP_SIZE)
>   				fprintf(logopsf, " keep_size");
>   			if (lp->flags & FL_CLOSE_OPEN)
> @@ -1413,6 +1438,15 @@ cleanup(int sig)
>   	exit(sig);
>   }
>   
> +static int
> +op_args_count(int operation)
> +{
> +	switch (operation) {
> +	default:
> +		return 3;
> +	}
> +}
> +
>   static int
>   read_op(struct log_entry *log_entry)
>   {
> @@ -1445,7 +1479,8 @@ read_op(struct log_entry *log_entry)
>   		log_entry->operation = op_code(str);
>   		if (log_entry->operation == -1)
>   			goto fail;
> -		for (i = 0; i < 3; i++) {
> +		log_entry->nr_args = op_args_count(log_entry->operation);
> +		for (i = 0; i < log_entry->nr_args; i++) {
>   			char *end;
>   
>   			str = strtok(NULL, " \t\n");
>

Patch
diff mbox series

diff --git a/ltp/fsx.c b/ltp/fsx.c
index dabad302..c525ba13 100644
--- a/ltp/fsx.c
+++ b/ltp/fsx.c
@@ -51,7 +51,8 @@  enum opflags { FL_NONE = 0, FL_SKIPPED = 1, FL_CLOSE_OPEN = 2, FL_KEEP_SIZE = 4
 
 struct log_entry {
 	int	operation;
-	int	args[3];
+	int	nr_args;
+	int	args[4];
 	enum opflags flags;
 };
 
@@ -278,6 +279,27 @@  static int op_code(const char *name)
 	return -1;
 }
 
+void
+log5(int operation, int arg0, int arg1, int arg2, enum opflags flags)
+{
+	struct log_entry *le;
+
+	le = &oplog[logptr];
+	le->operation = operation;
+	if (closeopen)
+		flags |= FL_CLOSE_OPEN;
+	le->args[0] = arg0;
+	le->args[1] = arg1;
+	le->args[2] = arg2;
+	le->args[3] = file_size;
+	le->nr_args = 4;
+	le->flags = flags;
+	logptr++;
+	logcount++;
+	if (logptr >= LOGSIZE)
+		logptr = 0;
+}
+
 void
 log4(int operation, int arg0, int arg1, enum opflags flags)
 {
@@ -290,6 +312,7 @@  log4(int operation, int arg0, int arg1, enum opflags flags)
 	le->args[0] = arg0;
 	le->args[1] = arg1;
 	le->args[2] = file_size;
+	le->nr_args = 3;
 	le->flags = flags;
 	logptr++;
 	logcount++;
@@ -439,11 +462,13 @@  logdump(void)
 			i = 0;
 
 		if (logopsf) {
+			int j;
+
 			if (lp->flags & FL_SKIPPED)
 				fprintf(logopsf, "skip ");
-			fprintf(logopsf, "%s 0x%x 0x%x 0x%x",
-				op_name(lp->operation),
-				lp->args[0], lp->args[1], lp->args[2]);
+			fprintf(logopsf, "%s", op_name(lp->operation));
+			for (j = 0; j < lp->nr_args; j++)
+				fprintf(logopsf, " 0x%x", lp->args[j]);
 			if (lp->flags & FL_KEEP_SIZE)
 				fprintf(logopsf, " keep_size");
 			if (lp->flags & FL_CLOSE_OPEN)
@@ -1413,6 +1438,15 @@  cleanup(int sig)
 	exit(sig);
 }
 
+static int
+op_args_count(int operation)
+{
+	switch (operation) {
+	default:
+		return 3;
+	}
+}
+
 static int
 read_op(struct log_entry *log_entry)
 {
@@ -1445,7 +1479,8 @@  read_op(struct log_entry *log_entry)
 		log_entry->operation = op_code(str);
 		if (log_entry->operation == -1)
 			goto fail;
-		for (i = 0; i < 3; i++) {
+		log_entry->nr_args = op_args_count(log_entry->operation);
+		for (i = 0; i < log_entry->nr_args; i++) {
 			char *end;
 
 			str = strtok(NULL, " \t\n");