ioctl returns -1, and error codes are based on -errno.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
if (stream->net_seq_idx != (uint64_t) -1ULL) {
relayd = consumer_find_relayd(stream->net_seq_idx);
if (relayd == NULL) {
if (stream->net_seq_idx != (uint64_t) -1ULL) {
relayd = consumer_find_relayd(stream->net_seq_idx);
if (relayd == NULL) {
case LTTNG_CONSUMER_KERNEL:
mmap_base = stream->mmap_base;
ret = kernctl_get_mmap_read_offset(stream->wait_fd, &mmap_offset);
case LTTNG_CONSUMER_KERNEL:
mmap_base = stream->mmap_base;
ret = kernctl_get_mmap_read_offset(stream->wait_fd, &mmap_offset);
+ if (ret != 0) {
+ PERROR("tracer ctl get_mmap_read_offset");
+ written = -errno;
+ goto end;
+ }
break;
case LTTNG_CONSUMER32_UST:
case LTTNG_CONSUMER64_UST:
mmap_base = lttng_ustctl_get_mmap_base(stream);
if (!mmap_base) {
ERR("read mmap get mmap base for stream %s", stream->name);
break;
case LTTNG_CONSUMER32_UST:
case LTTNG_CONSUMER64_UST:
mmap_base = lttng_ustctl_get_mmap_base(stream);
if (!mmap_base) {
ERR("read mmap get mmap base for stream %s", stream->name);
goto end;
}
ret = lttng_ustctl_get_mmap_read_offset(stream, &mmap_offset);
goto end;
}
ret = lttng_ustctl_get_mmap_read_offset(stream, &mmap_offset);
+ if (ret != 0) {
+ PERROR("tracer ctl get_mmap_read_offset");
+ written = ret;
+ goto end;
+ }
break;
default:
ERR("Unknown consumer_data type");
assert(0);
}
break;
default:
ERR("Unknown consumer_data type");
assert(0);
}
- if (ret != 0) {
- errno = -ret;
- PERROR("tracer ctl get_mmap_read_offset");
- written = ret;
- goto end;
- }
/* Handle stream on the relayd if the output is on the network */
if (relayd) {
/* Handle stream on the relayd if the output is on the network */
if (relayd) {
*/
DBG("Error in file write mmap");
if (written == 0) {
*/
DBG("Error in file write mmap");
if (written == 0) {
}
/* Socket operation failed. We consider the relayd dead */
if (errno == EPIPE || errno == EINVAL) {
}
/* Socket operation failed. We consider the relayd dead */
if (errno == EPIPE || errno == EINVAL) {
if (stream->net_seq_idx != (uint64_t) -1ULL) {
relayd = consumer_find_relayd(stream->net_seq_idx);
if (relayd == NULL) {
if (stream->net_seq_idx != (uint64_t) -1ULL) {
relayd = consumer_find_relayd(stream->net_seq_idx);
if (relayd == NULL) {
ret = kernctl_snapshot(infd);
if (ret != 0) {
ret = kernctl_snapshot(infd);
if (ret != 0) {
perror("Getting sub-buffer snapshot.");
perror("Getting sub-buffer snapshot.");
ret = kernctl_snapshot_get_produced(infd, pos);
if (ret != 0) {
ret = kernctl_snapshot_get_produced(infd, pos);
if (ret != 0) {
perror("kernctl_snapshot_get_produced");
perror("kernctl_snapshot_get_produced");
/* Get the next subbuffer */
err = kernctl_get_next_subbuf(infd);
if (err != 0) {
/* Get the next subbuffer */
err = kernctl_get_next_subbuf(infd);
if (err != 0) {
/*
* This is a debug message even for single-threaded consumer,
* because poll() have more relaxed criterions than get subbuf,
/*
* This is a debug message even for single-threaded consumer,
* because poll() have more relaxed criterions than get subbuf,
*/
DBG("Reserving sub buffer failed (everything is normal, "
"it is due to concurrency)");
*/
DBG("Reserving sub buffer failed (everything is normal, "
"it is due to concurrency)");
goto end;
}
/* Get the full subbuffer size including padding */
err = kernctl_get_padded_subbuf_size(infd, &len);
if (err != 0) {
goto end;
}
/* Get the full subbuffer size including padding */
err = kernctl_get_padded_subbuf_size(infd, &len);
if (err != 0) {
perror("Getting sub-buffer len failed.");
perror("Getting sub-buffer len failed.");
/* Get subbuffer size without padding */
err = kernctl_get_subbuf_size(infd, &subbuf_size);
if (err != 0) {
/* Get subbuffer size without padding */
err = kernctl_get_subbuf_size(infd, &subbuf_size);
if (err != 0) {
perror("Getting sub-buffer len failed.");
perror("Getting sub-buffer len failed.");
break;
default:
ERR("Unknown output method");
break;
default:
ERR("Unknown output method");
}
err = kernctl_put_next_subbuf(infd);
if (err != 0) {
}
err = kernctl_put_next_subbuf(infd);
if (err != 0) {
if (errno == EFAULT) {
perror("Error in unreserving sub buffer\n");
} else if (errno == EIO) {
/* Should never happen with newer LTTng versions */
perror("Reader has been pushed by the writer, last sub-buffer corrupted.");
}
if (errno == EFAULT) {
perror("Error in unreserving sub buffer\n");
} else if (errno == EIO) {
/* Should never happen with newer LTTng versions */
perror("Reader has been pushed by the writer, last sub-buffer corrupted.");
}
ret = kernctl_get_mmap_len(stream->wait_fd, &mmap_len);
if (ret != 0) {
ret = kernctl_get_mmap_len(stream->wait_fd, &mmap_len);
if (ret != 0) {
PERROR("kernctl_get_mmap_len");
PERROR("kernctl_get_mmap_len");
goto error_close_fd;
}
stream->mmap_len = (size_t) mmap_len;
goto error_close_fd;
}
stream->mmap_len = (size_t) mmap_len;