| Make sync_file_range() usage optional |
| |
| Under uClibc, sync_file_range() is not available under all |
| architectures, so we fall back to fdatasync() in this case. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| |
| Index: lttng-tools-2.0-pre15/configure.ac |
| =================================================================== |
| --- lttng-tools-2.0-pre15.orig/configure.ac 2012-02-01 16:31:31.140978817 +0100 |
| +++ lttng-tools-2.0-pre15/configure.ac 2012-02-01 16:31:42.110783708 +0100 |
| @@ -96,7 +96,7 @@ |
| |
| AM_CONDITIONAL([HAVE_LIBLTTNG_UST_CTL], [ test "x$ac_cv_lib_lttng_ust_ctl_ustctl_create_session" = "xyes" ]) |
| |
| -AC_CHECK_FUNCS([sched_getcpu sysconf]) |
| +AC_CHECK_FUNCS([sched_getcpu sysconf sync_file_range]) |
| |
| # Option to only build the consumer daemon and its libraries |
| AC_ARG_WITH([consumerd-only], |
| Index: lttng-tools-2.0-pre15/liblttng-consumer/lttng-consumer.c |
| =================================================================== |
| --- lttng-tools-2.0-pre15.orig/liblttng-consumer/lttng-consumer.c 2012-02-01 16:36:00.876292596 +0100 |
| +++ lttng-tools-2.0-pre15/liblttng-consumer/lttng-consumer.c 2012-02-01 16:36:23.435901163 +0100 |
| @@ -527,11 +527,15 @@ |
| if (orig_offset < stream->chan->max_sb_size) { |
| return; |
| } |
| +#ifdef HAVE_SYNC_FILE_RANGE |
| sync_file_range(outfd, orig_offset - stream->chan->max_sb_size, |
| stream->chan->max_sb_size, |
| SYNC_FILE_RANGE_WAIT_BEFORE |
| | SYNC_FILE_RANGE_WRITE |
| | SYNC_FILE_RANGE_WAIT_AFTER); |
| +#else |
| + fdatasync(outfd); |
| +#endif |
| /* |
| * Give hints to the kernel about how we access the file: |
| * POSIX_FADV_DONTNEED : we won't re-access data in a near future after |
| Index: lttng-tools-2.0-pre15/liblttng-kconsumer/lttng-kconsumer.c |
| =================================================================== |
| --- lttng-tools-2.0-pre15.orig/liblttng-kconsumer/lttng-kconsumer.c 2012-02-01 16:36:36.215679416 +0100 |
| +++ lttng-tools-2.0-pre15/liblttng-kconsumer/lttng-kconsumer.c 2012-02-01 16:59:08.622203348 +0100 |
| @@ -71,8 +71,12 @@ |
| goto end; |
| } |
| /* This won't block, but will start writeout asynchronously */ |
| +#ifdef HAVE_SYNC_FILE_RANGE |
| sync_file_range(outfd, stream->out_fd_offset, ret, |
| SYNC_FILE_RANGE_WRITE); |
| +#else |
| + fdatasync(outfd); |
| +#endif |
| stream->out_fd_offset += ret; |
| } |
| |
| @@ -121,8 +125,12 @@ |
| } |
| len -= ret; |
| /* This won't block, but will start writeout asynchronously */ |
| +#ifdef HAVE_SYNC_FILE_RANGE |
| sync_file_range(outfd, stream->out_fd_offset, ret, |
| SYNC_FILE_RANGE_WRITE); |
| +#else |
| + fdatasync(outfd); |
| +#endif |
| stream->out_fd_offset += ret; |
| } |
| lttng_consumer_sync_trace_file(stream, orig_offset); |
| Index: lttng-tools-2.0-pre15/liblttng-ustconsumer/lttng-ustconsumer.c |
| =================================================================== |
| --- lttng-tools-2.0-pre15.orig/liblttng-ustconsumer/lttng-ustconsumer.c 2012-02-01 16:37:11.495067263 +0100 |
| +++ lttng-tools-2.0-pre15/liblttng-ustconsumer/lttng-ustconsumer.c 2012-02-01 16:37:31.224724916 +0100 |
| @@ -70,8 +70,12 @@ |
| goto end; |
| } |
| /* This won't block, but will start writeout asynchronously */ |
| +#ifdef HAVE_SYNC_FILE_RANGE |
| sync_file_range(outfd, stream->out_fd_offset, ret, |
| SYNC_FILE_RANGE_WRITE); |
| +#else |
| + fdatasync(outfd); |
| +#endif |
| stream->out_fd_offset += ret; |
| } |
| |