func diffLayer(store storage.Store, layerID string) (rc io.ReadCloser, n int64, err error) { layer, err := store.GetLayer(layerID) if err != nil { return nil, -1, err } layerMeta := storageLayerMetadata{ CompressedSize: -1, } if layer.Metadata != "" { if err := json.Unmarshal([]byte(layer.Metadata), &layerMeta); err != nil { return nil, -1, errors.Wrapf(err, "error decoding metadata for layer %q", layerID) } } if layerMeta.CompressedSize <= 0 { n = -1 } else { n = layerMeta.CompressedSize } diff, err := store.Diff("", layer.ID) if err != nil { return nil, -1, err } return diff, n, nil }