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

tasks hang with copy_file_range: ll_file_splice_read()

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      copy_file_range(2) reads from a Lustre file hang.

      With no .copy_file_range VFS API implemented it calls do_splice_direct()->splice_direct_to_actor()->do_splice_to()->ll_file_splice_read().

      While the call chain of ll_file_splice_read()->ll_file_io_generic()->generic_file_splice_read()->ll_file_read_iter()->ll_file_io_generic().

      And that would try to get LDLM lock twice in ll_file_io_generic(), so that hang ensued.

      Attachments

        Issue Links

          Activity

            [LU-13745] tasks hang with copy_file_range: ll_file_splice_read()
            wshilong Wang Shilong (Inactive) made changes -
            Link Original: This issue is related to DDN-1752 [ DDN-1752 ]
            chunteraa Chris Hunter (Inactive) made changes -
            Link New: This issue is related to DDN-1718 [ DDN-1718 ]
            wshilong Wang Shilong (Inactive) made changes -
            Link New: This issue is related to DDN-1752 [ DDN-1752 ]
            simmonsja James A Simmons made changes -
            Link New: This issue is related to LU-12425 [ LU-12425 ]
            simmonsja James A Simmons made changes -
            Link New: This issue is related to LU-14060 [ LU-14060 ]
            adilger Andreas Dilger made changes -
            Labels New: always_except
            adilger Andreas Dilger made changes -
            Link New: This issue is related to LU-14045 [ LU-14045 ]
            pjones Peter Jones made changes -
            Assignee Original: WC Triage [ wc-triage ] New: Zhenyu Xu [ bobijam ]
            adilger Andreas Dilger made changes -
            Description Original: copy_file_range (2) reads from a lustre file hang.

            With no .copy_file_range vfs API implemented it calls do_splice_direct()->splice_direct_to_actor()->do_splice_to()->ll_file_splice_read()

            While the call chain of ll_file_splice_read()->ll_file_io_generic()->generic_file_splice_read()->ll_file_read_iter()->ll_file_io_generic()

            And that would try to get ldlm lock twice in ll_file_io_generic(), so that hang ensued.
            New: {{copy_file_range(2)}} reads from a Lustre file hang.

            With no {{.copy_file_range}} VFS API implemented it calls {{do\_splice\_direct()\->splice\_direct\_to\_actor()\->do\_splice\_to()\->ll\_file\_splice\_read()}}.

            While the call chain of {{ll\_file\_splice\_read()\->ll\_file\_io\_generic()\->generic\_file\_splice\_read()\->ll\_file\_read\_iter()\->ll\_file\_io\_generic()}}.

            And that would try to get LDLM lock twice in {{ll\_file\_io\_generic()}}, so that hang ensued.
            pjones Peter Jones made changes -
            Link New: This issue is related to JFC-10 [ JFC-10 ]

            People

              bobijam Zhenyu Xu
              bobijam Zhenyu Xu
              Votes:
              0 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated: