On Sun, Mar 1, 2020 at 3:46 AM Bart Van Assche <bvanassche@xxxxxxx> wrote: > > On 2020-02-21 02:47, Jack Wang wrote: > > +/** > > + * rnbd_get_cpu_qlist() - finds a list with HW queues to be rerun > > + * @sess: Session to find a queue for > > + * @cpu: Cpu to start the search from > > + * > > + * Description: > > + * Each CPU has a list of HW queues, which needs to be rerun. If a list > > + * is not empty - it is marked with a bit. This function finds first > > + * set bit in a bitmap and returns corresponding CPU list. > > + */ > > +static struct rnbd_cpu_qlist * > > +rnbd_get_cpu_qlist(struct rnbd_clt_session *sess, int cpu) > > +{ > > + int bit; > > + > > + /* First half */ > > + bit = find_next_bit(sess->cpu_queues_bm, nr_cpu_ids, cpu); > > + if (bit < nr_cpu_ids) { > > + return per_cpu_ptr(sess->cpu_queues, bit); > > + } else if (cpu != 0) { > > + /* Second half */ > > + bit = find_next_bit(sess->cpu_queues_bm, cpu, 0); > > + if (bit < cpu) > > + return per_cpu_ptr(sess->cpu_queues, bit); > > + } > > + > > + return NULL; > > +} > > Please make the "first half" and "second half" comments unambiguous. To > me it seems like the code under "first half" searches through the second > half of the bitmap and that the code under "second half" searches > through the first half of the bitmap. Ok, will improve the comments, say searching "cpu to nr_cpu_ids" and "0 to cpu" > > > + /** > > + * That is simple percpu variable which stores cpu indeces, which are > > + * incremented on each access. We need that for the sake of fairness > > + * to wake up queues in a round-robin manner. > > + */ > > Please start block comments with "/*". ok > > > +static void wait_for_rtrs_disconnection(struct rnbd_clt_session *sess) > > + __releases(&sess_lock) > > + __acquires(&sess_lock) > > +{ > > + DEFINE_WAIT_FUNC(wait, autoremove_wake_function); > > Please use DEFINE_WAIT() instead of open-coding it. ok > > Thanks, > > Bart. Thanks!