• Joe Tsai's avatar
    archive/tar: implement Writer support for sparse files · e0ab505a
    Joe Tsai authored
    This CL is the second step (of two; part1 is CL/56771) for adding
    sparse file support to the Writer.
    
    There are no new identifiers exported in this CL, but this does make
    use of Header.SparseHoles added in part1. If the Typeflag is set to
    TypeGNUSparse or len(SparseHoles) > 0, then the Writer will emit an
    sparse file, where the holes must be written by the user as zeros.
    
    If TypeGNUSparse is set, then the output file must use the GNU format.
    Otherwise, it must use the PAX format (with GNU-defined PAX keys).
    
    A future CL may export Reader.Discard and Writer.FillZeros,
    but those methods are currently unexported, and only used by the
    tests for efficiency reasons.
    Calling Discard or FillZeros on a hole 10GiB in size does take
    time, even if it is essentially a memcopy.
    
    Updates #13548
    
    Change-Id: Id586d9178c227c0577f796f731ae2cbb72355601
    Reviewed-on: https://go-review.googlesource.com/57212Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
    e0ab505a