Re: [PATCH V4 4/8] io_uring: support SQE group

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/24/24 14:41, Pavel Begunkov wrote:
...> io_free_batch_list() {
     if (req->flags & GROUP) {
         if (req_is_member(req)) {
             req->grp_leader->grp_refs--;
             if (req->grp_leader->grp_refs == 0) {
                 req->io_task_work.func = io_req_task_complete;
                 io_req_task_work_add(req->grp_leader);
                 // can be done better....
             }
             goto free_req;
         }
         WARN_ON_ONCE(!req_is_leader());

         if (!(req->flags & SEEN_FIRST_TIME)) {
             // already posted it just before coming here
             req->flags |= SKIP_CQE;
             // we'll see it again when grp_refs hit 0
             req->flags |= SEEN_FIRST_TIME;

Forgot queue_group_members() here
             // Don't free the req, we're leaving it alive for now.
             // req->ref/REQ_F_REFCOUNT will be put next time we get here.
             return; // or continue
         }

         clean_up_request_resources(); // calls back into ublk
         // and now free the leader
     }

free_req:
     // the rest of io_free_batch_list()
     if (flags & REQ_F_REFCOUNT) {
         req_drop_ref();
         ....
     }
     ...
}

--
Pavel Begunkov




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux