Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
client may deadlock with the following trace at umount:
[ 235.360391] CPU: 0 PID: 9863 Comm: umount Tainted: G W O --------- - - 4.18.0 #11 [ 235.360447] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014 [ 235.360489] Call Trace: [ 235.360503] dump_stack+0x6e/0xa0 [ 235.360535] lbug_with_loc.cold.4+0x5/0x63 [libcfs] [ 235.360581] lov_delete_composite+0x45b/0x680 [lov] [ 235.360655] ? wait_woken+0x80/0x80 [ 235.360693] lov_object_delete+0xc1/0x260 [lov] [ 235.360752] lu_object_free.isra.5+0x76/0x190 [obdclass] [ 235.360877] cl_inode_fini+0xeb/0x250 [lustre] [ 235.360967] ? preempt_count_add+0x44/0x90 [ 235.360995] ll_clear_inode+0x269/0x620 [lustre] [ 235.361094] ll_delete_inode+0x3b/0x140 [lustre] [ 235.401246] evict+0xbc/0x180 [ 235.401328] dispose_list+0x38/0x60 [ 235.401387] evict_inodes+0x12e/0x170 [ 235.401446] generic_shutdown_super+0x2d/0xf0 [ 235.401521] kill_anon_super+0x9/0x20 [ 235.401578] deactivate_locked_super+0x24/0x60 [ 235.401653] cleanup_mnt+0x36/0x70
kernel's umount wants to release all inodes first, but an inode (or Lustre object representing it) can be pinned by an async enqueue RPC fired by the statahead. if OSC's import is not alive at this moment (e.g. OST is down), then we get into a deadlock - nobody invalidates the import and ll_clear_inode() is waiting till the object is freed.