output error when unmount fail in diff.Apply
Signed-off-by: yason <yan.xuean@zte.com.cn>
This commit is contained in:
parent
2214a07cb4
commit
147d4987cd
@ -94,12 +94,20 @@ func (s *walkingDiff) Apply(ctx context.Context, desc ocispec.Descriptor, mounts
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return emptyDesc, errors.Wrap(err, "failed to create temporary directory")
|
return emptyDesc, errors.Wrap(err, "failed to create temporary directory")
|
||||||
}
|
}
|
||||||
|
// We change RemoveAll to Remove so that we either leak a temp dir
|
||||||
|
// if it fails but not RM snapshot data. refer to #1868 #1785
|
||||||
defer os.Remove(dir)
|
defer os.Remove(dir)
|
||||||
|
|
||||||
if err := mount.All(mounts, dir); err != nil {
|
if err := mount.All(mounts, dir); err != nil {
|
||||||
return emptyDesc, errors.Wrap(err, "failed to mount")
|
return emptyDesc, errors.Wrap(err, "failed to mount")
|
||||||
}
|
}
|
||||||
defer mount.Unmount(dir, 0)
|
defer func() {
|
||||||
|
if uerr := mount.Unmount(dir, 0); uerr != nil {
|
||||||
|
if err == nil {
|
||||||
|
err = uerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
ra, err := s.store.ReaderAt(ctx, desc.Digest)
|
ra, err := s.store.ReaderAt(ctx, desc.Digest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -175,12 +183,24 @@ func (s *walkingDiff) DiffMounts(ctx context.Context, lower, upper []mount.Mount
|
|||||||
if err := mount.All(lower, aDir); err != nil {
|
if err := mount.All(lower, aDir); err != nil {
|
||||||
return emptyDesc, errors.Wrap(err, "failed to mount")
|
return emptyDesc, errors.Wrap(err, "failed to mount")
|
||||||
}
|
}
|
||||||
defer mount.Unmount(aDir, 0)
|
defer func() {
|
||||||
|
if uerr := mount.Unmount(aDir, 0); uerr != nil {
|
||||||
|
if err == nil {
|
||||||
|
err = uerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if err := mount.All(upper, bDir); err != nil {
|
if err := mount.All(upper, bDir); err != nil {
|
||||||
return emptyDesc, errors.Wrap(err, "failed to mount")
|
return emptyDesc, errors.Wrap(err, "failed to mount")
|
||||||
}
|
}
|
||||||
defer mount.Unmount(bDir, 0)
|
defer func() {
|
||||||
|
if uerr := mount.Unmount(bDir, 0); uerr != nil {
|
||||||
|
if err == nil {
|
||||||
|
err = uerr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
var newReference bool
|
var newReference bool
|
||||||
if config.Reference == "" {
|
if config.Reference == "" {
|
||||||
|
Loading…
Reference in New Issue
Block a user