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>
struct log_entry {
int operation;
struct log_entry {
int operation;
+ int nr_args;
+ int args[4];
+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)
{
void
log4(int operation, int arg0, int arg1, enum opflags flags)
{
le->args[0] = arg0;
le->args[1] = arg1;
le->args[2] = file_size;
le->args[0] = arg0;
le->args[1] = arg1;
le->args[2] = file_size;
le->flags = flags;
logptr++;
logcount++;
le->flags = flags;
logptr++;
logcount++;
if (lp->flags & FL_SKIPPED)
fprintf(logopsf, "skip ");
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)
if (lp->flags & FL_KEEP_SIZE)
fprintf(logopsf, " keep_size");
if (lp->flags & FL_CLOSE_OPEN)
+static int
+op_args_count(int operation)
+{
+ switch (operation) {
+ default:
+ return 3;
+ }
+}
+
static int
read_op(struct log_entry *log_entry)
{
static int
read_op(struct log_entry *log_entry)
{
log_entry->operation = op_code(str);
if (log_entry->operation == -1)
goto fail;
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");
char *end;
str = strtok(NULL, " \t\n");