diff --git a/container_test.go b/container_test.go index cbabffc364..6f39f9be8e 100644 --- a/container_test.go +++ b/container_test.go @@ -170,11 +170,11 @@ func TestDiff(t *testing.T) { // Commit the container rwTar, err := container1.ExportRw() if err != nil { - t.Error(err) + t.Fatal(err) } img, err := runtime.graph.Create(rwTar, container1, "unit test commited image - diff", "", nil) if err != nil { - t.Error(err) + t.Fatal(err) } // Create a new container from the commited image diff --git a/devmapper/driver.go b/devmapper/driver.go index c4bc5dcff2..e095b33be5 100644 --- a/devmapper/driver.go +++ b/devmapper/driver.go @@ -65,10 +65,6 @@ func (d *Driver) DiffSize(id string) (int64, error) { return -1, fmt.Errorf("Not implemented") } -func (d *Driver) Changes(id string) ([]archive.Change, error) { - return nil, fmt.Errorf("Not implemented") -} - func (d *Driver) mount(id, mp string) error { // Create the target directories if they don't exist if err := os.MkdirAll(mp, 0755); err != nil && !os.IsExist(err) { diff --git a/graphdriver/driver.go b/graphdriver/driver.go index 7149e22236..4bb129dfb2 100644 --- a/graphdriver/driver.go +++ b/graphdriver/driver.go @@ -18,11 +18,14 @@ type Driver interface { Diff(id string) (archive.Archive, error) DiffSize(id string) (bytes int64, err error) - Changes(id string) ([]archive.Change, error) Cleanup() error } +type Changer interface { + Changes(id string) ([]archive.Change, error) +} + var ( // All registred drivers drivers map[string]InitFunc diff --git a/graphdriver/dummy/driver.go b/graphdriver/dummy/driver.go index 986c89ae24..d62f7de27f 100644 --- a/graphdriver/dummy/driver.go +++ b/graphdriver/dummy/driver.go @@ -80,7 +80,3 @@ func (d *Driver) Diff(id string) (archive.Archive, error) { func (d *Driver) DiffSize(id string) (int64, error) { return -1, fmt.Errorf("Not implemented") } - -func (d *Driver) Changes(id string) ([]archive.Change, error) { - return nil, fmt.Errorf("Not implemented") -} diff --git a/runtime.go b/runtime.go index 7bc5084dab..bda59afce5 100644 --- a/runtime.go +++ b/runtime.go @@ -733,6 +733,9 @@ func (runtime *Runtime) Unmount(container *Container) error { } func (runtime *Runtime) Changes(container *Container) ([]archive.Change, error) { + if changer, ok := runtime.driver.(graphdriver.Changer); ok { + return changer.Changes(container.ID) + } cDir, err := runtime.driver.Get(container.ID) if err != nil { return nil, fmt.Errorf("Error getting container rootfs %s from driver %s: %s", container.ID, container.runtime.driver, err)