Details

    • Improvement
    • Resolution: Fixed
    • Minor
    • Lustre 2.14.0
    • None
    • 9223372036854775807

    Description

      Kernels 4.10 and later (since commit a528d35e8b) have an enhanced statx() interface that can specify a bitmask to fetch specific attributes from a file (e.g. st_uid, st_gid, st_mode, and st_btime == file creation time), rather than fetching all of the normal stat() attributes (such as st_size and st_blocks). It also has a AT_STATX_DONT_SYNC mode which allows the kernel to return "lazy" stats without flushing all of the client data and fetching an accurate result from the server.

      This matches (not coincidentally) very well with the Lustre attribute mechanism, and could be advantageous for fetching attributes from ls --color (needs st_mode) without having to do a glimpse to fetch the size (which is just discarded anyway).

      The Lustre patch https://review.whamcloud.com/27715 "LU-9558 llite: user enhanced getattr functionality in newer kernels" added very basic support for this interface, but it only went so far as to handle the kernel API changes, but doesn't actually handle the different attribute flags appropriately (it currently fetches and returns all normal attributes - STATX_BASIC_STATS). This interface should be wired up properly so that we can take advantage of the efficiencies available.

      • only fetch MDS attributes if STATX_SIZE and STATX_BLOCKS are not requested, and avoid OSS glimpse RPCs completely
      • hook this into statahead to avoid async glimpse locks (AGL) if OST information not needed
      • enhance the MDS RPC interface to return the file creation time stored in both ldiskfs and ZFS already, and enable STATX_BTIME
      • in conjunction with Lazy Size-on-MDT (LSOM, LU-9538) return the LSOM size if AT_STATX_DONT_SYNC is used

      Attachments

        Issue Links

          Activity

            [LU-10934] integrate statx() API with Lustre

            Support for ls with statx() is in coreutils-8.32-3.fc33 and later. It is disabled in coreutils-8.32-3.fc32 and earlier Fedora releases because of a bug in libseccomp2 (presumably explained and resolved in a private RH bug I don't have access to) that affects its use inside VMs running on RHEL7 and other hosts that do not have statx() system call).  Using this statx-enabled-ls should avoid the need for the client to get any OST attributes for the majority of files (i.e. those that have LSOM enabled and store the size on the MDT inode).

            adilger Andreas Dilger added a comment - Support for  ls with statx() is in coreutils-8.32-3.fc33 and later. It is disabled in coreutils-8.32-3.fc32 and earlier Fedora releases because of a bug in libseccomp2 (presumably explained and resolved in a private RH bug I don't have access to ) that affects its use inside VMs running on RHEL7 and other hosts that do not have statx() system call).  Using this statx-enabled-ls should avoid the need for the client to get any OST attributes for the majority of files (i.e. those that have LSOM enabled and store the size on the MDT inode).

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38947/
            Subject: LU-10934 tests: increase timeout for sanityn test_51b
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 9edec7ab92fb24f0a46e019c65a21481f9314d07

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38947/ Subject: LU-10934 tests: increase timeout for sanityn test_51b Project: fs/lustre-release Branch: master Current Patch Set: Commit: 9edec7ab92fb24f0a46e019c65a21481f9314d07

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38973/
            Subject: LU-10934 tests: fix compilation without SELINUX
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 3aa5f8ecf31c29625057c19628d8bfbb3c0c26dc

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/38973/ Subject: LU-10934 tests: fix compilation without SELINUX Project: fs/lustre-release Branch: master Current Patch Set: Commit: 3aa5f8ecf31c29625057c19628d8bfbb3c0c26dc

            Neil Brown (neilb@suse.de) uploaded a new patch: https://review.whamcloud.com/38973
            Subject: LU-10934 tests: fix compilation without SELINUX
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 6cdbb0e9730076cb24888dbae828ef52cc100082

            gerrit Gerrit Updater added a comment - Neil Brown (neilb@suse.de) uploaded a new patch: https://review.whamcloud.com/38973 Subject: LU-10934 tests: fix compilation without SELINUX Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 6cdbb0e9730076cb24888dbae828ef52cc100082

            Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/38947
            Subject: LU-10934 tests: increase timeout for sanityn test_51b
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: a00f3f63fa7e8d3ba9a32dcf4da3de83b6dcdcb3

            gerrit Gerrit Updater added a comment - Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/38947 Subject: LU-10934 tests: increase timeout for sanityn test_51b Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: a00f3f63fa7e8d3ba9a32dcf4da3de83b6dcdcb3
            qian_wc Qian Yingjin added a comment -

            Thanks for your report, Alex.

            I will investigate it.

             

            Regards,

            Qian

            qian_wc Qian Yingjin added a comment - Thanks for your report, Alex. I will investigate it.   Regards, Qian

            tests sanityn/106* seem to be broken - even recent debugfs doesn't dump "btime".
            probably crtime was meant?

            bzzz Alex Zhuravlev added a comment - tests sanityn/106* seem to be broken - even recent debugfs doesn't dump "btime". probably crtime was meant?
            pjones Peter Jones added a comment -

            Landed for 2.14

            pjones Peter Jones added a comment - Landed for 2.14

            Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/36674/
            Subject: LU-10934 llite: integrate statx() API with Lustre
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 3f7853b31ef6f5a6c2837403910083057728a842

            gerrit Gerrit Updater added a comment - Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/36674/ Subject: LU-10934 llite: integrate statx() API with Lustre Project: fs/lustre-release Branch: master Current Patch Set: Commit: 3f7853b31ef6f5a6c2837403910083057728a842

            Yingjin Qian (qian@ddn.com) uploaded a new patch: https://review.whamcloud.com/36674
            Subject: LU-10934 llite: integrate statx() API with Lustre
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 3bb2844b25767676ab56946a00aff16f02a82db9

            gerrit Gerrit Updater added a comment - Yingjin Qian (qian@ddn.com) uploaded a new patch: https://review.whamcloud.com/36674 Subject: LU-10934 llite: integrate statx() API with Lustre Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 3bb2844b25767676ab56946a00aff16f02a82db9

            People

              qian_wc Qian Yingjin
              adilger Andreas Dilger
              Votes:
              0 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: