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?