@@ -72,7 +72,13 @@ func (c *Client) newUnpacker(ctx context.Context, rCtx *RemoteContext) (*unpacke
72
72
}, nil
73
73
}
74
74
75
- func (u * unpacker ) unpack (ctx context.Context , h images.Handler , config ocispec.Descriptor , layers []ocispec.Descriptor ) error {
75
+ func (u * unpacker ) unpack (
76
+ ctx context.Context ,
77
+ rCtx * RemoteContext ,
78
+ h images.Handler ,
79
+ config ocispec.Descriptor ,
80
+ layers []ocispec.Descriptor ,
81
+ ) error {
76
82
p , err := content .ReadBlob (ctx , u .c .ContentStore (), config )
77
83
if err != nil {
78
84
return err
@@ -123,17 +129,17 @@ EachLayer:
123
129
labels = make (map [string ]string )
124
130
}
125
131
labels [labelSnapshotRef ] = chainID
126
- labelOpt := snapshots .WithLabels (labels )
127
132
128
133
var (
129
134
key string
130
135
mounts []mount.Mount
136
+ opts = append (rCtx .SnapshotterOpts , snapshots .WithLabels (labels ))
131
137
)
132
138
133
139
for try := 1 ; try <= 3 ; try ++ {
134
140
// Prepare snapshot with from parent, label as root
135
141
key = fmt .Sprintf ("extract-%s %s" , uniquePart (), chainID )
136
- mounts , err = sn .Prepare (ctx , key , parent .String (), labelOpt )
142
+ mounts , err = sn .Prepare (ctx , key , parent .String (), opts ... )
137
143
if err != nil {
138
144
if errdefs .IsAlreadyExists (err ) {
139
145
if _ , err := sn .Stat (ctx , chainID ); err != nil {
@@ -201,7 +207,7 @@ EachLayer:
201
207
return errors .Errorf ("wrong diff id calculated on extraction %q" , diffIDs [i ])
202
208
}
203
209
204
- if err = sn .Commit (ctx , chainID , key , labelOpt ); err != nil {
210
+ if err = sn .Commit (ctx , chainID , key , opts ... ); err != nil {
205
211
abort ()
206
212
if errdefs .IsAlreadyExists (err ) {
207
213
continue
@@ -271,7 +277,11 @@ func (u *unpacker) fetch(ctx context.Context, h images.Handler, layers []ocispec
271
277
return eg .Wait ()
272
278
}
273
279
274
- func (u * unpacker ) handlerWrapper (uctx context.Context , unpacks * int32 ) (func (images.Handler ) images.Handler , * errgroup.Group ) {
280
+ func (u * unpacker ) handlerWrapper (
281
+ uctx context.Context ,
282
+ rCtx * RemoteContext ,
283
+ unpacks * int32 ,
284
+ ) (func (images.Handler ) images.Handler , * errgroup.Group ) {
275
285
eg , uctx := errgroup .WithContext (uctx )
276
286
return func (f images.Handler ) images.Handler {
277
287
var (
@@ -313,7 +323,7 @@ func (u *unpacker) handlerWrapper(uctx context.Context, unpacks *int32) (func(im
313
323
if len (l ) > 0 {
314
324
atomic .AddInt32 (unpacks , 1 )
315
325
eg .Go (func () error {
316
- return u .unpack (uctx , f , desc , l )
326
+ return u .unpack (uctx , rCtx , f , desc , l )
317
327
})
318
328
}
319
329
}
0 commit comments