func newFile(repo BlobLoader, node *restic.Node, ownerIsRoot bool) (*file, error) { debug.Log("newFile", "create new file for %v with %d blobs", node.Name, len(node.Content)) var bytes uint64 sizes := make([]uint, len(node.Content)) for i, id := range node.Content { size, err := repo.LookupBlobSize(id) if err != nil { return nil, err } sizes[i] = size bytes += uint64(size) } if bytes != node.Size { debug.Log("newFile", "sizes do not match: node.Size %v != size %v, using real size", node.Size, bytes) node.Size = bytes } return &file{ repo: repo, node: node, sizes: sizes, blobs: make([][]byte, len(node.Content)), ownerIsRoot: ownerIsRoot, }, nil }
func updateNodeContent(node *restic.Node, results []saveResult) error { debug.Log("checking size for file %s", node.Path) var bytes uint64 node.Content = make([]restic.ID, len(results)) for i, b := range results { node.Content[i] = b.id bytes += b.bytes debug.Log(" adding blob %s, %d bytes", b.id.Str(), b.bytes) } if bytes != node.Size { return errors.Errorf("errors saving node %q: saved %d bytes, wanted %d bytes", node.Path, bytes, node.Size) } debug.Log("SaveFile(%q): %v blobs\n", node.Path, len(results)) return nil }
func updateNodeContent(node *restic.Node, results []saveResult) error { debug.Log("checking size for file %s", node.Path) var bytes uint64 node.Content = make([]restic.ID, len(results)) for i, b := range results { node.Content[i] = b.id bytes += b.bytes debug.Log(" adding blob %s, %d bytes", b.id.Str(), b.bytes) } if bytes != node.Size { fmt.Fprintf(os.Stderr, "warning for %v: expected %d bytes, saved %d bytes\n", node.Path, node.Size, bytes) } debug.Log("SaveFile(%q): %v blobs\n", node.Path, len(results)) return nil }