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.
Thanks,
Qu
>
> 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.
>
Attachment:
signature.asc
Description: OpenPGP digital signature
