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 Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux