tar: bugfix for creation of --posix --sparse tarballs
GNU tar failed to create posix archives containing sparse files of effective size (real size stored on the disk) >8GB. Version: 2:1.26-19 Resolves: #516309
This commit is contained in:
parent
fc99fb3b0a
commit
87cdd4918e
66
tar-1.26-pax-big-sparse-files.patch
Normal file
66
tar-1.26-pax-big-sparse-files.patch
Normal file
@ -0,0 +1,66 @@
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 8aeae33..8f3c416 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -1,10 +1,15 @@
|
||||
GNU tar NEWS - User visible changes. 2012-11-19
|
||||
Please send GNU tar bug reports to <bug-tar@gnu.org>
|
||||
|
||||
+** Sparse files with large data
|
||||
+
|
||||
+When creating a PAX-format archive, tar no longer arbitrarily restricts
|
||||
+the size of the representation of a sparse file to be less than 8 GiB.
|
||||
+
|
||||
|
||||
version 1.26 - Sergey Poznyakoff, 2011-03-12
|
||||
|
||||
-* Bugfixes
|
||||
+* Bug fixes
|
||||
|
||||
** Fix the --verify option, which broke in version 1.24.
|
||||
|
||||
diff --git a/src/sparse.c b/src/sparse.c
|
||||
index 4b2f982..cfd0c66 100644
|
||||
--- a/src/sparse.c
|
||||
+++ b/src/sparse.c
|
||||
@@ -919,6 +919,18 @@ pax_sparse_member_p (struct tar_sparse_file *file)
|
||||
|| file->stat_info->sparse_major > 0;
|
||||
}
|
||||
|
||||
+/* Start a header that uses the effective (shrunken) file size. */
|
||||
+static union block *
|
||||
+pax_start_header (struct tar_stat_info *st)
|
||||
+{
|
||||
+ off_t realsize = st->stat.st_size;
|
||||
+ union block *blk;
|
||||
+ st->stat.st_size = st->archive_file_size;
|
||||
+ blk = start_header (st);
|
||||
+ st->stat.st_size = realsize;
|
||||
+ return blk;
|
||||
+}
|
||||
+
|
||||
static bool
|
||||
pax_dump_header_0 (struct tar_sparse_file *file)
|
||||
{
|
||||
@@ -968,9 +980,7 @@ pax_dump_header_0 (struct tar_sparse_file *file)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
- blk = start_header (file->stat_info);
|
||||
- /* Store the effective (shrunken) file size */
|
||||
- OFF_TO_CHARS (file->stat_info->archive_file_size, blk->header.size);
|
||||
+ blk = pax_start_header (file->stat_info);
|
||||
finish_header (file->stat_info, blk, block_ordinal);
|
||||
if (save_file_name)
|
||||
{
|
||||
@@ -1035,9 +1045,7 @@ pax_dump_header_1 (struct tar_sparse_file *file)
|
||||
if (strlen (file->stat_info->file_name) > NAME_FIELD_SIZE)
|
||||
file->stat_info->file_name[NAME_FIELD_SIZE] = 0;
|
||||
|
||||
- blk = start_header (file->stat_info);
|
||||
- /* Store the effective (shrunken) file size */
|
||||
- OFF_TO_CHARS (file->stat_info->archive_file_size, blk->header.size);
|
||||
+ blk = pax_start_header (file->stat_info);
|
||||
finish_header (file->stat_info, blk, block_ordinal);
|
||||
free (file->stat_info->file_name);
|
||||
file->stat_info->file_name = save_file_name;
|
13
tar.spec
13
tar.spec
@ -5,7 +5,7 @@ Summary: A GNU file archiving program
|
||||
Name: tar
|
||||
Epoch: 2
|
||||
Version: 1.26
|
||||
Release: 18%{?dist}
|
||||
Release: 19%{?dist}
|
||||
License: GPLv3+
|
||||
Group: Applications/Archiving
|
||||
URL: http://www.gnu.org/software/tar/
|
||||
@ -76,6 +76,12 @@ Patch10: tar-1.26-xattrs.patch
|
||||
# ~> upstream (it is part of df7b55a8f6354e)
|
||||
Patch11: tar-1.26-posix-biguid.patch
|
||||
|
||||
# Allow store sparse files of effective size >8GB into pax archives
|
||||
# ~> #516309
|
||||
# ~> http://lists.gnu.org/archive/html/bug-tar/2013-01/msg00001.html
|
||||
# ~> already upstream (2f6c03cba)
|
||||
Patch12: tar-1.26-pax-big-sparse-files.patch
|
||||
|
||||
# run "make check" by default
|
||||
%bcond_without check
|
||||
|
||||
@ -118,6 +124,7 @@ the rmt package.
|
||||
%patch9 -p1 -b .selinux-gnulib-prep
|
||||
%patch10 -p1 -b .xattrs-selinux-acls
|
||||
%patch11 -p1 -b .big_uid_gid
|
||||
%patch12 -p1 -b .pax-sparse-big-files
|
||||
|
||||
autoreconf -v
|
||||
|
||||
@ -180,6 +187,10 @@ fi
|
||||
%{_infodir}/tar.info*
|
||||
|
||||
%changelog
|
||||
* Fri Mar 01 2013 Pavel Raiskup <praiskup@redhat.com> - 2:1.26-19
|
||||
- fix creating sparse pax archives containing files of effective
|
||||
size >8GB (#516309)
|
||||
|
||||
* Wed Feb 20 2013 Pavel Raiskup <praiskup@redhat.com> - 2:1.26-18
|
||||
- fix problems with big uids/gids and pax format (> 2^21) (#913406)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user