diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 1999-09-17 11:49:30 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-09-17 11:49:30 +0000 |
commit | eed7fde46a7c97cd15428b560d0a91c36138ee71 (patch) | |
tree | 94901758496aaa93022529749a15209be24111d9 /t | |
parent | 9461e3d094a555dd8be14b1286f461b93b333ad9 (diff) | |
download | perl-eed7fde46a7c97cd15428b560d0a91c36138ee71.tar.gz |
Filesystem quotas may stop you from using large files.
p4raw-id: //depot/cfgperl@4167
Diffstat (limited to 't')
-rw-r--r-- | t/lib/syslfs.t | 28 | ||||
-rw-r--r-- | t/op/lfs.t | 21 |
2 files changed, 34 insertions, 15 deletions
diff --git a/t/lib/syslfs.t b/t/lib/syslfs.t index 4d38a8e779..14a968a88c 100644 --- a/t/lib/syslfs.t +++ b/t/lib/syslfs.t @@ -30,13 +30,15 @@ sub explain { print <<EOM; # # If the lfs (large file support: large meaning larger than two gigabytes) -# tests are skipped or fail, it may mean either that your process is not -# allowed to write large files or that the file system you are running -# the tests on doesn't support large files, or both. You may also need -# to reconfigure your kernel. (This is all very system-dependent.) +# tests are skipped or fail, it may mean either that your process +# (or process group) is not allowed to write large files (resource +# limits) or that the file system you are running the tests on doesn't +# let your user/group have large files (quota) or the filesystem simply +# doesn't support large files. You may even need to reconfigure your kernel. +# (This is all very operating system and site-dependent.) # # Perl may still be able to support large files, once you have -# such a process and such a (file) system. +# such a process, enough quota, and such a (file) system. # EOM } @@ -79,19 +81,27 @@ unless (@s == 13 && # By now we better be sure that we do have sparse files: # if we are not, the following will hog 5 gigabytes of disk. Ooops. +$ENV{LC_ALL} = "C"; + sysopen(BIG, "big", O_WRONLY|O_CREAT|O_TRUNC) or do { warn "sysopen failed: $!\n"; bye }; sysseek(BIG, 5_000_000_000, SEEK_SET); + # The syswrite will fail if there are are filesize limitations (process or fs). -unless(syswrite(BIG, "big") == 3) { - $ENV{LC_ALL} = "C"; +my $syswrite = syswrite(BIG, "big") == 3; +my $close = close BIG if $syswrite; +unless($syswrite && $close) { + unless ($syswrite) { + print "# syswrite failed: $!\n" + } else { + print "# close failed: $!\n" + } if ($! =~/File too large/) { print "1..0\n# writing past 2GB failed\n"; explain(); - bye(); } + bye(); } -close BIG; @s = stat("big"); diff --git a/t/op/lfs.t b/t/op/lfs.t index ae6aac6079..af7853b270 100644 --- a/t/op/lfs.t +++ b/t/op/lfs.t @@ -29,13 +29,15 @@ sub explain { print <<EOM; # # If the lfs (large file support: large meaning larger than two gigabytes) -# tests are skipped or fail, it may mean either that your process is not -# allowed to write large files or that the file system you are running -# the tests on doesn't support large files, or both. You may also need -# to reconfigure your kernel. (This is all very system-dependent.) +# tests are skipped or fail, it may mean either that your process +# (or process group) is not allowed to write large files (resource +# limits) or that the file system you are running the tests on doesn't +# let your user/group have large files (quota) or the filesystem simply +# doesn't support large files. You may even need to reconfigure your kernel. +# (This is all very operating system and site-dependent.) # # Perl may still be able to support large files, once you have -# such a process and such a (file) system. +# such a process, enough quota, and such a (file) system. # EOM } @@ -82,15 +84,22 @@ unless (@s == 13 && # By now we better be sure that we do have sparse files: # if we are not, the following will hog 5 gigabytes of disk. Ooops. +$ENV{LC_ALL} = "C"; + open(BIG, ">big") or do { warn "open failed: $!\n"; bye }; binmode BIG; seek(BIG, 5_000_000_000, $SEEK_SET); + # Either the print or (more likely, thanks to buffering) the close will # fail if there are are filesize limitations (process or fs). my $print = print BIG "big"; my $close = close BIG if $print; unless ($print && $close) { - $ENV{LC_ALL} = "C"; + unless ($print) { + print "# print failed: $!\n" + } else { + print "# close failed: $!\n" + } if ($! =~/File too large/) { print "1..0\n# writing past 2GB failed\n"; explain(); |