Add cimfs differ and snapshotter
Details about CimFs project are discussed in #8346 Signed-off-by: Amit Barve <ambarve@microsoft.com>
This commit is contained in:
6
vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go
generated
vendored
6
vendor/github.com/Microsoft/hcsshim/ext4/dmverity/dmverity.go
generated
vendored
@@ -185,6 +185,8 @@ func ReadDMVerityInfoReader(r io.Reader) (*VerityInfo, error) {
|
||||
block := make([]byte, blockSize)
|
||||
if s, err := r.Read(block); err != nil || s != blockSize {
|
||||
if err != nil {
|
||||
// TODO (go1.20): use multierror via fmt.Errorf("...: %w; ...: %w", ...)
|
||||
//nolint:errorlint // non-wrapping format verb for fmt.Errorf
|
||||
return nil, fmt.Errorf("%s: %w", ErrSuperBlockReadFailure, err)
|
||||
}
|
||||
return nil, fmt.Errorf("unexpected bytes read expected=%d actual=%d: %w", blockSize, s, ErrSuperBlockReadFailure)
|
||||
@@ -193,6 +195,8 @@ func ReadDMVerityInfoReader(r io.Reader) (*VerityInfo, error) {
|
||||
dmvSB := &dmveritySuperblock{}
|
||||
b := bytes.NewBuffer(block)
|
||||
if err := binary.Read(b, binary.LittleEndian, dmvSB); err != nil {
|
||||
// TODO (go1.20): use multierror via fmt.Errorf("...: %w; ...: %w", ...)
|
||||
//nolint:errorlint // non-wrapping format verb for fmt.Errorf
|
||||
return nil, fmt.Errorf("%s: %w", ErrSuperBlockParseFailure, err)
|
||||
}
|
||||
|
||||
@@ -202,6 +206,8 @@ func ReadDMVerityInfoReader(r io.Reader) (*VerityInfo, error) {
|
||||
|
||||
if s, err := r.Read(block); err != nil || s != blockSize {
|
||||
if err != nil {
|
||||
// TODO (go1.20): use multierror via fmt.Errorf("...: %w; ...: %w", ...)
|
||||
//nolint:errorlint // non-wrapping format verb for fmt.Errorf
|
||||
return nil, fmt.Errorf("%s: %w", ErrRootHashReadFailure, err)
|
||||
}
|
||||
return nil, fmt.Errorf("unexpected bytes read expected=%d, actual=%d: %w", blockSize, s, ErrRootHashReadFailure)
|
||||
|
||||
2
vendor/github.com/Microsoft/hcsshim/ext4/internal/compactext4/compact.go
generated
vendored
2
vendor/github.com/Microsoft/hcsshim/ext4/internal/compactext4/compact.go
generated
vendored
@@ -604,7 +604,7 @@ func (w *Writer) Create(name string, f *File) error {
|
||||
}
|
||||
child, err := w.makeInode(f, reuse)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: %s", name, err)
|
||||
return fmt.Errorf("%s: %w", name, err)
|
||||
}
|
||||
if existing != child {
|
||||
if existing != nil {
|
||||
|
||||
10
vendor/github.com/Microsoft/hcsshim/ext4/tar2ext4/tar2ext4.go
generated
vendored
10
vendor/github.com/Microsoft/hcsshim/ext4/tar2ext4/tar2ext4.go
generated
vendored
@@ -85,7 +85,7 @@ func ConvertTarToExt4(r io.Reader, w io.ReadWriteSeeker, options ...Option) erro
|
||||
fs := compactext4.NewWriter(w, p.ext4opts...)
|
||||
for {
|
||||
hdr, err := t.Next()
|
||||
if err == io.EOF {
|
||||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
@@ -301,7 +301,7 @@ func Ext4FileSystemSize(r io.ReadSeeker) (int64, int, error) {
|
||||
func ConvertAndComputeRootDigest(r io.Reader) (string, error) {
|
||||
out, err := os.CreateTemp("", "")
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to create temporary file: %s", err)
|
||||
return "", fmt.Errorf("failed to create temporary file: %w", err)
|
||||
}
|
||||
defer func() {
|
||||
_ = os.Remove(out.Name())
|
||||
@@ -313,16 +313,16 @@ func ConvertAndComputeRootDigest(r io.Reader) (string, error) {
|
||||
MaximumDiskSize(dmverity.RecommendedVHDSizeGB),
|
||||
}
|
||||
if err := ConvertTarToExt4(r, out, options...); err != nil {
|
||||
return "", fmt.Errorf("failed to convert tar to ext4: %s", err)
|
||||
return "", fmt.Errorf("failed to convert tar to ext4: %w", err)
|
||||
}
|
||||
|
||||
if _, err := out.Seek(0, io.SeekStart); err != nil {
|
||||
return "", fmt.Errorf("failed to seek start on temp file when creating merkle tree: %s", err)
|
||||
return "", fmt.Errorf("failed to seek start on temp file when creating merkle tree: %w", err)
|
||||
}
|
||||
|
||||
tree, err := dmverity.MerkleTree(bufio.NewReaderSize(out, dmverity.MerkleTreeBufioSize))
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to create merkle tree: %s", err)
|
||||
return "", fmt.Errorf("failed to create merkle tree: %w", err)
|
||||
}
|
||||
|
||||
hash := dmverity.RootHash(tree)
|
||||
|
||||
Reference in New Issue
Block a user