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.
It's not easy to trace the bio here, it's set indirectly in
submit_extent_page, submit_one_bio is another indirection, switching by
type and sometimes bio_endio is called in case of an error.