Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit 1d31d1bcffe0b282aaadca12dc83d2dd671b84f2:

  parse: remove the arithmetic parser checking (2014-12-17 13:27:32 -0700)

are available in the git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to 2243dfc796a8a6e137893a57a77949df7657dd71:

  options: add debug code for failure to lookup option names (2014-12-18 21:51:21 -0700)

----------------------------------------------------------------
Jens Axboe (4):
      t/btrace2fio: add ability to add specific options through -a
      Merge branch 'master' of ssh://git.kernel.dk/data/git/fio
      mutex: add __fio_mutex_remove()
      options: add debug code for failure to lookup option names

 filelock.c     |    5 +++--
 mutex.c        |    7 ++++++-
 mutex.h        |    1 +
 options.c      |    2 +-
 options.h      |   11 +++++++++--
 server.c       |    1 +
 t/btrace2fio.c |   15 ++++++++++++++-
 7 files changed, 35 insertions(+), 7 deletions(-)

---

Diff of recent changes:

diff --git a/filelock.c b/filelock.c
index b252a97..18e8875 100644
--- a/filelock.c
+++ b/filelock.c
@@ -144,10 +144,11 @@ void fio_unlock_file(const char *fname)
 
 	ff = fio_hash_find(hash);
 	if (ff) {
-		ff->references--;
+		int refs = --ff->references;
 		fio_mutex_up(&ff->lock);
-		if (!ff->references) {
+		if (!refs) {
 			flist_del(&ff->list);
+			__fio_mutex_remove(&ff->lock);
 			sfree(ff);
 		}
 	} else
diff --git a/mutex.c b/mutex.c
index 9ee3bd8..53f9651 100644
--- a/mutex.c
+++ b/mutex.c
@@ -18,10 +18,15 @@
 #include "fio_time.h"
 #include "gettime.h"
 
-void fio_mutex_remove(struct fio_mutex *mutex)
+void __fio_mutex_remove(struct fio_mutex *mutex)
 {
 	assert(mutex->magic == FIO_MUTEX_MAGIC);
 	pthread_cond_destroy(&mutex->cond);
+}
+
+void fio_mutex_remove(struct fio_mutex *mutex)
+{
+	__fio_mutex_remove(mutex);
 	munmap((void *) mutex, sizeof(*mutex));
 }
 
diff --git a/mutex.h b/mutex.h
index 246afee..17380de 100644
--- a/mutex.h
+++ b/mutex.h
@@ -26,6 +26,7 @@ enum {
 
 extern int __fio_mutex_init(struct fio_mutex *, int);
 extern struct fio_mutex *fio_mutex_init(int);
+extern void __fio_mutex_remove(struct fio_mutex *);
 extern void fio_mutex_remove(struct fio_mutex *);
 extern void fio_mutex_up(struct fio_mutex *);
 extern void fio_mutex_down(struct fio_mutex *);
diff --git a/options.c b/options.c
index 80a7047..6ceefbc 100644
--- a/options.c
+++ b/options.c
@@ -4206,7 +4206,7 @@ int __fio_option_is_set(struct thread_options *o, unsigned int off1)
 
 	if (!opt) {
 		log_err("fio: no option found at offset %u\n", off1);
-		return 0;
+		return -1;
 	}
 
 	opt_off = opt - &fio_options[0];
diff --git a/options.h b/options.h
index fa015c3..e830884 100644
--- a/options.h
+++ b/options.h
@@ -24,8 +24,15 @@ extern struct fio_option fio_options[FIO_MAX_OPTS];
 
 extern int __fio_option_is_set(struct thread_options *, unsigned int off);
 
-#define fio_option_is_set(__td, name)	\
-	__fio_option_is_set((__td), td_var_offset(name))
+#define fio_option_is_set(__td, name)					\
+({									\
+	int __r = __fio_option_is_set((__td), td_var_offset(name));	\
+	if (__r == -1) {						\
+		log_err("fio: wanted %s\n", __fio_stringify(name));	\
+		__r = 0;						\
+	}								\
+	__r;								\
+})
 
 extern void fio_option_mark_set(struct thread_options *, struct fio_option *);
 
diff --git a/server.c b/server.c
index ede291f..3171979 100644
--- a/server.c
+++ b/server.c
@@ -1431,6 +1431,7 @@ fail:
 	*datap = data;
 
 	sfree(rep->data);
+	__fio_mutex_remove(&rep->lock);
 	sfree(rep);
 	return 0;
 }
diff --git a/t/btrace2fio.c b/t/btrace2fio.c
index fc1e4c7..d0b7e09 100644
--- a/t/btrace2fio.c
+++ b/t/btrace2fio.c
@@ -24,6 +24,9 @@ static unsigned int max_depth = 256;
 static int output_ascii = 1;
 static char *filename;
 
+static char **add_opts;
+static int n_add_opts;
+
 /*
  * Collapse defaults
  */
@@ -752,6 +755,10 @@ static int __output_p_fio(struct btrace_pid *p, unsigned long *ios)
 		printf("\n");
 	}
 
+	if (n_add_opts)
+		for (i = 0; i < n_add_opts; i++)
+			printf("%s\n", add_opts[i]);
+
 	printf("\n");
 	return 0;
 }
@@ -1020,6 +1027,7 @@ static int usage(char *argv[])
 	log_err("\t-c\tCollapse \"identical\" jobs (def=%u)\n", collapse_entries);
 	log_err("\t-u\tDepth difference for collapse (def=%u)\n", depth_diff);
 	log_err("\t-x\tRandom difference for collapse (def=%u)\n", random_diff);
+	log_err("\t-a\tAdditional fio option to add to job file\n");
 	return 1;
 }
 
@@ -1075,7 +1083,7 @@ int main(int argc, char *argv[])
 	if (argc < 2)
 		return usage(argv);
 
-	while ((c = getopt(argc, argv, "t:n:fd:r:RD:c:u:x:")) != -1) {
+	while ((c = getopt(argc, argv, "t:n:fd:r:RD:c:u:x:a:")) != -1) {
 		switch (c) {
 		case 'R':
 			set_rate = 1;
@@ -1107,6 +1115,11 @@ int main(int argc, char *argv[])
 		case 'x':
 			random_diff = atoi(optarg);
 			break;
+		case 'a':
+			add_opts = realloc(add_opts, (n_add_opts + 1) * sizeof(char *));
+			add_opts[n_add_opts] = strdup(optarg);
+			n_add_opts++;
+			break;
 		case '?':
 		default:
 			return usage(argv);
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux