Details
-
Bug
-
Resolution: Fixed
-
Major
-
Lustre 2.7.0
-
3
-
9223372036854775807
Description
I was testing btrfs-osd. I ran obdfilter-survey on a small OST, and soon failure shew up because space was exausted. After obdfilter-survey finished, I umount OST and got following LASSERT error:
[ 2007.468973] LustreError: 31356:0:(ofd_dev.c:2924:ofd_fini()) ASSERTION( atomic_read(&d->ld_ref) == 0 ) failed:
[ 2007.475908] LustreError: 31356:0:(ofd_dev.c:2924:ofd_fini()) LBUG
[ 2007.480099] Pid: 31356, comm: umount
[ 2007.482557] \x0aCall Trace:
[ 2007.485274] [<ffffffffa0719843>] libcfs_debug_dumpstack+0x53/0x80 [libcfs]
[ 2007.490070] [<ffffffffa0719de5>] lbug_with_loc+0x45/0xc0 [libcfs]
[ 2007.494304] [<ffffffffa0fe0f33>] ofd_device_fini+0x2a3/0x2b0 [ofd]
[ 2007.498650] [<ffffffffa082ce4f>] class_cleanup+0x8df/0xcb0 [obdclass]
[ 2007.503167] [<ffffffffa082f754>] class_process_config+0x1e14/0x2f70 [obdclass]
[ 2007.508208] [<ffffffff811a8c43>] ? __kmalloc+0x1f3/0x230
[ 2007.511947] [<ffffffffa08284ea>] ? lustre_cfg_new+0x8a/0x570 [obdclass]
[ 2007.516580] [<ffffffffa083206f>] class_manual_cleanup+0xef/0x810 [obdclass]
[ 2007.521451] [<ffffffffa0866a3b>] server_put_super+0x94b/0xd70 [obdclass]
[ 2007.526132] [<ffffffff811c5116>] generic_shutdown_super+0x56/0xe0
[ 2007.530381] [<ffffffff811c5382>] kill_anon_super+0x12/0x20
[ 2007.534226] [<ffffffffa0833172>] lustre_kill_super+0x32/0x50 [obdclass]
[ 2007.538850] [<ffffffff811c572d>] deactivate_locked_super+0x3d/0x60
[ 2007.543154] [<ffffffff811c5d36>] deactivate_super+0x46/0x60
[ 2007.547071] [<ffffffff811e2a75>] mntput_no_expire+0xc5/0x120
[ 2007.551018] [<ffffffff811e3baf>] SyS_umount+0x9f/0x3c0
[ 2007.554633] [<ffffffff8160d469>] system_call_fastpath+0x16/0x1b
I thought it was a problem of btrfs-osd. But it turned out that ofd_preprw_write() might leak reference of objects. I will push a patch soon.
Patch landed. Close this ticket.