Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-18989

a deadlock between fallocate() and setxattr()

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.17.0
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      osd_fallocate_preallocate() can extend current transaction but also restart it while holding an object's lock. It leads to the following deadlock between two mdt treads doing
      fallocate:

      crash> bt 44982
      PID: 44982    TASK: ffff9f6d53555580  CPU: 13   COMMAND: "mdt02_016"
       #0 [ffffbcd90e5679d0] __schedule at ffffffffa2331fe8
       #1 [ffffbcd90e567a38] schedule at ffffffffa233241a
       #2 [ffffbcd90e567a50] wait_transaction_locked at ffffffffc106f08a [jbd2]
       #3 [ffffbcd90e567aa8] add_transaction_credits at ffffffffc106f67a [jbd2]
       #4 [ffffbcd90e567b08] start_this_handle at ffffffffc106fa10 [jbd2]
       #5 [ffffbcd90e567b98] jbd2__journal_restart at ffffffffc107015e [jbd2]
       #6 [ffffbcd90e567be0] osd_fallocate_preallocate.constprop.0 at ffffffffc23e3b1b [osd_ldiskfs]
       #7 [ffffbcd90e567c70] osd_fallocate at ffffffffc23e40cb [osd_ldiskfs]
       #8 [ffffbcd90e567ca0] mdt_object_fallocate at ffffffffc21418f9 [mdt]
       #9 [ffffbcd90e567ce8] mdt_fallocate_hdl at ffffffffc2144125 [mdt]
      #10 [ffffbcd90e567d98] tgt_handle_request0 at ffffffffc1dea9e7 [ptlrpc]
      #11 [ffffbcd90e567dc0] tgt_request_handle at ffffffffc1deba0b [ptlrpc]
      #12 [ffffbcd90e567e30] ptlrpc_server_handle_request at ffffffffc1d362fd [ptlrpc]
      #13 [ffffbcd90e567e98] ptlrpc_main at ffffffffc1d3825e [ptlrpc]
      #14 [ffffbcd90e567f18] kthread at ffffffffa191fae6
      #15 [ffffbcd90e567f50] ret_from_fork at ffffffffa1802d9f
      

      and setxattr:

      bt 44939
      PID: 44939    TASK: ffff9f676a7f1c80  CPU: 6    COMMAND: "mdt03_014"
       #0 [ffffbcd90e4b7968] __schedule at ffffffffa2331fe8
       #1 [ffffbcd90e4b79d0] schedule at ffffffffa233241a
       #2 [ffffbcd90e4b79e8] wait_transaction_locked at ffffffffc106f08a [jbd2]
       #3 [ffffbcd90e4b7a40] add_transaction_credits at ffffffffc106f67a [jbd2]
       #4 [ffffbcd90e4b7aa0] start_this_handle at ffffffffc106fa10 [jbd2]
       #5 [ffffbcd90e4b7b30] jbd2__journal_start at ffffffffc106ff7b [jbd2]
       #6 [ffffbcd90e4b7b70] __ldiskfs_journal_start_sb at ffffffffc22af0a6 [ldiskfs]
       #7 [ffffbcd90e4b7bb0] osd_trans_start at ffffffffc23c53bc [osd_ldiskfs]
       #8 [ffffbcd90e4b7be8] tgt_client_data_update at ffffffffc1ddb389 [ptlrpc]
       #9 [ffffbcd90e4b7c28] tgt_client_new at ffffffffc1dde91b [ptlrpc]
      #10 [ffffbcd90e4b7c58] mdt_obd_connect at ffffffffc20e81a6 [mdt]
      #11 [ffffbcd90e4b7cb0] obd_connect at ffffffffc1d806dc [ptlrpc]
      #12 [ffffbcd90e4b7cf0] target_handle_connect at ffffffffc1d86cbb [ptlrpc]
      #13 [ffffbcd90e4b7dc0] tgt_request_handle at ffffffffc1debbcd [ptlrpc]
      #14 [ffffbcd90e4b7e30] ptlrpc_server_handle_request at ffffffffc1d362fd [ptlrpc]
      #15 [ffffbcd90e4b7e98] ptlrpc_main at ffffffffc1d3825e [ptlrpc]
      #16 [ffffbcd90e4b7f18] kthread at ffffffffa191fae6
      #17 [ffffbcd90e4b7f50] ret_from_fork at ffffffffa1802d9f
      
      crash> ps -m 44939
      [0 00:29:42.671] [UN]  PID: 44939    TASK: ffff9f676a7f1c80  CPU: 6    COMMAND: "mdt03_014"
      

      Attachments

        Activity

          People

            zam Alexander Zarochentsev
            zam Alexander Zarochentsev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: