On 01/03/2018 07:34 PM, Filipe Manana wrote:
On Wed, Jan 3, 2018 at 8:07 AM, Anand Jain <anand.jain@xxxxxxxxxx> wrote:bio_add_page() can fail for logical reasons as from the bio_add_page() comments:- 'This will only fail if either bio->bi_vcnt == bio->bi_max_vecs or it's a cloned bio.' Don't inc the write error statistics for this. And set -EINVAL instead of -EIO. Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx> --- fs/btrfs/scrub.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index d766c73eb29a..8c1508a41f90 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -4618,15 +4618,15 @@ static int write_page_nocow(struct scrub_ctx *sctx, bio->bi_opf = REQ_OP_WRITE | REQ_SYNC; ret = bio_add_page(bio, page, PAGE_SIZE, 0); if (ret != PAGE_SIZE) { -leave_with_eio: bio_put(bio); + return -EINVAL; + } + + if (btrfsic_submit_bio_wait(bio)) { btrfs_dev_stat_inc_and_print(dev, BTRFS_DEV_STAT_WRITE_ERRS); return -EIO; }You are now introducing a leak of the bio. Missing bio_put(bio) before returning.
Oops. My bad. Thanks. Now fixed in v2. - Anand
- if (btrfsic_submit_bio_wait(bio)) - goto leave_with_eio; - bio_put(bio); return 0; } -- 2.15.0 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
