Details
-
Bug
-
Resolution: Fixed
-
Major
-
None
-
None
-
3
-
9223372036854775807
Description
A long osd_fallocate_preallocate() call:
crash> bt 574060 PID: 574060 TASK: ffff8cef4b1c4740 CPU: 23 COMMAND: "ll_ost05_010" #0 [fffffe000049ee48] crash_nmi_callback at ffffffffbb254863 #1 [fffffe000049ee50] nmi_handle at ffffffffbb224c83 #2 [fffffe000049eea8] default_do_nmi at ffffffffbbb41f89 #3 [fffffe000049eec8] do_nmi at ffffffffbb22518e #4 [fffffe000049eef0] end_repeat_nmi at ffffffffbbc015c4 [exception RIP: ldiskfs_mb_regular_allocator+677] RIP: ffffffffc1d25b85 RSP: ffffb789670b38f0 RFLAGS: 00000202 RAX: ffff8ccd88348428 RBX: 00000000000d7263 RCX: 0000000000000006 RDX: 0000000000000010 RSI: 00000000002dd3df RDI: 00000000000035c9 RBP: 000000000000059d R8: 00000000000d64fe R9: ffff8cd28bd2f000 R10: 0000000000000002 R11: ffff8cd28bd2d800 R12: ffff8cd28bd2f000 R13: 00000000002dd3df R14: ffff8cec5f7e56e8 R15: 00000000000d7000 ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018 --- <NMI exception stack> --- #5 [ffffb789670b38f0] ldiskfs_mb_regular_allocator at ffffffffc1d25b85 [ldiskfs] #6 [ffffb789670b3988] ldiskfs_mb_new_blocks at ffffffffc1d26cd2 [ldiskfs] #7 [ffffb789670b3a40] ldiskfs_ext_map_blocks at ffffffffc1d5512c [ldiskfs] #8 [ffffb789670b3b08] ldiskfs_map_blocks at ffffffffc1d5b26d [ldiskfs] #9 [ffffb789670b3b78] osd_fallocate_preallocate at ffffffffc1df4eb8 [osd_ldiskfs] #10 [ffffb789670b3c08] osd_fallocate at ffffffffc1df546d [osd_ldiskfs] #11 [ffffb789670b3c40] ofd_object_fallocate at ffffffffc1c00326 [ofd] #12 [ffffb789670b3cc0] ofd_fallocate_hdl at ffffffffc1bed3bf [ofd] #13 [ffffb789670b3d50] tgt_request_handle at ffffffffc165b053 [ptlrpc] #14 [ffffb789670b3dd0] ptlrpc_server_handle_request at ffffffffc160aac3 [ptlrpc] #15 [ffffb789670b3e38] ptlrpc_main at ffffffffc160c578 [ptlrpc] #16 [ffffb789670b3f10] kthread at ffffffffbb3043a6 #17 [ffffb789670b3f50] ret_from_fork at ffffffffbbc0023f crash>
blocks other fs writers b/c they are want to open transaction handles but the current transaction is kept open by the fallocate threads despite the transaction state is T_LOCKED and the transaction handle was created 8 min ago:
crash> kmem -s ffff8cd560fdd968 CACHE OBJSIZE ALLOCATED TOTAL SLABS SSIZE NAME ffff8cd3dfc0c1c0 56 978 6424 88 4k jbd2_journal_handle SLAB MEMORY NODE TOTAL ALLOCATED FREE fffffd008583f740 ffff8cd560fdd000 1 73 26 47 FREE / [ALLOCATED] [ffff8cd560fdd968] crash> jbd2_journal_handle struct jbd2_journal_handle { union { transaction_t *h_transaction; journal_t *h_journal; }; handle_t *h_rsv_handle; int h_total_credits; int h_revoke_credits; int h_revoke_credits_requested; int h_ref; int h_err; unsigned int h_sync : 1; unsigned int h_jdata : 1; unsigned int h_reserved : 1; unsigned int h_aborted : 1; unsigned int h_type : 8; unsigned int h_line_no : 16; unsigned long h_start_jiffies; unsigned int h_requested_credits; unsigned int saved_alloc_context; } SIZE: 56 crash> jbd2_journal_handle ffff8cd560fdd968 struct jbd2_journal_handle { { h_transaction = 0xffff8cd8d415a100, h_journal = 0xffff8cd8d415a100 }, h_rsv_handle = 0x0, h_total_credits = 167, h_revoke_credits = 8, h_revoke_credits_requested = 8, h_ref = 1, h_err = 0, h_sync = 0, h_jdata = 0, h_reserved = 0, h_aborted = 0, h_type = 0, h_line_no = 1993, h_start_jiffies = 11051536247, h_requested_credits = 313, saved_alloc_context = 0 } crash> ps -t 574060 PID: 574060 TASK: ffff8cef4b1c4740 CPU: 23 COMMAND: "ll_ost05_010" RUN TIME: 78 days, 03:05:51 START TIME: 7050951549099 UTIME: 0 STIME: 878360794630 crash> crash: command not found: <D0><BE><D1><88><D0> crash> jiffies jiffies = $1 = 11052069069 crash> p 11052069069 - 11051536247 p: gdb request failed: p 11052069069 11051536247 crash> 11052069069 - 11051536247 crash: command not found: 11052069069 crash> gdb p 11052069069 - 11051536247 $2 = 532822 crash> gdb p (11052069069 - 11051536247 ) / 1000 / 60 $3 = 8 crash> crash> transaction_t 0xffff8cd8d415a100 | head struct transaction_t { t_journal = 0xffff8cd28bd2a000, t_tid = 366403773, t_state = T_LOCKED, t_log_start = 0, t_nr_buffers = 669, t_reserved_list = 0x0, t_buffers = 0xffff8cde42cd3708, t_forget = 0x0, t_checkpoint_list = 0x0, crash>