@@ -131,7 +131,8 @@ static int copy_file(struct io_uring *ring, off_t insize)
writes = reads = offset = 0;
while (insize || write_left) {
- int had_reads, got_comp;
+ unsigned long had_reads;
+ int got_comp;
/*
* Queue up as many reads as we can
@@ -198,7 +199,7 @@ static int copy_file(struct io_uring *ring, off_t insize)
fprintf(stderr, "cqe failed: %s\n",
strerror(-cqe->res));
return 1;
- } else if (cqe->res != data->iov.iov_len) {
+ } else if ((__kernel_size_t)cqe->res != data->iov.iov_len) {
/* Short read/write, adjust and requeue */
data->iov.iov_base += cqe->res;
data->iov.iov_len -= cqe->res;
Build tools/io_uring emits the following warnings. io_uring-cp.c: In function ‘copy_file’: io_uring-cp.c:158:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 158 | if (had_reads != reads) { | ^~ io_uring-cp.c:201:24: warning: comparison of integer expressions of different signedness: ‘__s32’ {aka ‘int’} and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 201 | } else if (cqe->res != data->iov.iov_len) { | ^~ Change the type of 'had_reads' to 'unsigned long' to fix the first compile warning. For the second warning, cast 'cqe->res' to '__kernel_size_t' before comparison to fix it. Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com> --- tools/io_uring/io_uring-cp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)