Browse code

Merge pull request #19547 from tonistiigi/revert-aufs-hardlinks

Revert "Copy aufs hardlinks to top layer"

Arnaud Porterie authored on 2016/01/22 02:56:26
Showing 2 changed files
... ...
@@ -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)