Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c08037b2 authored by Akilesh Kailash's avatar Akilesh Kailash
Browse files

If there an error, cqe field is not allocated by io_uring_wait_cqe(); return


the error immediately.

Bug: 223308671
Test: OTA
Signed-off-by: default avatarAkilesh Kailash <akailash@google.com>
Change-Id: Ib485bb767ad58e6a0849fb2431b563e6e7f04cfd
parent b74e5af4
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -288,9 +288,6 @@ bool Worker::MergeOrderedOpsAsync() {
                while (pending_ios_to_complete) {
                    struct io_uring_cqe* cqe;

                    // We need to make sure to reap all the I/O's submitted
                    // even if there are any errors observed.
                    //
                    // io_uring_wait_cqe can potentially return -EAGAIN or -EINTR;
                    // these error codes are not truly I/O errors; we can retry them
                    // by re-populating the SQE entries and submitting the I/O
@@ -300,11 +297,13 @@ bool Worker::MergeOrderedOpsAsync() {
                    if (ret) {
                        SNAP_LOG(ERROR) << "Merge: io_uring_wait_cqe failed: " << ret;
                        status = false;
                        break;
                    }

                    if (cqe->res < 0) {
                        SNAP_LOG(ERROR) << "Merge: io_uring_wait_cqe failed with res: " << cqe->res;
                        status = false;
                        break;
                    }

                    io_uring_cqe_seen(ring_.get(), cqe);
+2 −3
Original line number Diff line number Diff line
@@ -395,9 +395,6 @@ bool ReadAhead::ReapIoCompletions(int pending_ios_to_complete) {
    while (pending_ios_to_complete) {
        struct io_uring_cqe* cqe;

        // We need to make sure to reap all the I/O's submitted
        // even if there are any errors observed.
        //
        // io_uring_wait_cqe can potentially return -EAGAIN or -EINTR;
        // these error codes are not truly I/O errors; we can retry them
        // by re-populating the SQE entries and submitting the I/O
@@ -407,11 +404,13 @@ bool ReadAhead::ReapIoCompletions(int pending_ios_to_complete) {
        if (ret) {
            SNAP_LOG(ERROR) << "Read-ahead - io_uring_wait_cqe failed: " << ret;
            status = false;
            break;
        }

        if (cqe->res < 0) {
            SNAP_LOG(ERROR) << "Read-ahead - io_uring_Wait_cqe failed with res: " << cqe->res;
            status = false;
            break;
        }

        io_uring_cqe_seen(ring_.get(), cqe);