Skip to content

Commit 5f3c6c6

Browse files
committed
storage: avoid layer lookup in applyDiffWithOptions()
That caller in create() already had the layer created in memory so another lookup roundtrip is unnecessary here. Signed-off-by: Paul Holzinger <[email protected]>
1 parent bd6977a commit 5f3c6c6

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

storage/layers.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,7 +1569,7 @@ func (r *layerStore) create(id string, parentLayer *Layer, names []string, mount
15691569

15701570
size = -1
15711571
if diff != nil {
1572-
if size, err = r.applyDiffWithOptions(layer.ID, moreOptions, diff); err != nil {
1572+
if size, err = r.applyDiffWithOptions(layer, moreOptions, diff); err != nil {
15731573
cleanupFailureContext = "applying layer diff"
15741574
return nil, -1, err
15751575
}
@@ -2395,20 +2395,19 @@ func updateDigestMap(m *map[digest.Digest][]string, oldvalue, newvalue digest.Di
23952395

23962396
// Requires startWriting.
23972397
func (r *layerStore) ApplyDiff(to string, diff io.Reader) (size int64, err error) {
2398-
return r.applyDiffWithOptions(to, nil, diff)
2398+
layer, ok := r.lookup(to)
2399+
if !ok {
2400+
return -1, ErrLayerUnknown
2401+
}
2402+
return r.applyDiffWithOptions(layer, nil, diff)
23992403
}
24002404

24012405
// Requires startWriting.
2402-
func (r *layerStore) applyDiffWithOptions(to string, layerOptions *LayerOptions, diff io.Reader) (size int64, err error) {
2406+
func (r *layerStore) applyDiffWithOptions(layer *Layer, layerOptions *LayerOptions, diff io.Reader) (size int64, err error) {
24032407
if !r.lockfile.IsReadWrite() {
24042408
return -1, fmt.Errorf("not allowed to modify layer contents at %q: %w", r.layerdir, ErrStoreIsReadOnly)
24052409
}
24062410

2407-
layer, ok := r.lookup(to)
2408-
if !ok {
2409-
return -1, ErrLayerUnknown
2410-
}
2411-
24122411
header := make([]byte, 10240)
24132412
n, err := diff.Read(header)
24142413
if err != nil && err != io.EOF {

0 commit comments

Comments
 (0)