Recent changes (master)

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

 



The following changes since commit d7df1d133b0c3daad4ae4c731e0dae7b0181fd62:

  Rework lockfile= file lock handling (2013-03-20 19:57:01 -0600)

are available in the git repository at:
  git://git.kernel.dk/fio.git master

Jens Axboe (3):
      Kill now unused lockfile_batch variable
      mutex: add magic checks
      Only attempt file unlock if we use locking

 fio.h       |    1 -
 ioengines.c |    4 +++-
 mutex.c     |   15 +++++++++++++++
 mutex.h     |    5 +++++
 4 files changed, 23 insertions(+), 2 deletions(-)

---

Diff of recent changes:

diff --git a/fio.h b/fio.h
index 67388ae..4478eb6 100644
--- a/fio.h
+++ b/fio.h
@@ -135,7 +135,6 @@ struct thread_options {
 	unsigned int nr_files;
 	unsigned int open_files;
 	enum file_lock_mode file_lock_mode;
-	unsigned int lockfile_batch;
 
 	unsigned int odirect;
 	unsigned int invalidate_cache;
diff --git a/ioengines.c b/ioengines.c
index 234f8ed..4d1491c 100644
--- a/ioengines.c
+++ b/ioengines.c
@@ -475,7 +475,9 @@ int td_io_close_file(struct thread_data *td, struct fio_file *f)
 	fio_file_set_closing(f);
 
 	disk_util_dec(f->du);
-	unlock_file_all(td, f);
+
+	if (td->o.file_lock_mode != FILE_LOCK_NONE)
+		unlock_file_all(td, f);
 
 	return put_file(td, f);
 }
diff --git a/mutex.c b/mutex.c
index 332e9f9..af5e501 100644
--- a/mutex.c
+++ b/mutex.c
@@ -7,6 +7,7 @@
 #include <errno.h>
 #include <pthread.h>
 #include <sys/mman.h>
+#include <assert.h>
 
 #include "fio.h"
 #include "log.h"
@@ -19,6 +20,7 @@
 
 void fio_mutex_remove(struct fio_mutex *mutex)
 {
+	assert(mutex->magic = FIO_MUTEX_MAGIC);
 	pthread_cond_destroy(&mutex->cond);
 	munmap((void *) mutex, sizeof(*mutex));
 }
@@ -40,6 +42,7 @@ struct fio_mutex *fio_mutex_init(int value)
 	}
 
 	mutex->value = value;
+	mutex->magic = FIO_MUTEX_MAGIC;
 
 	ret = pthread_mutexattr_init(&attr);
 	if (ret) {
@@ -92,6 +95,8 @@ int fio_mutex_down_timeout(struct fio_mutex *mutex, unsigned int seconds)
 	struct timespec t;
 	int ret = 0;
 
+	assert(mutex->magic = FIO_MUTEX_MAGIC);
+
 	gettimeofday(&tv_s, NULL);
 	t.tv_sec = tv_s.tv_sec + seconds;
 	t.tv_nsec = tv_s.tv_usec * 1000;
@@ -122,6 +127,8 @@ int fio_mutex_down_timeout(struct fio_mutex *mutex, unsigned int seconds)
 
 void fio_mutex_down(struct fio_mutex *mutex)
 {
+	assert(mutex->magic = FIO_MUTEX_MAGIC);
+
 	pthread_mutex_lock(&mutex->lock);
 
 	while (!mutex->value) {
@@ -136,6 +143,8 @@ void fio_mutex_down(struct fio_mutex *mutex)
 
 void fio_mutex_up(struct fio_mutex *mutex)
 {
+	assert(mutex->magic = FIO_MUTEX_MAGIC);
+
 	pthread_mutex_lock(&mutex->lock);
 	read_barrier();
 	if (!mutex->value && mutex->waiters)
@@ -146,21 +155,25 @@ void fio_mutex_up(struct fio_mutex *mutex)
 
 void fio_rwlock_write(struct fio_rwlock *lock)
 {
+	assert(lock->magic = FIO_RWLOCK_MAGIC);
 	pthread_rwlock_wrlock(&lock->lock);
 }
 
 void fio_rwlock_read(struct fio_rwlock *lock)
 {
+	assert(lock->magic = FIO_RWLOCK_MAGIC);
 	pthread_rwlock_rdlock(&lock->lock);
 }
 
 void fio_rwlock_unlock(struct fio_rwlock *lock)
 {
+	assert(lock->magic = FIO_RWLOCK_MAGIC);
 	pthread_rwlock_unlock(&lock->lock);
 }
 
 void fio_rwlock_remove(struct fio_rwlock *lock)
 {
+	assert(lock->magic = FIO_RWLOCK_MAGIC);
 	munmap((void *) lock, sizeof(*lock));
 }
 
@@ -178,6 +191,8 @@ struct fio_rwlock *fio_rwlock_init(void)
 		goto err;
 	}
 
+	lock->magic = FIO_RWLOCK_MAGIC;
+
 	ret = pthread_rwlock_init(&lock->lock, NULL);
 	if (ret) {
 		log_err("pthread_rwlock_init: %s\n", strerror(ret));
diff --git a/mutex.h b/mutex.h
index 49a66e3..4f3486d 100644
--- a/mutex.h
+++ b/mutex.h
@@ -3,15 +3,20 @@
 
 #include <pthread.h>
 
+#define FIO_MUTEX_MAGIC		0x4d555445U
+#define FIO_RWLOCK_MAGIC	0x52574c4fU
+
 struct fio_mutex {
 	pthread_mutex_t lock;
 	pthread_cond_t cond;
 	int value;
 	int waiters;
+	int magic;
 };
 
 struct fio_rwlock {
 	pthread_rwlock_t lock;
+	int magic;
 };
 
 enum {
--
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