Bug 1420462
| Summary: | thin-pool target usage leaves kmemleak reported leaks | ||
|---|---|---|---|
| Product: | [Community] LVM and device-mapper | Reporter: | Zdenek Kabelac <zkabelac> |
| Component: | device-mapper | Assignee: | Mike Snitzer <msnitzer> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | cluster-qe <cluster-qe> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 2.02.169 | CC: | agk, heinzm, jbrassow, msnitzer, prajnoha, zkabelac |
| Target Milestone: | --- | Flags: | rule-engine:
lvm-technical-solution?
|
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2021-01-06 23:08:52 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Patch suggested with: https://www.redhat.com/archives/dm-devel/2017-April/msg00286.html (with full headers) -- drivers/md/dm-thin.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 2b266a2..5742e5e 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -1069,6 +1069,7 @@ static void passdown_endio(struct bio *bio) * to unmap (we ignore err). */ queue_passdown_pt2(bio->bi_private); + bio_put(bio); } Was fixed long ago with this upstream commit:
commit 948f581a53b704b984aa20df009f0a2b4cf7f907
Author: Dennis Yang <dennisyang>
Date: Tue Apr 18 15:27:06 2017 +0800
dm thin: fix a memory leak when passing discard bio down
dm-thin does not free the discard_parent bio after all chained sub
bios finished. The following kmemleak report could be observed after
pool with discard_passdown option processes discard bios in
linux v4.11-rc7. To fix this, we drop the discard_parent bio reference
when its endio (passdown_endio) called.
unreferenced object 0xffff8803d6b29700 (size 256):
comm "kworker/u8:0", pid 30349, jiffies 4379504020 (age 143002.776s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01 00 00 00 00 00 00 f0 00 00 00 00 00 00 00 00 ................
backtrace:
[<ffffffff81a5efd9>] kmemleak_alloc+0x49/0xa0
[<ffffffff8114ec34>] kmem_cache_alloc+0xb4/0x100
[<ffffffff8110eec0>] mempool_alloc_slab+0x10/0x20
[<ffffffff8110efa5>] mempool_alloc+0x55/0x150
[<ffffffff81374939>] bio_alloc_bioset+0xb9/0x260
[<ffffffffa018fd20>] process_prepared_discard_passdown_pt1+0x40/0x1c0 [dm_thin_pool]
[<ffffffffa018b409>] break_up_discard_bio+0x1a9/0x200 [dm_thin_pool]
[<ffffffffa018b484>] process_discard_cell_passdown+0x24/0x40 [dm_thin_pool]
[<ffffffffa018b24d>] process_discard_bio+0xdd/0xf0 [dm_thin_pool]
[<ffffffffa018ecf6>] do_worker+0xa76/0xd50 [dm_thin_pool]
[<ffffffff81086239>] process_one_work+0x139/0x370
[<ffffffff810867b1>] worker_thread+0x61/0x450
[<ffffffff8108b316>] kthread+0xd6/0xf0
[<ffffffff81a6cd1f>] ret_from_fork+0x3f/0x70
[<ffffffffffffffff>] 0xffffffffffffffff
Cc: stable.org
Signed-off-by: Dennis Yang <dennisyang>
Signed-off-by: Mike Snitzer <snitzer>
|
Description of problem: No sure how real this issue is - but with lvm2 test suite run we kmemleak couple of this elements per each run. unreferenced object 0xffff8bbcbad71f00 (size 256): comm "kworker/u4:2", pid 5875, jiffies 4298404175 (age 413.812s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff8b9471ca>] kmemleak_alloc+0x4a/0xa0 [<ffffffff8b28be2e>] kmem_cache_alloc+0x14e/0x2e0 [<ffffffff8b21529d>] mempool_alloc_slab+0x1d/0x30 [<ffffffff8b215019>] mempool_alloc+0x79/0x1e0 [<ffffffff8b4572e7>] bio_alloc_bioset+0xa7/0x270 [<ffffffffc02ec48a>] process_prepared_discard_passdown_pt1+0x7a/0x180 [dm_thin_pool] [<ffffffffc02eb38c>] process_discard_cell_passdown+0x15c/0x1e0 [dm_thin_pool] [<ffffffffc02e9821>] process_discard_bio+0xc1/0xf0 [dm_thin_pool] [<ffffffffc02ee7a1>] do_worker+0x781/0x900 [dm_thin_pool] [<ffffffff8b0d4d80>] process_one_work+0x260/0x750 [<ffffffff8b0d52be>] worker_thread+0x4e/0x4a0 [<ffffffff8b0dcacc>] kthread+0x12c/0x150 [<ffffffff8b956fc1>] ret_from_fork+0x31/0x40 [<ffffffffffffffff>] 0xffffffffffffffff Version-Release number of selected component (if applicable): Kernel 4.10-rc6 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info: