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

File path for zfs scripts are too long

Details

    • Bug
    • Resolution: Unresolved
    • Minor
    • None
    • Lustre 2.10.6
    • None
    • 3
    • 9223372036854775807

    Description

      I've added test commit top of 2.10.7_rc1 tag for test. at the end, tar filename is a bit longer. (lustre-2.10.7_RC1.tar.gz vs lustre-2.10.7_RC1_1_g8c8ff5f.tar.gz) and there are some file path are longer than limitation below.

      # sh ./autogen.sh;  ./configure --enable-dist; make dist
      - snip - 
      
      test -n "" \
      || find "lustre-2.10.7_RC1_1_g8c8ff5f" -type d ! -perm -755 \
              -exec chmod u+rwx,go+rx {} \; -o \
        ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
        ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
        ! -type d ! -perm -444 -exec /bin/sh /scratch/lustre-release/config/install-sh -c -m a+r {} {} \; \
      || chmod -R a+r "lustre-2.10.7_RC1_1_g8c8ff5f"
      tardir=lustre-2.10.7_RC1_1_g8c8ff5f && tar --format=ustar -chf - "$tardir" | GZIP=--best gzip -c >lustre-2.10.7_RC1_1_g8c8ff5f.tar.gz
      tar: lustre-2.10.7_RC1_1_g8c8ff5f/contrib/lbuild/lustre-2.10.7_RC1/zfs/scripts/zpios-test/4th-1024rc-4rs-1cs-4off.sh: link name is too long; not dumped
      tar: lustre-2.10.7_RC1_1_g8c8ff5f/contrib/lbuild/lustre-2.10.7_RC1/zfs/scripts/zpios-test/1x256th-65536rc-4rs-1cs-4off.sh: link name is too long; not dumped
      tar: lustre-2.10.7_RC1_1_g8c8ff5f/contrib/lbuild/lustre-2.10.7_RC1/zfs/scripts/zpios-test/16th-8192rc-4rs-1cs-4off.sh: link name is too long; not dumped
      tar: lustre-2.10.7_RC1_1_g8c8ff5f/contrib/lbuild/lustre-2.10.7_RC1/zfs/scripts/zpios-test/1th-16rc-4rs-1cs-4off.sh: link name is too long; not dumped
      tar: lustre-2.10.7_RC1_1_g8c8ff5f/contrib/lbuild/lustre-2.10.7_RC1/zfs/cmd/zed/zed.d/resilver_finish-notify.sh: link name is too long; not dumped
      tar: Exiting with failure status due to previous errors
      make[1]: Leaving directory `/scratch/lustre-release'
      if test -d "lustre-2.10.7_RC1_1_g8c8ff5f"; then find "lustre-2.10.7_RC1_1_g8c8ff5f" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "lustre-2.10.7_RC1_1_g8c8ff5f" || { sleep 5 && rm -rf "lustre-2.10.7_RC1_1_g8c8ff5f"; }; else :; fi
      

      this tarball gets broken whtn it extracts.

      Attachments

        Issue Links

          Activity

            [LU-12078] File path for zfs scripts are too long

            One thing that stands out is using "--format=ustar". I suspect this is causing ancient filename length limits to be used...

            I see an old commit that is supposed to fix this:

            commit 7ef98b9c2549185b1ee2e758eb2cf0da261d75b5
            Author:     Brian J. Murrell <brian@whamcloud.com>
            AuthorDate: Mon Jan 24 15:53:53 2011 -0500
            Commit:     Brian J. Murrell <brian@whamcloud.com>
            CommitDate: Mon Feb 28 12:51:27 2011 -0500
            
                b=21581 too long file / path names for old tar
                
                Instruct automake to use tar's ustar format to prevent errors when
                pathnames are longer than 99 chars.
            

            but it may not be enough. Could you try replacing "tar-ustar" in configure.ac with "tar-pax" to see if this fixes your problem? This is not being hit in anyone else's build environment, so you will need to verify this fixes the problem on your system. The "--format=pax" support has been available in GNU tar since version 1.14, which is really old already (I think we were patching tar 1.22 for Lustre many years ago), and is not a portability concern since Lustre will only run on Linux and use GNU tar.

            Also note that there probably shouldn't be a whole ZFS tree under lbuild/lustre-2.10.7_RC1 in the build directory, but I don't use lbuild very much and can't comment authoritatively.

            adilger Andreas Dilger added a comment - One thing that stands out is using "--format=ustar". I suspect this is causing ancient filename length limits to be used... I see an old commit that is supposed to fix this: commit 7ef98b9c2549185b1ee2e758eb2cf0da261d75b5 Author: Brian J. Murrell <brian@whamcloud.com> AuthorDate: Mon Jan 24 15:53:53 2011 -0500 Commit: Brian J. Murrell <brian@whamcloud.com> CommitDate: Mon Feb 28 12:51:27 2011 -0500 b=21581 too long file / path names for old tar Instruct automake to use tar's ustar format to prevent errors when pathnames are longer than 99 chars. but it may not be enough. Could you try replacing " tar-ustar " in configure.ac with " tar-pax " to see if this fixes your problem? This is not being hit in anyone else's build environment, so you will need to verify this fixes the problem on your system. The " --format=pax " support has been available in GNU tar since version 1.14, which is really old already (I think we were patching tar 1.22 for Lustre many years ago), and is not a portability concern since Lustre will only run on Linux and use GNU tar. Also note that there probably shouldn't be a whole ZFS tree under lbuild/lustre-2.10.7_RC1 in the build directory, but I don't use lbuild very much and can't comment authoritatively.

            People

              wc-triage WC Triage
              sihara Shuichi Ihara
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: