Flexible I/O Tester development
 help / color / mirror / Atom feed
* [PATCH] gracefully handle full /tmp file system
@ 2010-06-25 15:24 Greg Edwards
  2010-06-26 20:51 ` Jens Axboe
  0 siblings, 1 reply; 2+ messages in thread
From: Greg Edwards @ 2010-06-25 15:24 UTC (permalink / raw)
  To: fio

If /tmp happens to be full, fio gives you a very unhelpful error:

# ./fio rand-write-256k-q256.job
Bus error

Use posix_fallocate() to gracefully handle this condition.

Signed-off-by: Greg Edwards <greg.edwards@hp.com>
---
 mutex.c   |    8 ++++++++
 smalloc.c |   12 +++++++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/mutex.c b/mutex.c
index abe073f..88044f3 100644
--- a/mutex.c
+++ b/mutex.c
@@ -33,6 +33,14 @@ struct fio_mutex *fio_mutex_init(int value)
 		return NULL;
 	}
 
+#ifdef FIO_HAVE_FALLOCATE
+	ret = posix_fallocate(fd, 0, sizeof(struct fio_mutex));
+	if (ret > 0) {
+		fprintf(stderr, "posix_fallocate mutex failed: %s\n", strerror(ret));
+		goto err;
+	}
+#endif
+
 	if (ftruncate(fd, sizeof(struct fio_mutex)) < 0) {
 		perror("ftruncate mutex");
 		goto err;
diff --git a/smalloc.c b/smalloc.c
index 409998a..4cd8298 100644
--- a/smalloc.c
+++ b/smalloc.c
@@ -10,9 +10,11 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <limits.h>
+#include <fcntl.h>
 
 #include "mutex.h"
 #include "arch/arch.h"
+#include "os/os.h"
 
 #define SMALLOC_REDZONE		/* define to detect memory corruption */
 
@@ -176,7 +178,7 @@ static int find_next_zero(int word, int start)
 
 static int add_pool(struct pool *pool, unsigned int alloc_size)
 {
-	int fd, bitmap_blocks;
+	int fd, bitmap_blocks, ret;
 	char file[] = "/tmp/.fio_smalloc.XXXXXX";
 	void *ptr;
 
@@ -200,6 +202,14 @@ static int add_pool(struct pool *pool, unsigned int alloc_size)
 	pool->nr_blocks = bitmap_blocks;
 	pool->free_blocks = bitmap_blocks * SMALLOC_BPB;
 
+#ifdef FIO_HAVE_FALLOCATE
+	ret = posix_fallocate(fd, 0, alloc_size);
+	if (ret > 0) {
+		fprintf(stderr, "posix_fallocate pool file failed: %s\n", strerror(ret));
+		goto out_unlink;
+	}
+#endif
+
 	if (ftruncate(fd, alloc_size) < 0)
 		goto out_unlink;
 
-- 
1.7.0.5


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-06-26 20:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-25 15:24 [PATCH] gracefully handle full /tmp file system Greg Edwards
2010-06-26 20:51 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox