commit a71905489d6a9679dde1cfc005e818a83fc2d14b Author: Alberto Bertogli Date: Fri Aug 7 16:02:24 2009 -0300 Version 0.90 Signed-off-by: Alberto Bertogli commit 71f9a75bec64aa44083f65eb2eeed2a309885bb6 Author: Alberto Bertogli Date: Fri Aug 7 12:49:40 2009 -0300 jiostress: Enable fault injection in libc string functions Signed-off-by: Alberto Bertogli commit 5ccfb161014a8678463fe4a8d634aea3e3c7255e Author: Alberto Bertogli Date: Tue Aug 4 13:45:57 2009 -0300 [API BREAK] Implement read operations This patch implements read operations, allowing the users to read data inside a transaction. That means that transactions have now two kinds of operations inside them: read and write. They work in a similar way they do today: operations are applied in order, when it's a write the data is written, when it's a read the data is read. Signed-off-by: Alberto Bertogli commit a97577e4f5f6df3860e3b73b5ce6da378fd77c5a Author: Alberto Bertogli Date: Tue Aug 4 13:10:21 2009 -0300 jmove_journal(): Fix malloc() size miscalculation Signed-off-by: Alberto Bertogli commit d1e28a78c769b3a6e0ef8e556abf7d1311eee152 Author: Alberto Bertogli Date: Sun Aug 2 04:57:32 2009 -0300 jtrans_rollback(): Handle jtrans_new() failures Signed-off-by: Alberto Bertogli commit 1478b52c9271ca42a97c00aeb718d2a5f786bc41 Author: Alberto Bertogli Date: Sun Aug 2 04:55:34 2009 -0300 libjio: Define a dummy POSIX_FADV_WILLNEED when it's not available Signed-off-by: Alberto Bertogli commit e9d363c27b8c013ad25891d28909b39b0ea1cff3 Author: Alberto Bertogli Date: Sun Aug 2 04:00:58 2009 -0300 jiofsck: Handle all possible jfsck() return values Signed-off-by: Alberto Bertogli commit bd49b086a34c368ac14d4d9b24308b8d950a2830 Author: Alberto Bertogli Date: Sat Aug 1 22:01:49 2009 -0300 jiostress: Increase max probability of libc/mm/* failures Signed-off-by: Alberto Bertogli commit 2208b37b3f79290ec289b1e0dd48364cc45b06e1 Author: Alberto Bertogli Date: Sat Aug 1 22:00:34 2009 -0300 Ignore *.so.* files Signed-off-by: Alberto Bertogli commit 23da72a6294c978707412bd2b26e36b246aa9798 Author: Alberto Bertogli Date: Sat Aug 1 21:59:16 2009 -0300 libjio.h: Add J_EIO to jfsck()'s documentation Signed-off-by: Alberto Bertogli commit e1bf1a6012134f673f137745c0d3cbd7f5169b40 Author: Alberto Bertogli Date: Sat Aug 1 21:58:26 2009 -0300 journal_new(): Check plockf() return value Signed-off-by: Alberto Bertogli commit 3a35fadd7df5953ff2c89345d7ccf5db5577d5dd Author: Alberto Bertogli Date: Sat Aug 1 21:54:45 2009 -0300 libjio: Minor aesthetic improvements to trans.c Signed-off-by: Alberto Bertogli commit ea2357462f298de0708c9e3a2ec9a87323efcacd Author: Alberto Bertogli Date: Sat Aug 1 21:47:53 2009 -0300 doc: Miscelaneous general improvements to the user guide The most important changes are the one that clarify what can and cannot be done in multi-process/thread applications. Signed-off-by: Alberto Bertogli commit 1aefbaf50bb787363c539ee50ceb8e553fd30f04 Author: Alberto Bertogli Date: Sat Aug 1 21:45:47 2009 -0300 [API BREAK] Make jfsck() do not call jfsck_cleanup() by default J_NOCLEANUP was removed in favour of J_CLEANUP, and the default behaviour of jfsck() is now not to clean up unless J_CLEANUP is passed in the flags. This also fixes the UPGRADING document which had a wrong version number for the recent changes. Signed-off-by: Alberto Bertogli commit a861705c94df826bfb98458511ac221fd708fb54 Author: Alberto Bertogli Date: Sat Aug 1 11:36:04 2009 -0300 bindings/python: Add jfsck() return constants Signed-off-by: Alberto Bertogli commit 9333107f3bfc06258b6c38db3722783548076f59 Author: Alberto Bertogli Date: Sat Aug 1 11:35:28 2009 -0300 libjio: Make jfsck() remove the transactions and simplify jfsck_cleanup() jfsck() is the one which should remove the transactions as it cleans them up, and this patch makes it so. This went unnoticed for a long time because it almost always performs a jfsck_cleanup() afterwards. That also allow us to simplify jfsck_cleanup() by making it remove only the files we know about, which currently is only the "lock" file, but it could be more in the future. The "broken" file is explicitly ignored because it should only be removed by jfsck(). Signed-off-by: Alberto Bertogli commit 7c1171a7e1bc17482b8897d817e0197cce965b29 Author: Alberto Bertogli Date: Fri Jul 31 00:00:29 2009 -0300 jopen(): Do not leak file descriptors if we fail to write to the lockfile Signed-off-by: Alberto Bertogli commit 05e7ff26a32f800aef938487f77b5bb37fa434cc Author: Alberto Bertogli Date: Thu Jul 30 22:27:23 2009 -0300 jtrans_commit(): Lock the file regions just before reading the data There is no need to lock the file regions until we're about to read the data, so this patch moves the lock there. It also isolates the code a bit to make jtrans_commit() more readable. Signed-off-by: Alberto Bertogli commit 94f1fbee1b4be2a510d7a56ae3458b50cb8fbfbd Author: Alberto Bertogli Date: Thu Jul 30 22:23:27 2009 -0300 libjio: jsync() should free transactions in order Otherwise if we crash during a jsync() the following jfsck() will apply transactions with old data. Signed-off-by: Alberto Bertogli commit 64757bf6b17bd4b8cbfe6af6ac318688f9fa6343 Author: Alberto Bertogli Date: Wed Jul 29 18:05:13 2009 -0300 libjio: Mark the journal as broken when we should not continue committing When we have very serious errors that can cause consistency problems if we continue to operate on the file, mark the journal as broken by creating a file named "broken". journal_new() will automatically fail if the file is present, so no further transactions will be allowed. Transactions that were being committed when we set the flag are not a problem because they affect different portions of the file. This protects from the following scenario: - Commit data X to a range A-B: - Write the transaction 1 to the journal - Write the data to the file - Attempt to remove the journal file: fail - Commit data Y to a range A-B: success - Crash - jfsck(): - Finds transaction 1, writes data X to the file which corrupts things because data Y is the one that should be there. We also return -2 in those cases, which means the user should abort immediately, but this measure can help to prevent problems when the user is not careful or can't stop further commits. Signed-off-by: Alberto Bertogli commit 488fbecb3ce7075e96f1688bd5fb3c4f3b15d6dd Author: Alberto Bertogli Date: Sun Jul 26 12:21:36 2009 -0300 libjio: Take the version from the Makefile instead of hardcoding it This patch make libjio.pc and Doxygen.base take the version from the Makefile instead of hardcoding it. Signed-off-by: Alberto Bertogli commit 11b47633f1a7501e8df149b38c369a0ca0d00e3a Author: Alberto Bertogli Date: Sun Jul 26 11:55:33 2009 -0300 Use .in instead of .skel for template files Signed-off-by: Alberto Bertogli commit 17409b8e9da9b229a667b8bd51a8e211aa874af1 Author: Alberto Bertogli Date: Sun Jul 26 11:52:05 2009 -0300 Rebuild when the build flags have changed This patch causes "make" to rebuild the target when the build flags (either CFLAGS or PREFIX) have changed. Signed-off-by: Alberto Bertogli commit a41528419a2944cee9393bf023f2fe073d126dfb Author: Alberto Bertogli Date: Fri Jul 24 20:48:52 2009 -0300 libjio: Try harder to corrupt transaction files as a last resort Overwriting the header is not enough, because if after doing so a new transaction gets committed, we will first write the header and it's possible that we crash right there, leaving an apparently OK transaction file while it should actually be bogus. This patch fixes that potential problem by overriding the trailer, so we can be sure it will not be considered a valid transaction even after partial reuse. Signed-off-by: Alberto Bertogli commit 1f801cf7bb19e418671cb46083c6f7e672e1b854 Author: Alberto Bertogli Date: Fri Jul 24 20:45:07 2009 -0300 Install manpages to $(PREFIX)/share/man That's the place LFS says they should go, not $(PREFIX)/man. Signed-off-by: Alberto Bertogli commit 99d4c9e26bc3c3736caf7766efd26200c3e899da Author: Alberto Bertogli Date: Fri Jul 24 20:43:14 2009 -0300 libjio: Add a soname to the generated .so This patch adds soname to the generated shared object, so multiple incompatible versions of the library can be installed at the same time. This relies on the compiler using GNU ld, or other linker with a compatible syntax. Signed-off-by: Alberto Bertogli commit 2464983140ab2e25fb04a67b3fae169542b44324 Author: Alberto Bertogli Date: Fri Jul 24 20:38:11 2009 -0300 Decouple PREFIX and DESTDIR Sometimes we want to do a "fake install" and then manually move the result binaries somewhere else. This patch allows that by adding a new DESTDIR variable that can be used to tell the real final location of the binaries. Signed-off-by: Alberto Bertogli commit 4443d073e7a32e37b679ff6714f8fb9644b44b79 Author: Alberto Bertogli Date: Fri Jul 24 20:36:53 2009 -0300 Allow the user to override the name of the "install" tool to use On some machines (like Solaris ones) the default "install" tool is incompatible with the GNU/BSD one. This patch allows the user to override the name of the install tool, so Solaris users can select a GNU/BSD install. Signed-off-by: Alberto Bertogli commit edfb2c046991b76d16d482a0a23361b17f9820b6 Author: Alberto Bertogli Date: Sat Jul 18 18:36:54 2009 -0300 libjio: Fix some signed/unsigned comparisons After building using -Wextra (which enables signed/unsigned comparison warnings), these were the ones that made sense fixing. All the others were valid cases, like: int rv; unsigned int blah; ... rv = read(...); if (rv < 0) return ERROR; if (rv == blah) ... Where in the second comparison we know it's safe because rv is >= 0. We could add a cast, but it would just make the code uglier for no real reason. The comparisons fixed by this commit are valid warnings, and can usually be hit by committing very large transactions. Signed-off-by: Alberto Bertogli commit d7ec1c640dd73442e7f842515e08f2576072da9e Author: Alberto Bertogli Date: Thu Jul 16 12:37:22 2009 -0300 tests/stress: Remove bogus asserts Signed-off-by: Alberto Bertogli commit c66c0220d76c923dcda26aaba2edcdae418b2a6b Author: Alberto Bertogli Date: Thu Jul 16 12:10:51 2009 -0300 jtrans_commit(): Do not unlink the journal file if rollback failed When the commit fails we attempt to rollback. If that fails too, we should not unlink the journal file, because then there is no chance jfsck() can recover from the possible corruption. This patch makes jtrans_commit() keep that file, assuming the caller will know that it should stop working on it and attempt to run jfsck(). Signed-off-by: Alberto Bertogli commit ed3a770ca76365e43be560ebbbabfa65dfcd0fe7 Author: Alberto Bertogli Date: Thu Jul 16 11:51:04 2009 -0300 libjio: Check for readdir() faults in jfsck() and jfsck_cleanup() Signed-off-by: Alberto Bertogli commit 87a9c519df00c3ec700825ed0bdb3a8e6098898e Author: Alberto Bertogli Date: Wed Jul 15 15:55:31 2009 -0300 tests/stress: Show information about the data when corruption is detected Signed-off-by: Alberto Bertogli commit de5f21f9ebc9b437a94cdb85fb961ecc5cd2d1e4 Author: Alberto Bertogli Date: Wed Jul 15 15:55:02 2009 -0300 tests/stress: Implement pread() properly Signed-off-by: Alberto Bertogli commit ed84572312108e0420735cf3639e7be3b02c44b9 Author: Alberto Bertogli Date: Wed Jul 15 15:54:15 2009 -0300 tests/stress: Wrap around jfsck() Signed-off-by: Alberto Bertogli commit a6530728475a07aebc313728e42726babbc3cef3 Author: Alberto Bertogli Date: Wed Jul 15 15:49:29 2009 -0300 tests: Flush stdout before fork() Signed-off-by: Alberto Bertogli commit a25fb20b54b3ed12ad8e4a187cf320889a279ddb Author: Alberto Bertogli Date: Wed Jul 15 15:48:56 2009 -0300 tests/behaviour: Add a new test to write a big (~2mb) transaction Signed-off-by: Alberto Bertogli commit 240bb7d184774105ee394ed19e69e11109ea006d Author: Alberto Bertogli Date: Wed Jul 15 15:48:18 2009 -0300 tests/behaviour: Remove gen_ret_after() in favor of gen_ret_seq() gen_ret_seq() is much more readable and clear. Signed-off-by: Alberto Bertogli commit 4d14be7bb3c7f70b554a05afcba59538ef06068f Author: Alberto Bertogli Date: Wed Jul 15 15:45:54 2009 -0300 libjio: Use writev() to write journal files This patch makes libjio use writev() to write journal files. While at this point doesn't make much difference, in the future we will be able to submit all ops at once, and it will help to implement eager operation writing. Signed-off-by: Alberto Bertogli commit d2d9ad3804e85cd6adf1f9ef42a2d933be633b03 Author: Alberto Bertogli Date: Wed Jul 15 15:40:35 2009 -0300 spwrite(): Retry when nothing was written Signed-off-by: Alberto Bertogli commit 647481368258add0cbff042f661384c1597f07fb Author: Alberto Bertogli Date: Wed Jul 15 15:39:33 2009 -0300 libjio: Use proper types for spread() and spwrite() Signed-off-by: Alberto Bertogli commit 366140a6d53155134020a4b128c73df1d4752f2a Author: Alberto Bertogli Date: Mon Jul 13 14:23:51 2009 -0300 tests/stress: Make the failure probabilities a bit random This change makes the probabilities of the points of failure random within a range, so the result combination of failures in a long run will vary more, increasing code coverage. Signed-off-by: Alberto Bertogli commit 76a37f8fba65a469861f44b35d8fcfaa94275862 Author: Alberto Bertogli Date: Mon Jul 13 02:45:55 2009 -0300 tests/behaviour: Add a test for jreadv()/jwritev() Signed-off-by: Alberto Bertogli commit 3eddb4c1f277e30fbbb86f2f9f30a247f87d6c73 Author: Alberto Bertogli Date: Mon Jul 13 02:45:34 2009 -0300 libjio: Fix unix wrappers internal types Signed-off-by: Alberto Bertogli commit b76f675659bac375d1c824582fe67310f2878ce1 Author: Alberto Bertogli Date: Mon Jul 13 02:45:09 2009 -0300 libjio: Handle lseek() failures in jreadv() This patch makes jreadv() handle lseek() failures, and while at it removes some leftover code. Signed-off-by: Alberto Bertogli commit 96077411ba599c1b0304d8c3ffcb16ad81f6a2ac Author: Alberto Bertogli Date: Mon Jul 13 02:43:46 2009 -0300 bindings/python: Add readv()/writev() support Signed-off-by: Alberto Bertogli commit 3d0488b17d699e3d83e440e9f0801418350139ce Author: Alberto Bertogli Date: Sun Jul 12 20:08:33 2009 -0300 tests/stress: Include jfsck() and jopen() in the fiu-enabled tests This patch makes the fiu-enabled tests perform jfsck() and jopen() inside the subprocess, so they're fault injected too. Signed-off-by: Alberto Bertogli commit d637f4bc2e2c9b32b14057e3f53a1be4e334ce6b Author: Alberto Bertogli Date: Sun Jul 12 20:07:32 2009 -0300 tests/stress: Increment chances of libc/mm/* failures Signed-off-by: Alberto Bertogli commit 345c111a45fbe02c707e97824d85228a8e8702b2 Author: Alberto Bertogli Date: Sun Jul 12 20:06:54 2009 -0300 tests/behaviour: Fix payload writing Signed-off-by: Alberto Bertogli commit e416a50ba84fcfc76ec90c6f7a79278d74234d5d Author: Alberto Bertogli Date: Sun Jul 12 20:05:30 2009 -0300 [API BREAK] Remove jfsck_return.apply_error If jfsck() returns successfully, it should be possible to assume the file is in a consistent state. However, currently if jfsck() fails to apply a transaction it will report that in the jfsck_return structure, which is misleading. This patch changes that behaviour, making jfsck() return error in that case, rendering the apply_error member useless. Signed-off-by: Alberto Bertogli commit 840d25e3529a34b4f575c4a3af387b4db51d81c5 Author: Alberto Bertogli Date: Sun Jul 12 19:46:01 2009 -0300 Let the user know when jfsck() has failed because of an I/O error Currently, real I/O errors in some places inside jfsck() will be reported as different things, and some of them, like J_ENOJOURNAL, may let the user believe the file is consistent while it's not. This patch fixes that behaviour by adding a new return value, J_EIO, that jfsck() will use to report real I/O errors. Signed-off-by: Alberto Bertogli commit 263a5e1d54f567aa76ba80fa752decbe1edca425 Author: Alberto Bertogli Date: Sun Jul 12 15:10:47 2009 -0300 tests/behaviour: Add seven new tests These tests cover previously uncovered behaviour. Signed-off-by: Alberto Bertogli commit a6b69402e36857faca266e0dff329ea61e23d4ca Author: Alberto Bertogli Date: Sun Jul 12 15:09:22 2009 -0300 Fix minor typo in journal.c Signed-off-by: Alberto Bertogli commit 553dead5d3ff6e1cc334e76aad6eb416ee001581 Author: Alberto Bertogli Date: Sun Jul 12 15:08:35 2009 -0300 Fix jmove_journal() for cases when the destination already exists Signed-off-by: Alberto Bertogli commit f95b0dc37fc6e0d36b0e910c869e0a04714439c4 Author: Alberto Bertogli Date: Sun Jul 12 15:07:45 2009 -0300 jtrans_add(): Fix error return value for 0 length operations Signed-off-by: Alberto Bertogli commit cacd80358a292c020978a2a2f49a1be69252ebcc Author: Alberto Bertogli Date: Sun Jul 12 15:07:00 2009 -0300 libjio: Remove unused checksum_fd() Signed-off-by: Alberto Bertogli commit cf556c751da0a1dec4d04c663ad1298f166b56f2 Author: Alberto Bertogli Date: Sun Jul 12 15:06:14 2009 -0300 Add files generated by profiling to .gitignore Signed-off-by: Alberto Bertogli commit ec7861bd7718f728928928ef036ec069389894db Author: Alberto Bertogli Date: Sun Jul 12 13:17:21 2009 -0300 libjio: Submit the file sync before journal_commit() In an attempt to reduce journal_commit() fsync() waiting time, we submit the sync earlier, hoping that at least some of it will be ready by the time we hit journal_commit(). Signed-off-by: Alberto Bertogli commit 726ea913c2a10e2a53f0ca02b8e24cdba82c7cae Author: Alberto Bertogli Date: Sun Jul 12 13:05:00 2009 -0300 libjio: Read previous operation before doing a journal_commit() That way we give the kernel a chance to send the previous journal_add_op()s to the disk, reducing the time spent waiting in journal_commit()'s fdatasync(). Signed-off-by: Alberto Bertogli commit c205c0d3a46e7a420a9ac2a187220e1959c7b226 Author: Alberto Bertogli Date: Sat Jul 11 00:33:07 2009 -0300 libjio: Internal journal API cleanup This patch cleans the internal journal API up, mostly by making a clear distinction between struct jtrans and struct journal_op. Now, the latter does not know about the former, and jtrans only uses the exported journal functions. Signed-off-by: Alberto Bertogli commit 31cc89586bb819134113ea47a3053021f83cf9ea Author: Alberto Bertogli Date: Sat Jul 11 00:27:04 2009 -0300 libjio: Rename internal struct joper to struct operation The name "joper" can be quite confusing considering how most internal journal functions are named. This patch renames it to "operation". Signed-off-by: Alberto Bertogli commit 0ad0d99fb22829a9b06f47ba8d902bc07cb1cc7d Author: Alberto Bertogli Date: Fri Jul 10 17:31:15 2009 -0300 [API BREAK] Make jopen() jflags unsigned It's more correct and tidy to make them unsigned, so better make this minor change now while we still can. Note that flags is still signed to match open(). Signed-off-by: Alberto Bertogli commit 8b4e3ed1d6fc1dc2ac0617e8d55e263870557d68 Author: Alberto Bertogli Date: Fri Jul 10 17:25:26 2009 -0300 [API BREAK] Add a flags parameter to jtrans_new() This patch adds a new flags parameter to jtrans_new(), which we will use in the future to let the user select per-transaction behaviour. Signed-off-by: Alberto Bertogli commit c02fcd2fada1b802d15645287de6161091d91790 Author: Alberto Bertogli Date: Fri Jul 10 06:40:57 2009 -0300 [FORMAT CHANGE] Improve the on-disk transaction format This patch changes the way transactions are stored on disk. The fundamental reason for this change is to put the number of operations contained in the transaction at the end. That will allow us to write operations as they are added to the transaction, instead of waiting until commit time, which can improve performance on some operation-intensive workloads. Other changes include the addition of a much needed version number (which will hopefully keep the library backwards compatible in case of future disk format changes), a more robust checksum algorithm, and defined endianness of the stored data for portability purporses. Signed-off-by: Alberto Bertogli commit f30c385b5288a682f0a16cf36d81a1c0fc23476f Author: Alberto Bertogli Date: Fri Jul 10 15:34:41 2009 -0300 tests/stress: When using autosync, sync every 10Mb Syncing every 2Mb is too unrealistic, so this patch changes it to 10Mb instead, which might be low for common scenarios but it's more reasonable for a stress test. Signed-off-by: Alberto Bertogli commit a587895744134232d2938ee6397b042c8a3f0d67 Author: Alberto Bertogli Date: Fri Jul 10 05:08:46 2009 -0300 tests/behaviour: Limit runtime resources To cover from possible resource leaks in the tests, limit the resources using setrlimit. Signed-off-by: Alberto Bertogli commit 3072c482961ece8802f40ede1b1e7431e0f6ddeb Author: Alberto Bertogli Date: Tue Jul 7 00:19:12 2009 -0300 libjio: Improve sync_file_range() detection code This patch makes the sync_file_range() detection code a little cleaner, and also makes the stub functions work, just in case we want to use them unconditionally in the future. Signed-off-by: Alberto Bertogli commit fd6fbd3bdbd9999a4ca8813d14964b350a759914 Author: Alberto Bertogli Date: Mon Jul 6 11:59:55 2009 -0300 libjio: Add missing clock_gettime() prototype in compat.h On platforms without clock_gettime(), we provide a stub. However, its prototype was missing from the header, and it was also not included from autosync.c (its only user so far). This patch fixes that by adding the missing prototype and #include line. Signed-off-by: Alberto Bertogli commit 4c83349e5a1724ebe21a024c06b5e0b409d31ef3 Author: Alberto Bertogli Date: Fri Jul 3 22:27:50 2009 -0300 tests/stress: When using libfiu's POSIX wrapper, inject more failures With this patch it is possible to run the stress test using libfiu's POSIX preload library to simulate failures in the POSIX functions, and see how libjio copes with it. Signed-off-by: Alberto Bertogli commit 29d63853f58e0f824c94b1f32199cef57f6632bc Author: Alberto Bertogli Date: Fri Jul 3 22:25:48 2009 -0300 tests/behaviour: Add 5 more tests This patch adds 5 simple tests for previously untested code. Signed-off-by: Alberto Bertogli commit 39fd3986f51f289c4cc57ccecfee15d15bebf484 Author: Alberto Bertogli Date: Fri Jul 3 04:50:12 2009 -0300 libjio: Fix journal_free() error handling in jtrans_commit() Currently, we risk calling journal_free() twice when it returns an error, which leads to a double free(). This patch fixes that by simplifying the code path and making the return values more clear. While at it, rename "rv" to "r" to avoid confusion with the return value. Signed-off-by: Alberto Bertogli commit 9f08a4a928b55b9b77bc62c13baeb8f5b214942e Author: Alberto Bertogli Date: Fri Jul 3 04:46:59 2009 -0300 libjio: Make a free() unconditional (minor style change) Signed-off-by: Alberto Bertogli commit 21e732893f980527eb029f9f1ecef327fd4a75b8 Author: Alberto Bertogli Date: Fri Jul 3 04:44:06 2009 -0300 libjio: Remove bogus free() Signed-off-by: Alberto Bertogli commit 1b41c374d4f1aea92983f2e3ba160fed0987f66e Author: Alberto Bertogli Date: Fri Jul 3 04:43:39 2009 -0300 libjio: Fix profile build Signed-off-by: Alberto Bertogli