Revert "Copy aufs hardlinks to top layer"
| ... | ... |
@@ -374,20 +374,10 @@ func (a *Driver) DiffPath(id string) (string, func() error, error) {
|
| 374 | 374 |
} |
| 375 | 375 |
|
| 376 | 376 |
func (a *Driver) applyDiff(id string, diff archive.Reader) error {
|
| 377 |
- dir := path.Join(a.rootPath(), "diff", id) |
|
| 378 |
- if err := chrootarchive.UntarUncompressed(diff, dir, &archive.TarOptions{
|
|
| 377 |
+ return chrootarchive.UntarUncompressed(diff, path.Join(a.rootPath(), "diff", id), &archive.TarOptions{
|
|
| 379 | 378 |
UIDMaps: a.uidMaps, |
| 380 | 379 |
GIDMaps: a.gidMaps, |
| 381 |
- }); err != nil {
|
|
| 382 |
- return err |
|
| 383 |
- } |
|
| 384 |
- |
|
| 385 |
- // show invalid whiteouts warning. |
|
| 386 |
- files, err := ioutil.ReadDir(path.Join(dir, archive.WhiteoutLinkDir)) |
|
| 387 |
- if err == nil && len(files) > 0 {
|
|
| 388 |
- logrus.Warnf("Archive contains aufs hardlink references that are not supported.")
|
|
| 389 |
- } |
|
| 390 |
- return nil |
|
| 380 |
+ }) |
|
| 391 | 381 |
} |
| 392 | 382 |
|
| 393 | 383 |
// DiffSize calculates the changes between the specified id |
| ... | ... |
@@ -517,7 +507,7 @@ func (a *Driver) aufsMount(ro []string, rw, target, mountLabel string) (err erro |
| 517 | 517 |
} |
| 518 | 518 |
|
| 519 | 519 |
if firstMount {
|
| 520 |
- opts := "dio,noplink,xino=/dev/shm/aufs.xino" |
|
| 520 |
+ opts := "dio,xino=/dev/shm/aufs.xino" |
|
| 521 | 521 |
if useDirperm() {
|
| 522 | 522 |
opts += ",dirperm1" |
| 523 | 523 |
} |
| ... | ... |
@@ -638,88 +638,6 @@ func TestApplyDiff(t *testing.T) {
|
| 638 | 638 |
} |
| 639 | 639 |
} |
| 640 | 640 |
|
| 641 |
-func TestHardlinks(t *testing.T) {
|
|
| 642 |
- // Copy 2 layers that have linked files to new layers and check if hardlink are preserved |
|
| 643 |
- d := newDriver(t) |
|
| 644 |
- defer os.RemoveAll(tmp) |
|
| 645 |
- defer d.Cleanup() |
|
| 646 |
- |
|
| 647 |
- origFile := "test_file" |
|
| 648 |
- linkedFile := "linked_file" |
|
| 649 |
- |
|
| 650 |
- if err := d.Create("source-1", "", ""); err != nil {
|
|
| 651 |
- t.Fatal(err) |
|
| 652 |
- } |
|
| 653 |
- |
|
| 654 |
- mountPath, err := d.Get("source-1", "")
|
|
| 655 |
- if err != nil {
|
|
| 656 |
- t.Fatal(err) |
|
| 657 |
- } |
|
| 658 |
- |
|
| 659 |
- f, err := os.Create(path.Join(mountPath, origFile)) |
|
| 660 |
- if err != nil {
|
|
| 661 |
- t.Fatal(err) |
|
| 662 |
- } |
|
| 663 |
- f.Close() |
|
| 664 |
- |
|
| 665 |
- layerTar1, err := d.Diff("source-1", "")
|
|
| 666 |
- if err != nil {
|
|
| 667 |
- t.Fatal(err) |
|
| 668 |
- } |
|
| 669 |
- |
|
| 670 |
- if err := d.Create("source-2", "source-1", ""); err != nil {
|
|
| 671 |
- t.Fatal(err) |
|
| 672 |
- } |
|
| 673 |
- |
|
| 674 |
- mountPath, err = d.Get("source-2", "")
|
|
| 675 |
- if err != nil {
|
|
| 676 |
- t.Fatal(err) |
|
| 677 |
- } |
|
| 678 |
- |
|
| 679 |
- if err := os.Link(path.Join(mountPath, origFile), path.Join(mountPath, linkedFile)); err != nil {
|
|
| 680 |
- t.Fatal(err) |
|
| 681 |
- } |
|
| 682 |
- |
|
| 683 |
- layerTar2, err := d.Diff("source-2", "source-1")
|
|
| 684 |
- if err != nil {
|
|
| 685 |
- t.Fatal(err) |
|
| 686 |
- } |
|
| 687 |
- |
|
| 688 |
- if err := d.Create("target-1", "", ""); err != nil {
|
|
| 689 |
- t.Fatal(err) |
|
| 690 |
- } |
|
| 691 |
- |
|
| 692 |
- if _, err := d.ApplyDiff("target-1", "", layerTar1); err != nil {
|
|
| 693 |
- t.Fatal(err) |
|
| 694 |
- } |
|
| 695 |
- |
|
| 696 |
- if err := d.Create("target-2", "target-1", ""); err != nil {
|
|
| 697 |
- t.Fatal(err) |
|
| 698 |
- } |
|
| 699 |
- |
|
| 700 |
- if _, err := d.ApplyDiff("target-2", "target-1", layerTar2); err != nil {
|
|
| 701 |
- t.Fatal(err) |
|
| 702 |
- } |
|
| 703 |
- |
|
| 704 |
- mountPath, err = d.Get("target-2", "")
|
|
| 705 |
- if err != nil {
|
|
| 706 |
- t.Fatal(err) |
|
| 707 |
- } |
|
| 708 |
- |
|
| 709 |
- fi1, err := os.Lstat(path.Join(mountPath, origFile)) |
|
| 710 |
- if err != nil {
|
|
| 711 |
- t.Fatal(err) |
|
| 712 |
- } |
|
| 713 |
- fi2, err := os.Lstat(path.Join(mountPath, linkedFile)) |
|
| 714 |
- if err != nil {
|
|
| 715 |
- t.Fatal(err) |
|
| 716 |
- } |
|
| 717 |
- |
|
| 718 |
- if !os.SameFile(fi1, fi2) {
|
|
| 719 |
- t.Fatal("Target files are not linked")
|
|
| 720 |
- } |
|
| 721 |
-} |
|
| 722 |
- |
|
| 723 | 641 |
func hash(c string) string {
|
| 724 | 642 |
h := sha256.New() |
| 725 | 643 |
fmt.Fprint(h, c) |