summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sys-block/fio
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sys-block/fio')
-rw-r--r--sys-block/fio/Manifest7
-rw-r--r--sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch29
-rw-r--r--sys-block/fio/files/fio-2.1.10-json.patch32
-rw-r--r--sys-block/fio/files/fio-2.2.9-atomic-sync.patch140
-rw-r--r--sys-block/fio/fio-1.17.2.ebuild29
-rw-r--r--sys-block/fio/fio-1.99.10.ebuild44
-rw-r--r--sys-block/fio/fio-2.0.14-r1.ebuild52
-rw-r--r--sys-block/fio/fio-2.0.15.ebuild52
-rw-r--r--sys-block/fio/fio-2.1.9.ebuild81
-rw-r--r--sys-block/fio/fio-2.2.4-r1.ebuild85
-rw-r--r--sys-block/fio/fio-2.2.9.ebuild86
-rw-r--r--sys-block/fio/metadata.xml18
12 files changed, 655 insertions, 0 deletions
diff --git a/sys-block/fio/Manifest b/sys-block/fio/Manifest
new file mode 100644
index 00000000000..4ba9b13b876
--- /dev/null
+++ b/sys-block/fio/Manifest
@@ -0,0 +1,7 @@
+DIST fio-1.17.2.tar.bz2 1155486 SHA256 1bf40fb709b7e7dbee778139cabae6b70ec6a89a43ddd83450a6b981bf813498 SHA512 99ea0da474f2d23d17a4c8775d1ec0421c020f072e2ccfbf920cbf52edac934e365dac38cdbd15993dfa72dd09b81540b0b9802f1896f031e8682fdfd805ee4b WHIRLPOOL 61da7007e3b591b148f3ffba45c3c1ecf646c47ad08d78c258cdca2906c441285fa0db738e5b0b0113a00ed178d99973b5b380a03690fe5d2e279a361cea0201
+DIST fio-1.99.10.tar.bz2 371892 SHA256 c6af6f685dfaa32c1f5779497f8d1b3dc1e18fc54bf35f0f3bb8120cf4ac2b3a SHA512 23bc2eaeed310d092a84cac06c701ccbe7c4ec45d98323f2e5ab3e4ccbea4b901edf2099dba1aed6fb31254c177228369e5983622a078ac33dc947a532693d87 WHIRLPOOL a4727121239f592f75f1a118f63370ee811c8f8b4396a253debd5ccc8a92641624d6bee65fb9b6c882e5dde41e5144d66457f47fef79942117a1a865f7183075
+DIST fio-2.0.14.tar.bz2 253574 SHA256 4bf01f1d2baf6d4fa905e5489e446e85e01979c427b2c38e2915e039248044e5 SHA512 f58024aeb38026e62cfec5a3ec9ceffb0bd1361a65cf89513a36615aa084974461c7f132ae803d49f02c36d36a6029c52f851e7f8b2cd1c66be0dcdc9fdcf115 WHIRLPOOL cb4812b34a59df41dfc6e293518becfe43515fa228b3dcb1400af987f465d7c1251b9d2645395fb7f2991728a67133bc1f1b0124db88963a1d9b11b29d949e26
+DIST fio-2.0.15.tar.bz2 258773 SHA256 3cc1b5e6c6955f9acad016b4d2ef619061ad9937874c7663e2a29777ed845ac4 SHA512 00289a0404cb44dd670614856932fbdf61cb1508e0eb672e5778c2ba3eba661b82892f7c969e4a82cf4fc487a744eb7411bfebf3b9612863de0197a28787f556 WHIRLPOOL 08b37573b63f812ea62c4ba323f05f510a9656e74f780117bd711bcc78e7fc7b5bef009212e7ec98f0ed153cc3786ece4d75d565845c0bc5eaba59afa1b037d8
+DIST fio-2.1.9.tar.bz2 429122 SHA256 4ae877939a1a1460ad4d93f7891a15bad8ca7295f441204b12c723758a0d4493 SHA512 91913941c0d83705c156eef550eb87b388368804ee722c8c99ea638481ee657960e333c58b54e720034e92c2c34e9a8bb901336399a209a87f5eaa1ad1dfde53 WHIRLPOOL 6f44cbfe601f436b1ed0173e1dfbcf3b342f1a191c947392f0167a2dba9c4806fa422ffaedf9475f83b49fab8832aa1076ba91d27a9f2bdbcae126fa4d708824
+DIST fio-2.2.4.tar.bz2 467312 SHA256 9e1c77216457d9e21e418a55fa28bc1f98c283723fe9dcccff6138e3fb25285b SHA512 91fa0d8f9dd8d950dd26ef5c778414acddd9d6deeb84caeecdfef08df7e00c7972566a76bd242b0d5aea33a7c588aa05cf2fdcd79ef5a475277a2139d1f111a1 WHIRLPOOL 4588601d5f44c1836f97cc223bf08cce3f29f5ea3421880c00a16dcd9e3cffd741bbdd2029518712f8808548469d7f44f1b0348189643419bfd2104eab980536
+DIST fio-2.2.9.tar.bz2 492404 SHA256 c881d9cf15500bd4436970d0467c356c5c021417131587931ba78845e965bf56 SHA512 e0cd26bb8a760ef5e40ddb73246671c1988f0c0886bd24fa510fcab93fe64d8853f120355f55fa109168c7fae0b081f63278f2233644f5ed20da4e4c3cb3f3fc WHIRLPOOL 4f5ada7f1140c7229fc3173fa0582a4ae7401121768d8dec828dcd42c1c22ec828e9c000c482b155ead4fd75ee15c4d7678fc7c6d18c8fbb9c749e83f87a4881
diff --git a/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch b/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch
new file mode 100644
index 00000000000..fa35e27c754
--- /dev/null
+++ b/sys-block/fio/files/fio-2.0.14-pic-clobber-fix.patch
@@ -0,0 +1,29 @@
+diff -Nuar fio-2.0.14.orig/arch/arch-x86-common.h fio-2.0.14/arch/arch-x86-common.h
+--- fio-2.0.14.orig/arch/arch-x86-common.h 2013-02-21 18:12:32.000000000 +0000
++++ fio-2.0.14/arch/arch-x86-common.h 2013-03-27 01:48:04.000000000 +0000
+@@ -6,10 +6,24 @@
+ static inline void do_cpuid(unsigned int *eax, unsigned int *ebx,
+ unsigned int *ecx, unsigned int *edx)
+ {
++#ifdef __PIC__
++ /* 32-bit Hardened GCC (PIC) uses register EBX, so it must be preserved
++ * Fix ported from Gentoo's x86info-1.24-pic patch
++ * http://tuxion.com/2010/07/02/clobber-registers.html */
++ asm volatile(
++ "movl %%ebx,%%edi\n"
++ "cpuid\n"
++ "movl %%ebx,%1\n"
++ "movl %%edi,%%ebx\n"
++ : "=a" (*eax), "=m" (*ebx), "=c" (*ecx), "=d" (*edx)
++ : "0" (*eax), "2" (*ecx)
++ : "memory", "%edi");
++#else
+ asm volatile("cpuid"
+ : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
+ : "0" (*eax), "2" (*ecx)
+ : "memory");
++#endif
+ }
+
+ static inline void cpuid(unsigned int op,
+
diff --git a/sys-block/fio/files/fio-2.1.10-json.patch b/sys-block/fio/files/fio-2.1.10-json.patch
new file mode 100644
index 00000000000..526be9b7622
--- /dev/null
+++ b/sys-block/fio/files/fio-2.1.10-json.patch
@@ -0,0 +1,32 @@
+From a606a802173272002e37be6475802be8c37481d6 Mon Sep 17 00:00:00 2001
+From: Puthikorn Voravootivat <puthik@chromium.org>
+Date: Tue, 24 Jun 2014 15:59:53 -0700
+Subject: [PATCH] Cast input argument for json_object_add_value_int to long
+ long
+
+The latency related (and some other) variables type is uint32_t
+but the JSON integer type is long long. So we need to cast
+the numbers to long long type to make JSON output correctly.
+
+Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
+Signed-off-by: Jens Axboe <axboe@fb.com>
+---
+ json.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/json.h b/json.h
+index 081afd6..962c11c 100644
+--- a/json.h
++++ b/json.h
+@@ -52,7 +52,7 @@ void json_free_object(struct json_object *obj);
+
+ int json_object_add_value_type(struct json_object *obj, const char *name, int type, ...);
+ #define json_object_add_value_int(obj, name, val) \
+- json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (val))
++ json_object_add_value_type((obj), name, JSON_TYPE_INTEGER, (long long) (val))
+ #define json_object_add_value_float(obj, name, val) \
+ json_object_add_value_type((obj), name, JSON_TYPE_FLOAT, (val))
+ #define json_object_add_value_string(obj, name, val) \
+--
+2.0.0
+
diff --git a/sys-block/fio/files/fio-2.2.9-atomic-sync.patch b/sys-block/fio/files/fio-2.2.9-atomic-sync.patch
new file mode 100644
index 00000000000..a8b32022e44
--- /dev/null
+++ b/sys-block/fio/files/fio-2.2.9-atomic-sync.patch
@@ -0,0 +1,140 @@
+fix from upstream
+
+From 2a2743361cf643b9dd2ba3e491da62e7cb83a101 Mon Sep 17 00:00:00 2001
+From: Jens Axboe <axboe@fb.com>
+Date: Mon, 29 Jun 2015 09:34:39 -0600
+Subject: [PATCH] workqueue: make it work on platforms without
+ __sync_fetch_and_add()
+
+Signed-off-by: Jens Axboe <axboe@fb.com>
+---
+ configure | 22 ++++++++++++++++++++++
+ workqueue.c | 22 ++++++++++++++++++++++
+ workqueue.h | 1 +
+ 3 files changed, 45 insertions(+)
+
+diff --git a/configure b/configure
+index e459d63..e5cf34d 100755
+--- a/configure
++++ b/configure
+@@ -271,6 +271,7 @@ CYGWIN*)
+ output_sym "CONFIG_TCP_NODELAY"
+ output_sym "CONFIG_TLS_THREAD"
+ output_sym "CONFIG_IPV6"
++ output_sym "CONFIG_SFA"
+ echo "CC=$CC" >> $config_host_mak
+ echo "BUILD_CFLAGS=$CFLAGS -include config-host.h -D_GNU_SOURCE" >> $config_host_mak
+ exit 0
+@@ -1492,6 +1493,24 @@ if compile_prog "" "" "getmntinfo"; then
+ fi
+ echo "getmntinfo $getmntinfo"
+
++##########################################
++# Check whether we have __sync_fetch_and_add()
++sfa=="no"
++cat > $TMPC << EOF
++#include <stdio.h>
++#include <stdlib.h>
++#include <inttypes.h>
++int main(int argc, char **argv)
++{
++ uint64_t dst = 1, src = 3;
++ __sync_fetch_and_add(&dst, src);
++}
++EOF
++if compile_prog "" "" "__sync_fetch_and_add"; then
++ sfa="yes"
++fi
++echo "__sync_fetch_and_add $sfa"
++
+ #############################################################################
+
+ if test "$wordsize" = "64" ; then
+@@ -1671,6 +1690,9 @@ fi
+ if test "$getmntinfo" = "yes" ; then
+ output_sym "CONFIG_GETMNTINFO"
+ fi
++if test "$sfa" = "yes" ; then
++ output_sym "CONFIG_SFA"
++fi
+
+ if test "$zlib" = "no" ; then
+ echo "Consider installing zlib-dev (zlib-devel), some fio features depend on it."
+diff --git a/workqueue.c b/workqueue.c
+index b9a967f..8f6963f 100644
+--- a/workqueue.c
++++ b/workqueue.c
+@@ -197,6 +197,7 @@ err:
+ return 1;
+ }
+
++#ifdef CONFIG_SFA
+ static void sum_val(uint64_t *dst, uint64_t *src)
+ {
+ if (*src) {
+@@ -204,15 +205,34 @@ static void sum_val(uint64_t *dst, uint64_t *src)
+ *src = 0;
+ }
+ }
++#else
++static void sum_val(uint64_t *dst, uint64_t *src)
++{
++ if (*src) {
++ *dst += *src;
++ *src = 0;
++ }
++}
++#endif
+
+ static void sum_ddir(struct thread_data *dst, struct thread_data *src,
+ enum fio_ddir ddir)
+ {
++#ifndef CONFIG_SFA
++ pthread_mutex_lock(&dst->io_wq.stat_lock);
++ pthread_mutex_lock(&src->io_wq.stat_lock);
++#endif
++
+ sum_val(&dst->io_bytes[ddir], &src->io_bytes[ddir]);
+ sum_val(&dst->io_blocks[ddir], &src->io_blocks[ddir]);
+ sum_val(&dst->this_io_blocks[ddir], &src->this_io_blocks[ddir]);
+ sum_val(&dst->this_io_bytes[ddir], &src->this_io_bytes[ddir]);
+ sum_val(&dst->bytes_done[ddir], &src->bytes_done[ddir]);
++
++#ifndef CONFIG_SFA
++ pthread_mutex_unlock(&src->io_wq.stat_lock);
++ pthread_mutex_unlock(&dst->io_wq.stat_lock);
++#endif
+ }
+
+ static void update_accounting(struct submit_worker *sw)
+@@ -355,6 +375,7 @@ void workqueue_exit(struct workqueue *wq)
+ free(wq->workers);
+ pthread_mutex_destroy(&wq->flush_lock);
+ pthread_cond_destroy(&wq->flush_cond);
++ pthread_mutex_destroy(&wq->stat_lock);
+ }
+
+ static int start_worker(struct workqueue *wq, unsigned int index)
+@@ -393,6 +414,7 @@ int workqueue_init(struct thread_data *td, struct workqueue *wq,
+ wq->next_free_worker = 0;
+ pthread_cond_init(&wq->flush_cond, NULL);
+ pthread_mutex_init(&wq->flush_lock, NULL);
++ pthread_mutex_init(&wq->stat_lock, NULL);
+
+ wq->workers = calloc(wq->max_workers, sizeof(struct submit_worker));
+
+diff --git a/workqueue.h b/workqueue.h
+index 5d47a5e..4e92449 100644
+--- a/workqueue.h
++++ b/workqueue.h
+@@ -17,6 +17,7 @@ struct workqueue {
+
+ pthread_cond_t flush_cond;
+ pthread_mutex_t flush_lock;
++ pthread_mutex_t stat_lock;
+ volatile int wake_idle;
+ };
+
+--
+2.4.4
+
diff --git a/sys-block/fio/fio-1.17.2.ebuild b/sys-block/fio/fio-1.17.2.ebuild
new file mode 100644
index 00000000000..1c4de44784e
--- /dev/null
+++ b/sys-block/fio/fio-1.17.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~ia64 ppc ppc64 x86"
+IUSE=""
+
+DEPEND="dev-libs/libaio"
+RDEPEND="${DEPEND}"
+
+src_compile() {
+ append-flags -W
+ emake CC="$(tc-getCC)" OPTFLAGS="${CFLAGS}" || die "emake failed"
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="/usr" || die "emake install failed"
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+}
diff --git a/sys-block/fio/fio-1.99.10.ebuild b/sys-block/fio/fio-1.99.10.ebuild
new file mode 100644
index 00000000000..03ebe008a57
--- /dev/null
+++ b/sys-block/fio/fio-1.99.10.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="2"
+
+inherit eutils toolchain-funcs flag-o-matic
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
+IUSE=""
+
+DEPEND="dev-libs/libaio"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i \
+ -e '/filter /s:-o:$(LDFLAGS) -o:' \
+ -e '/: depend$/d' \
+ Makefile || die
+}
+
+src_compile() {
+ append-flags -W
+ emake CC="$(tc-getCC)" OPTFLAGS="${CFLAGS}" || die "emake failed"
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="/usr" mandir="/usr/share/man" || die "emake install failed"
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+ doman fio.1
+}
diff --git a/sys-block/fio/fio-2.0.14-r1.ebuild b/sys-block/fio/fio-2.0.14-r1.ebuild
new file mode 100644
index 00000000000..47911275f3a
--- /dev/null
+++ b/sys-block/fio/fio-2.0.14-r1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit toolchain-funcs flag-o-matic eutils
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ia64 ~ppc ppc64 x86"
+IUSE=""
+
+DEPEND="dev-libs/libaio"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i \
+ -e '/filter /s:-o:$(LDFLAGS) -o:' \
+ -e '/: depend$/d' \
+ -e '/^DEBUGFLAGS/s, -D_FORTIFY_SOURCE=2,,g' \
+ Makefile || die
+ epatch "$FILESDIR"/fio-2.0.14-pic-clobber-fix.patch
+}
+
+src_configure() {
+ chmod g-w "${T}"
+ : # not a real configure script
+ ./configure --extra-cflags="${CFLAGS}" --cc="$(tc-getCC)"
+}
+
+src_compile() {
+ append-flags -W
+ emake V=1
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="/usr" mandir="/usr/share/man"
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+ doman fio.1
+}
diff --git a/sys-block/fio/fio-2.0.15.ebuild b/sys-block/fio/fio-2.0.15.ebuild
new file mode 100644
index 00000000000..628d3780dcd
--- /dev/null
+++ b/sys-block/fio/fio-2.0.15.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="4"
+
+inherit toolchain-funcs flag-o-matic eutils
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Write job files matching the I/O load one wants to simulate"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
+IUSE=""
+
+DEPEND="dev-libs/libaio"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i \
+ -e '/filter /s:-o:$(LDFLAGS) -o:' \
+ -e '/: depend$/d' \
+ -e '/^DEBUGFLAGS/s, -D_FORTIFY_SOURCE=2,,g' \
+ Makefile || die
+ epatch "$FILESDIR"/fio-2.0.14-pic-clobber-fix.patch
+}
+
+src_configure() {
+ chmod g-w "${T}"
+ : # not a real configure script
+ ./configure --extra-cflags="${CFLAGS}" --cc="$(tc-getCC)"
+}
+
+src_compile() {
+ append-flags -W
+ emake V=1
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="/usr" mandir="/usr/share/man"
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+ doman fio.1
+}
diff --git a/sys-block/fio/fio-2.1.9.ebuild b/sys-block/fio/fio-2.1.9.ebuild
new file mode 100644
index 00000000000..07dc69d0fe1
--- /dev/null
+++ b/sys-block/fio/fio-2.1.9.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+PYTHON_COMPAT=( python2_7 )
+inherit eutils python-r1 toolchain-funcs
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
+IUSE="aio gnuplot gtk numa zlib"
+
+DEPEND="aio? ( dev-libs/libaio )
+ gtk? (
+ dev-libs/glib:2
+ x11-libs/gtk+:2
+ )
+ numa? ( sys-process/numactl )
+ zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}
+ gnuplot? (
+ sci-visualization/gnuplot
+ ${PYTHON_DEPS}
+ )"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i '/^DEBUGFLAGS/s, -D_FORTIFY_SOURCE=2,,g' Makefile || die
+ epatch_user
+
+ # Many checks don't have configure flags.
+ sed -i \
+ -e "s:\<pkg-config\>:$(tc-getPKG_CONFIG):" \
+ -e '/if compile_prog "" "-lz" "zlib" *; *then/ '"s::if $(usex zlib true false) ; then:" \
+ -e '/if compile_prog "" "-laio" "libaio" ; then/'"s::if $(usex aio true false) ; then:" \
+ configure || die
+}
+
+src_configure() {
+ chmod g-w "${T}"
+ # not a real configure script
+ ./configure \
+ --extra-cflags="${CFLAGS} ${CPPFLAGS}" \
+ --cc="$(tc-getCC)" \
+ $(usex gtk '--enable-gfio' '') \
+ $(usex numa '' '--disable-numa') \
+ || die 'configure failed'
+}
+
+src_compile() {
+ emake V=1 OPTFLAGS=
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="${EPREFIX}/usr" mandir="${EPREFIX}/usr/share/man"
+
+ if use gnuplot ; then
+ python_replicate_script "${ED}/usr/bin/fio2gnuplot"
+ else
+ rm "${ED}"/usr/bin/{fio2gnuplot,fio_generate_plots} || die
+ rm "${ED}"/usr/share/man/man1/{fio2gnuplot,fio_generate_plots}.1 || die
+ rm "${ED}"/usr/share/fio/*.gpm || die
+ rmdir "${ED}"/usr/share/fio/ 2>/dev/null
+ fi
+
+ # This tool has security/parallel issues -- it hardcodes /tmp/template.fio.
+ rm "${ED}"/usr/bin/genfio || die
+
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+}
diff --git a/sys-block/fio/fio-2.2.4-r1.ebuild b/sys-block/fio/fio-2.2.4-r1.ebuild
new file mode 100644
index 00000000000..7294045a024
--- /dev/null
+++ b/sys-block/fio/fio-2.2.4-r1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+PYTHON_COMPAT=( python2_7 )
+inherit eutils python-r1 toolchain-funcs
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ia64 ~ppc ~ppc64 ~x86"
+IUSE="aio glusterfs gnuplot gtk numa rbd rdma zlib"
+
+DEPEND="aio? ( dev-libs/libaio )
+ glusterfs? ( !arm? ( sys-cluster/glusterfs ) )
+ gtk? (
+ dev-libs/glib:2
+ x11-libs/gtk+:2
+ )
+ numa? ( sys-process/numactl )
+ rbd? ( sys-cluster/ceph )
+ zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}
+ gnuplot? (
+ sci-visualization/gnuplot
+ ${PYTHON_DEPS}
+ )"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i '/^DEBUGFLAGS/s, -D_FORTIFY_SOURCE=2,,g' Makefile || die
+ epatch_user
+
+ # Many checks don't have configure flags.
+ sed -i \
+ -e "s:\<pkg-config\>:$(tc-getPKG_CONFIG):" \
+ -e '/if compile_prog "" "-lz" "zlib" *; *then/ '"s::if $(usex zlib true false) ; then:" \
+ -e '/if compile_prog "" "-laio" "libaio" ; then/'"s::if $(usex aio true false) ; then:" \
+ configure || die
+}
+
+src_configure() {
+ chmod g-w "${T}"
+ # not a real configure script
+ ./configure \
+ --extra-cflags="${CFLAGS} ${CPPFLAGS}" \
+ --cc="$(tc-getCC)" \
+ $(usex glusterfs '' '--disable-gfapi') \
+ $(usex gtk '--enable-gfio' '') \
+ $(usex numa '' '--disable-numa') \
+ $(usex rbd '' '--disable-rbd') \
+ || die 'configure failed'
+}
+
+src_compile() {
+ emake V=1 OPTFLAGS=
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="${EPREFIX}/usr" mandir="${EPREFIX}/usr/share/man"
+
+ if use gnuplot ; then
+ python_replicate_script "${ED}/usr/bin/fio2gnuplot"
+ else
+ rm "${ED}"/usr/bin/{fio2gnuplot,fio_generate_plots} || die
+ rm "${ED}"/usr/share/man/man1/{fio2gnuplot,fio_generate_plots}.1 || die
+ rm "${ED}"/usr/share/fio/*.gpm || die
+ rmdir "${ED}"/usr/share/fio/ 2>/dev/null
+ fi
+
+ # This tool has security/parallel issues -- it hardcodes /tmp/template.fio.
+ rm "${ED}"/usr/bin/genfio || die
+
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+}
diff --git a/sys-block/fio/fio-2.2.9.ebuild b/sys-block/fio/fio-2.2.9.ebuild
new file mode 100644
index 00000000000..8e1c41a0bae
--- /dev/null
+++ b/sys-block/fio/fio-2.2.9.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+PYTHON_COMPAT=( python2_7 )
+inherit eutils python-r1 toolchain-funcs
+
+MY_PV="${PV/_rc/-rc}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Jens Axboe's Flexible IO tester"
+HOMEPAGE="http://brick.kernel.dk/snaps/"
+SRC_URI="http://brick.kernel.dk/snaps/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ia64 ~ppc ~ppc64 ~x86"
+IUSE="aio glusterfs gnuplot gtk numa rbd rdma zlib"
+
+DEPEND="aio? ( dev-libs/libaio )
+ glusterfs? ( !arm? ( sys-cluster/glusterfs ) )
+ gtk? (
+ dev-libs/glib:2
+ x11-libs/gtk+:2
+ )
+ numa? ( sys-process/numactl )
+ rbd? ( sys-cluster/ceph )
+ zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}
+ gnuplot? (
+ sci-visualization/gnuplot
+ ${PYTHON_DEPS}
+ )"
+
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+ sed -i '/^DEBUGFLAGS/s: -D_FORTIFY_SOURCE=2::g' Makefile || die
+ epatch "${FILESDIR}"/${P}-atomic-sync.patch
+ epatch_user
+
+ # Many checks don't have configure flags.
+ sed -i \
+ -e "s:\<pkg-config\>:$(tc-getPKG_CONFIG):" \
+ -e '/if compile_prog "" "-lz" "zlib" *; *then/ '"s::if $(usex zlib true false) ; then:" \
+ -e '/if compile_prog "" "-laio" "libaio" ; then/'"s::if $(usex aio true false) ; then:" \
+ configure || die
+}
+
+src_configure() {
+ chmod g-w "${T}"
+ # not a real configure script
+ ./configure \
+ --extra-cflags="${CFLAGS} ${CPPFLAGS}" \
+ --cc="$(tc-getCC)" \
+ $(usex glusterfs '' '--disable-gfapi') \
+ $(usex gtk '--enable-gfio' '') \
+ $(usex numa '' '--disable-numa') \
+ $(usex rbd '' '--disable-rbd') \
+ || die 'configure failed'
+}
+
+src_compile() {
+ emake V=1 OPTFLAGS=
+}
+
+src_install() {
+ emake install DESTDIR="${D}" prefix="${EPREFIX}/usr" mandir="${EPREFIX}/usr/share/man"
+
+ if use gnuplot ; then
+ python_replicate_script "${ED}/usr/bin/fio2gnuplot"
+ else
+ rm "${ED}"/usr/bin/{fio2gnuplot,fio_generate_plots} || die
+ rm "${ED}"/usr/share/man/man1/{fio2gnuplot,fio_generate_plots}.1 || die
+ rm "${ED}"/usr/share/fio/*.gpm || die
+ rmdir "${ED}"/usr/share/fio/ 2>/dev/null
+ fi
+
+ # This tool has security/parallel issues -- it hardcodes /tmp/template.fio.
+ rm "${ED}"/usr/bin/genfio || die
+
+ dodoc README REPORTING-BUGS HOWTO
+ docinto examples
+ dodoc examples/*
+}
diff --git a/sys-block/fio/metadata.xml b/sys-block/fio/metadata.xml
new file mode 100644
index 00000000000..76526f751f3
--- /dev/null
+++ b/sys-block/fio/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <maintainer>
+ <email>prometheanfire@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="aio">Enable AIO ioengine</flag>
+ <flag name="glusterfs">Enable GlusterFS gfapi support via <pkg>sys-cluster/glusterfs</pkg></flag>
+ <flag name="gnuplot">Install tools for generating gnuplots</flag>
+ <flag name="numa">Enable numa support</flag>
+ <flag name="rbd">Enable Rados block device support via <pkg>sys-cluster/ceph</pkg></flag>
+ <flag name="rdma">Enable infiniband support via <pkg>sys-infiniband/librdmacm</pkg></flag>
+ </use>
+</pkgmetadata>