On Thu, Jan 31, 2019 at 08:45:42AM +0800, Qu Wenruo wrote: > > > On 2019/1/30 下午11:19, David Sterba wrote: > > On Fri, Jan 25, 2019 at 01:09:17PM +0800, Qu Wenruo wrote: > >> +static int __must_check flush_write_bio(struct extent_page_data *epd) > >> { > >> - if (epd->bio) { > >> - int ret; > >> + int ret = 0; > >> > >> + if (epd->bio) { > >> ret = submit_one_bio(epd->bio, 0, 0); > >> - BUG_ON(ret < 0); /* -ENOMEM */ > >> epd->bio = NULL; > > > > I'm not sure if resetting epd->bio to NULL is all that needs to be done > > here. With the BUG_ON the error case never happens so if all goes fine > > it's also ok to set it to NULL and continue. But the callers might need > > to send the flush again. > > If flush_write_bio() get called again on the failed one, it will just > get skipped as epd->bio is NULL, submit_one_bio() will not be triggered.
Yes that's clear, but what is the state of the bio that went to flush_write_bio and submit_one_bio failed?