Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
iSulad-img
提交
b4255b55
I
iSulad-img
项目概览
openeuler
/
iSulad-img
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
iSulad-img
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b4255b55
编写于
4月 03, 2020
作者:
O
openeuler-ci-bot
提交者:
Gitee
4月 03, 2020
浏览文件
操作
浏览文件
下载
差异文件
!28 Check all links in lowers file but not parent link only
Merge pull request !28 from wangfengtu/repair_lowers
上级
b284e1ba
dafa66e3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
116 addition
and
1 deletion
+116
-1
iSulad-img.spec
iSulad-img.spec
+1
-1
patch/0048-Check-all-links-in-lowers-file-but-not-parent-link-o.patch
...heck-all-links-in-lowers-file-but-not-parent-link-o.patch
+114
-0
patch/series-patch.conf
patch/series-patch.conf
+1
-0
未找到文件。
iSulad-img.spec
浏览文件 @
b4255b55
%global _version 2.0.0
%global _release 20200
330.224937.git01999b6e
%global _release 20200
403.113908.git51299df2
Name: iSulad-img
Version: %{_version}
Release: %{_release}
...
...
patch/0048-Check-all-links-in-lowers-file-but-not-parent-link-o.patch
0 → 100644
浏览文件 @
b4255b55
From 549b185a998bbb1eab7d0c501b4208ca7640acc2 Mon Sep 17 00:00:00 2001
From: WangFengTu <wangfengtu@huawei.com>
Date: Thu, 2 Apr 2020 17:05:43 +0800
Subject: [PATCH] Check all links in lowers file but not parent link only
And delete unchecked layers from top to bottom to avoid
delete failure.
Signed-off-by: WangFengTu <wangfengtu@huawei.com>
---
.../storage/drivers/overlay/overlay.go | 26 +++++------
vendor/github.com/containers/storage/store.go | 43 +++++++++++++++++--
2 files changed, 52 insertions(+), 17 deletions(-)
diff --git a/vendor/github.com/containers/storage/drivers/overlay/overlay.go b/vendor/github.com/containers/storage/drivers/overlay/overlay.go
index a6e3db6..3e9f650 100644
--- a/vendor/github.com/containers/storage/drivers/overlay/overlay.go
+++ b/vendor/github.com/containers/storage/drivers/overlay/overlay.go
@@ -1122,22 +1122,22 @@
func (d *Driver) TryRepairLowers(id, parent string) error {
}
lowers := strings.Split(string(lowersStr), ":")
- if len(lowers) != 0 {
- if _, err := os.Stat(path.Join(d.home, lowers[0])); err == nil {
- return nil
+ for _, l := range lowers {
+ if _, err := os.Stat(path.Join(d.home, l)); err != nil {
+ // Try repair lowers
+ lower, err := d.getLower(parent)
+ if err != nil {
+ return err
+ }
+ if lower != "" {
+ if err := ioutils.AtomicWriteFile(path.Join(d.dir(id), lowerFile), []byte(lower), 0666); err != nil {
+ return err
+ }
+ }
+ break
}
}
- // Try repair lowers
- lower, err := d.getLower(parent)
- if err != nil {
- return err
- }
- if lower != "" {
- if err := ioutils.AtomicWriteFile(path.Join(d.dir(id), lowerFile), []byte(lower), 0666); err != nil {
- return err
- }
- }
return nil
}
diff --git a/vendor/github.com/containers/storage/store.go b/vendor/github.com/containers/storage/store.go
index 236eccd..e1cfc82 100644
--- a/vendor/github.com/containers/storage/store.go
+++ b/vendor/github.com/containers/storage/store.go
@@ -2199,13 +2199,48 @@
func (s *store) DeleteUncheckedLayers() error {
return err
}
+ toBeDeleted := make(map[string]bool)
for _, l := range layers {
- if s.checkedLayers[l.ID] {
+ if _, exist := s.checkedLayers[l.ID]; exist {
continue
}
- logrus.Errorf("Delete unchecked layer %v due to no related image", l.ID)
- if err := s.DeleteLayer(l.ID); err != nil {
- logrus.Errorf("Failed to delete unchecked layer %v: %v", l.ID, err)
+ toBeDeleted[l.ID] = true
+ }
+
+ haveChildren := make(map[string]bool)
+ for _, l := range layers {
+ if _, exist := s.checkedLayers[l.ID]; exist {
+ continue
+ }
+
+ if _, exist := haveChildren[l.ID]; !exist {
+ haveChildren[l.ID] = false
+ }
+ if _, exist := toBeDeleted[l.Parent]; exist {
+ haveChildren[l.Parent] = true
+ }
+ }
+
+ // Delete layers from top to bottom to avoid delete failure
+ for id, have := range haveChildren {
+ if have {
+ continue
+ }
+ for {
+ if _, exist := toBeDeleted[id]; !exist {
+ break
+ }
+ delete(toBeDeleted, id)
+ l, err := s.Layer(id)
+ if err != nil {
+ logrus.Errorf("Failed to get layer %s for deletion", id)
+ break
+ }
+ logrus.Errorf("Delete unchecked layer %v due to no related image", id)
+ if err := s.DeleteLayer(id); err != nil {
+ logrus.Errorf("Failed to delete unchecked layer %v: %v", id, err)
+ }
+ id = l.Parent
}
}
return nil
--
2.19.1
patch/series-patch.conf
浏览文件 @
b4255b55
...
...
@@ -45,3 +45,4 @@
0045
-
When
-
id
-
is
-
empty
-
for
-
overlay2
-
overlay
-
do
-
not
-
remove
-.
patch
0046
-
Sync
-
write
-
link
-
and
-
lower
-
files
-
to
-
avoid
-
broken
-
caus
.
patch
0047
-
Do
-
not
-
use
-
authorization
-
file
-
of
-
other
-
container
-
eng
.
patch
0048
-
Check
-
all
-
links
-
in
-
lowers
-
file
-
but
-
not
-
parent
-
link
-
o
.
patch
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录