Skip to content

Commit bc5503f

Browse files
committed
overlay: skip superfluous metadata sets on commit
Signed-off-by: Burke Libbey <[email protected]>
1 parent 4676ff3 commit bc5503f

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

daemon/graphdriver/overlay/copy.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,12 @@ func copyDir(srcDir, dstDir string, flags CopyFlags) error {
7171
return fmt.Errorf("Unable to get raw syscall.Stat_t data for %s", srcPath)
7272
}
7373

74+
isHardlink := false
75+
7476
switch f.Mode() & os.ModeType {
7577
case 0: // Regular file
7678
if flags&CopyHardlink != 0 {
79+
isHardlink = true
7780
if err := os.Link(srcPath, dstPath); err != nil {
7881
return err
7982
}
@@ -114,6 +117,12 @@ func copyDir(srcDir, dstDir string, flags CopyFlags) error {
114117
return fmt.Errorf("Unknown file type for %s\n", srcPath)
115118
}
116119

120+
// Everything below is copying metadata from src to dst. All this metadata
121+
// already shares an inode for hardlinks.
122+
if isHardlink {
123+
return nil
124+
}
125+
117126
if err := os.Lchown(dstPath, int(stat.Uid), int(stat.Gid)); err != nil {
118127
return err
119128
}

0 commit comments

Comments
 (0)