fsx: add five-argument logging function

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

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-By: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Darrick J. Wong
2018-12-06 22:23:58 -08:00
committed by Eryu Guan
parent 7a9db35d56
commit e05b9c781a
+40 -5
View File
@@ -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)
@@ -1432,6 +1457,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)
{
@@ -1464,7 +1498,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");