[LU-12078] File path for zfs scripts are too long Created: 15/Mar/19  Updated: 08/Dec/20

Status: Open
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.10.6
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Shuichi Ihara Assignee: WC Triage
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Related
is related to LU-14198 Several dist-* make-targets broken wh... Resolved
Severity: 3
Rank (Obsolete): 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.



 Comments   
Comment by Andreas Dilger [ 15/Mar/19 ]

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.

Generated at Sat Feb 10 02:49:29 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.