On Tue, Feb 6, 2024 at 6:05 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Mon, Feb 05, 2024 at 05:05:52PM +0800, zhaoyang.huang wrote: > > +void bio_set_active_ioprio(struct bio *bio) > > why does this still exist? i said no. I supplied two sets of APIs in v8, this one is for iterating the bio. The reason is bio_add_page/folio could return success without adding a page which can not be dealt with bio_set_active_ioprio_folio > > > +void bio_set_active_ioprio_page(struct bio *bio, struct page *page) > > this function should not exist. > > > +void bio_set_active_ioprio_folio(struct bio *bio, struct folio *folio) > > this is the only one which should. did you even look at the > implementation of PageWorkingset? > > > +extern void bio_set_active_ioprio(struct bio *bio); > > +extern void bio_set_active_ioprio_folio(struct bio *bio, struct folio *folio); > > +extern void bio_set_active_ioprio_page(struct bio *bio, struct page *page); > > do not mark function prototypes with extern. > > > +#ifdef CONFIG_BLK_CONT_ACT_BASED_IOPRIO > > + /* > > + * bi_cont_act record total activities of bi_io_vec->pages > > + */ > > + u64 bi_cont_act; > > +#endif > > what? > > look, you just don't understand. i've spent too much time replying to > you trying to help you. i give up. everything to do with this idea is > NAKed. go away. Sorry for the confusion, but I have to find a place to record the historic bio's activities for bio_set_active_ioprio_folio. There could be many bio_add_folios before submit_bio