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

failed peer discovery still taking too long

Details

    • Bug
    • Resolution: Fixed
    • Critical
    • Lustre 2.13.0
    • Lustre 2.13.0
    • None
    • 3
    • 9223372036854775807

    Description

      On master, when running conf-sanity I often see mount stuck in the following stack
      trace:

      n:lustre-release# stack1 llog
      29833 llog_process_th
      [<ffffffffc06be64b>] lnet_discover_peer_locked+0x10b/0x380 [lnet]
      [<ffffffffc06be930>] LNetPrimaryNID+0x70/0x1a0 [lnet]
      [<ffffffffc0990ade>] ptlrpc_connection_get+0x3e/0x450 [ptlrpc]
      [<ffffffffc098518c>] ptlrpc_uuid_to_connection+0xec/0x1a0 [ptlrpc]
      [<ffffffffc09580c2>] import_set_conn+0xb2/0x7a0 [ptlrpc]
      [<ffffffffc09587c3>] client_import_add_conn+0x13/0x20 [ptlrpc]
      [<ffffffffc074efa9>] class_add_conn+0x419/0x680 [obdclass]
      [<ffffffffc0750bc6>] class_process_config+0x19b6/0x27e0 [obdclass]
      [<ffffffffc0753644>] class_config_llog_handler+0x934/0x14d0 [obdclass]
      [<ffffffffc0717904>] llog_process_thread+0x834/0x1550 [obdclass]
      [<ffffffffc071902f>] llog_process_thread_daemonize+0x9f/0xe0 [obdclass]
      [<ffffffff810b252f>] kthread+0xcf/0xe0
      [<ffffffff816b8798>] ret_from_fork+0x58/0x90
      [<ffffffffffffffff>] 0xffffffffffffffff
      

      conf-sanity has some tests that use bogus NIDs like 1.2.3.4 and 4.3.2.1.These are actually real IPv4 addresses but AFAICT they just discard all packets.I can see that the discovery thread cancels discovery on these peers but the llog_process_thread seems to stay in lnet_discover_peer_locked() for upto 60 seconds after. Looking at the code I can't see how it would get worken up in this case. Why doesn't lnet_peer_cancel_discovery() wake up the waiters on lp_dc_waitq? Or why don't we use schedule_timeout() with the discovery/transaction timeout in lnet_discover_peer_locked()?

      Attachments

        Issue Links

          Activity

            [LU-10931] failed peer discovery still taking too long
            pjones Peter Jones added a comment -

            Landed for 2.13

            pjones Peter Jones added a comment - Landed for 2.13

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35444/
            Subject: LU-10931 lnet: handle unlink before send completes
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: d8fc5c23fe541e0ff6ce5bec6302957714c3f69f

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35444/ Subject: LU-10931 lnet: handle unlink before send completes Project: fs/lustre-release Branch: master Current Patch Set: Commit: d8fc5c23fe541e0ff6ce5bec6302957714c3f69f

            Amir Shehata (ashehata@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35444
            Subject: LU-10931 lnet: handle LNetMDUnlink case
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 97594d111f7bee96e056025dcad7f0d9bac91369

            gerrit Gerrit Updater added a comment - Amir Shehata (ashehata@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35444 Subject: LU-10931 lnet: handle LNetMDUnlink case Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 97594d111f7bee96e056025dcad7f0d9bac91369

            If LNetMDUnlink() is called on an md with md->md_refcount > 0 then the eq callback isn't called. What's happening here is the response times out before the send completes. So we have a refcount on the MD. The Unlink gets dropped on the floor. Send completes, but because we've already timed out the REPLY for the GET is dropped. Now we're left with a peer that is in:
            LNET_PEER_MULTI_RAIL
            LNET_PEER_DISCOVERING
            LNET_PEER_PING_SENT
            But no more events are coming to it, and the discovery never completes

            ashehata Amir Shehata (Inactive) added a comment - If LNetMDUnlink() is called on an md with md->md_refcount > 0 then the eq callback isn't called. What's happening here is the response times out before the send completes. So we have a refcount on the MD. The Unlink gets dropped on the floor. Send completes, but because we've already timed out the REPLY for the GET is dropped. Now we're left with a peer that is in: LNET_PEER_MULTI_RAIL LNET_PEER_DISCOVERING LNET_PEER_PING_SENT But no more events are coming to it, and the discovery never completes

            James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35408
            Subject: LU-10931 tests: checking debug status for recovery-small
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 492cebf6912af3840cdbd39a815e5fc5e41bb96c

            gerrit Gerrit Updater added a comment - James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35408 Subject: LU-10931 tests: checking debug status for recovery-small Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 492cebf6912af3840cdbd39a815e5fc5e41bb96c
            jamesanunez James Nunez (Inactive) added a comment - - edited

            Patch 35325 put recovery-small test 136 on the ALWAYS_EXCEPT list and does not fix this issue. Please keep this issue open until a fix for this issue is found and the test is removed from the ALWAYS_EXCEPT list.

            jamesanunez James Nunez (Inactive) added a comment - - edited Patch 35325 put recovery-small test 136 on the ALWAYS_EXCEPT list and does not fix this issue. Please keep this issue open until a fix for this issue is found and the test is removed from the ALWAYS_EXCEPT list.

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35325/
            Subject: LU-10931 tests: stop running recovery-small 136
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: b511c65f468698aeb6e68f091ee3f30ec27830d0

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/35325/ Subject: LU-10931 tests: stop running recovery-small 136 Project: fs/lustre-release Branch: master Current Patch Set: Commit: b511c65f468698aeb6e68f091ee3f30ec27830d0

            I tested the patch for LU-12424, https://review.whamcloud.com/#/c/35191/, but we are still seeing this issue.

            The patch https://review.whamcloud.com/#/c/35301/ is just a duplicate of Amir's LU-12424 patch and I ran recovery-small several times and still see this hang. Two failures with the LU-12424 patch are at
            https://testing.whamcloud.com/test_sessions/6a97872a-fc69-444f-afbf-d44bb93d11cf
            https://testing.whamcloud.com/test_sessions/6c9c2bb5-43c9-4ddd-a3a7-e5da94403e1a

            Amir - Would you please comment on this issue and if the 35191 patch should fix this issue?

            jamesanunez James Nunez (Inactive) added a comment - I tested the patch for LU-12424 , https://review.whamcloud.com/#/c/35191/ , but we are still seeing this issue. The patch https://review.whamcloud.com/#/c/35301/ is just a duplicate of Amir's LU-12424 patch and I ran recovery-small several times and still see this hang. Two failures with the LU-12424 patch are at https://testing.whamcloud.com/test_sessions/6a97872a-fc69-444f-afbf-d44bb93d11cf https://testing.whamcloud.com/test_sessions/6c9c2bb5-43c9-4ddd-a3a7-e5da94403e1a Amir - Would you please comment on this issue and if the 35191 patch should fix this issue?

            Close as a duplicate because patch https://review.whamcloud.com/35191 "LU-12424 lnet: prevent loop in LNetPrimaryNID()" has landed and should resolve the issue.

            adilger Andreas Dilger added a comment - Close as a duplicate because patch https://review.whamcloud.com/35191 " LU-12424 lnet: prevent loop in LNetPrimaryNID() " has landed and should resolve the issue.

            James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35325
            Subject: LU-10931 tests: stop running recovery-small 136
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 38b6a60c213999d03e4ae5000a2bfdb7db1121b6

            gerrit Gerrit Updater added a comment - James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35325 Subject: LU-10931 tests: stop running recovery-small 136 Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 38b6a60c213999d03e4ae5000a2bfdb7db1121b6

            James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35301
            Subject: LU-10931 lnet: run testing against patch
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 08e1512871834b218f4f321743f9679e0a1b55e7

            gerrit Gerrit Updater added a comment - James Nunez (jnunez@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/35301 Subject: LU-10931 lnet: run testing against patch Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 08e1512871834b218f4f321743f9679e0a1b55e7

            People

              ashehata Amir Shehata (Inactive)
              jhammond John Hammond
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: