Commit Graph

53 Commits

Author SHA1 Message Date
Michael Crosby
6a1ef90a6e
Merge pull request #1876 from dmcgowan/fs-include-parent-directories
Emit unmodified change events for directories
2017-12-04 22:44:58 -05:00
Derek McGowan
ba10e497b9
Emit unmodified change events for directories
When a file changes, emit events for the seen parent
directories to ensure that those parents are included
in change streams such as archives. The parents are
needed accurately recreate diff representation apart
from a parent (such as overlay and aufs graph drivers
in Docker).

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-12-04 18:37:00 -08:00
Derek McGowan
3bc4e69ba1
Implement btrfs usage
Implements btrfs usage using a double walking diff and
counting the result. Walking gives the most accurate
count and includes inode usage.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-12-04 14:42:21 -08:00
Daniel Nephin
ee04cfa3f9 Add staticcheck linter
Fix issues with sync.Pool being passed an array and not a pointer.
See https://github.com/dominikh/go-tools/blob/master/cmd/staticcheck/docs/checks/SA6002

Add missing tests for content.Copy

Fix T.Fatal being called in a goroutine

Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2017-11-28 13:05:30 -05:00
Stephen Day
2b1c915f82
Merge pull request #1787 from AkihiroSuda/diff-link
fs/diff: support symlink to abspath with second-precision mtime
2017-11-21 10:33:25 -08:00
Daniel Nephin
f74862a0dd Add structcheck, unused, and varcheck linters.
Warn on unused and dead code

Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2017-11-21 11:14:37 -05:00
Akihiro Suda
a3aeb398fe fs/diff: support symlink to abspath with second-precision mtime
Previously, `Changes()` for a symlink to absolute path, with second-precision
mtime of the link itself always resulted in ENOENT.

This is because `compareFileContent()` was called for the link target path, without changing the root path.

Fix moby/buildkit#172

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-11-21 04:38:34 +00:00
Daniel Nephin
a72279e53d Skip some tests on windows where the implementation is missing
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2017-11-15 14:52:00 -05:00
Daniel Nephin
666d946455 Implement diff.compareSysStat on windows
and update diff tests to work with slash paths on windows

Signed-off-by: Daniel Nephin <dnephin@gmail.com>
2017-11-15 14:31:50 -05:00
Derek McGowan
8889d459af
Add directory permission tests
Adds tests for verifying parent directory permissions.
Currently an issue exists in extracting into some Docker graph
drivers. Supporting these graph drivers may require changes to
the diff logic, these tests clarify the existing behavior and
that extraction within containerd works.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-11-06 13:50:04 -08:00
Michael Crosby
b6e0c4f321 Fix go lint errors
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-10-25 15:26:44 -04:00
Derek McGowan
e20b371807
Remove umask, replace with explicit chmod after create
Call chmod on all open files and created directories to
ensure permission is set as expected without changing umask.

Fixes #1608

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-10-11 15:13:18 -07:00
Michael Crosby
f43b7acfd2 Update files based on go lint
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-10-02 10:15:28 -04:00
Phil Estes
8b938b00bc
Fix FreeBSD compilation
Corrects compile on FreeBSD by handling the lack of ENODATA on FreeBSD.
Since continuity project has already handled this, using their const is
simpler than separating a few extra files in containerd/containerd.

Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com>
2017-09-06 14:38:07 -04:00
Derek McGowan
502734116d
Update loopback to return error
Avoid calling testing function in creation closure since the
context may no longer be valid.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-08-22 16:09:38 -07:00
Tobias Klauser
f2bed8ffb9 Use CopyFileRange from golang.org/x/sys/unix
Use the CopyFileRange and Lsetxattr from golang.org/x/sys/unix instead
of their counterparts from github.com/containerd/continuity/sysx. These
are 1:1 replacements (except for the fd parameter types in
CopyFileRange).

This will eventually allow to remove these functions there as well.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2017-08-09 13:43:12 +02:00
Tobias Klauser
4a6a2b9db0 Switch from package syscall to golang.org/x/sys
The syscall package is locked down and the comment in [1] advises to
switch code to use the corresponding package from golang.org/x/sys. Do
so and replace usage of package syscall with package
golang.org/x/sys/{unix,windows} where applicable.

  [1] https://github.com/golang/go/blob/master/src/syscall/syscall.go#L21-L24

This will also allow to get updates and fixes for syscall wrappers
without having to use a new go version.

Errno, Signal and SysProcAttr aren't changed as they haven't been
implemented in x/sys/. Stat_t from syscall is used if standard library
packages (e.g. os) require it. syscall.ENOTSUP, syscall.SIGKILL and
syscall.SIGTERM are used for cross-platform files.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
2017-08-09 13:41:16 +02:00
Edward Pilatowicz
56c1f5c184 Add solaris build support
Signed-off-by: Edward Pilatowicz <edward.pilatowicz@oracle.com>
2017-08-07 12:40:21 -07:00
Michael Crosby
c3872b848f Move RootPath to fs package
This moves the RootPath function out of the archive package and into the
fs package for external use.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-07-26 14:26:27 -04:00
Andrew Pennebaker
1d2a079f08
update to github.com/sirupsen/logrus v1.0.0
Signed-off-by: Andrew Pennebaker <apennebaker@datapipe.com>
2017-07-21 15:39:14 -07:00
Kenfe-Mickael Laventure
aeab935572
Fix vet errors
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2017-07-21 18:19:51 +02:00
Tonis Tiigi
6c11da2880 fs: fix hardlinks detection on usage calc
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2017-06-30 15:33:08 -07:00
Akihiro Suda
0ab2227377 mount: add mount.Lookup for ease of implementing snapshotters
`func Lookup(dir string) (Info, error)` returns the mount
info that corresponds to the dir

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-06-06 09:27:53 +00:00
Derek McGowan
dfce91854e
Update travis to run make build
Ensure all packages can be built, even those not yet imported by binaries.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-05-31 13:35:03 -07:00
Stephen J Day
320dd70935
fs: remove fsutils package
No need to have a util package under a package... er, package.

We should move most of this functionality to continuity.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-15 16:33:58 -07:00
Justin Cormack
699f846813 Further fixes for FreeBSD
This fixes a lot more issues for FreeBSD, including update for continuity vendor.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-05-11 10:45:59 +01:00
Phil Estes
a1173ce712 Merge pull request #815 from AkihiroSuda/dtype
overlay: abort if backing fs lacks support for d_type
2017-05-10 14:24:00 -05:00
Akihiro Suda
e64757b657 fsutils: refactor test
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-10 05:23:28 +00:00
Michael Crosby
eb995311eb Merge pull request #816 from windmilleng/nicks/symlinky
fs: Change CopyDir's utimes call to not follow symlinks
2017-05-08 10:30:05 -07:00
Michael Crosby
e7e60a8a1f Merge pull request #799 from dmcgowan/snapshot-fs-tests
Add test suite for filesystem tests
2017-05-08 10:19:42 -07:00
Nick Santos
e509da9c7d fs: Change CopyDir's utimes call to not follow symlinks
Following symlinks does not look like it was intended behavior here,
and fails if the symlink target has not been copied yet.

Signed-off-by: Nick Santos <nicholas.j.santos@gmail.com>
2017-05-08 13:16:53 -04:00
Akihiro Suda
6e2457f186 import github.com/moby/moby/pkg/fsutils (v17.05.0-ce) as fs/fsutils
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-08 06:46:55 +00:00
Justin Cormack
1d27259777 Partial port to Darwin and FreeBSD
This mainly fixes Linux vs generic Unix differences, with some
differences between Darwin and Freebsd (which are close bit not
identical). Should make fixing for other Unix platforms easier.

Note there are not yet `runc` equivalents for these platforms;
my current use case is image manipulation for the `moby` tool.
However there is interest in OCI runtime ports for both platforms.

Current status is that MacOS can build and run `ctr`, `dist`
and `containerd` and some operations are supported. FreeBSD 11
still needs some more fixes to continuity for extended attributes.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-05-04 18:11:53 +01:00
Stephen J Day
b4c6e5f9d3
vendor: move to new continuity import paths
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-03 18:51:41 -07:00
Derek McGowan
c2c490c66c
Add test suite for filesystem tests
Updates tar tests to use test suite
Add hardlink tests

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-05-03 10:46:46 -07:00
Michael Crosby
317aeea0fd Merge pull request #731 from stevvooe/snapshot-usage
snapshot: add Usage method to Snapshotter
2017-04-28 14:36:34 -07:00
Stephen J Day
66c504d1bb
snapshot: add Usage method to Snapshotter
To allow the querying of usage for snapshots, we define a new method on
the snapshotter to query the resources in use by a single snapshot.
Conversely, it can be said that if the snapshot was deleted, the
reported amount of usage would be recovered.

There are few problems with this model in the implementation of btrfs
that need to be worked out. In btrfs, it is hard to resolve the amount
of data usage with the use of quotas but these may report valuables that
are incompatible with the model.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-04-26 17:13:52 -07:00
Stephen Day
12d65ceb50 Merge pull request #674 from dmcgowan/fs-hardlink-unmodified
Fix hardlinks in tars for unmodified files
2017-04-26 18:50:12 -05:00
xiekeyang
e78e921fc1 remove temporary dir
The temporary directory had better to be removed after test case
finished.

Signed-off-by: xiekeyang <xiekeyang@huawei.com>
2017-04-14 12:05:37 +08:00
Derek McGowan
51b8e468e5
Fix hardlinks with unmodified files
Previously hardlinking to an unmodified file or linking to a file
which was touched by not detected as modified caused a new file
to be created on unpack. This new file and the original source file
were not linked since no link record was created in the tar. This
change addresses this by adding links for all hardlinks to a file
when it is detected as changed. These links will be written after
the source file is written and may occur out of order in regard to
file name.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-04 15:00:19 -07:00
Michael Crosby
4f2b443a27 Rewrite imports for new github org
This rewrites the Go imports after switching to the new github org.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-04-03 14:05:44 -07:00
unclejack
e91d6805af archive,cmd,fs: return err directly
Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com>
2017-03-30 11:32:13 +03:00
Akihiro Suda
750cdc951f snapshotter: add more assertion
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-03-06 08:34:43 +00:00
Aaron.L.Xu
a3cae915c3 fix some typos
Signed-off-by: Aaron.L.Xu <likexu@harmonycloud.cn>
2017-02-21 15:02:36 +08:00
sakeven
0e2822f892 fix copyFile error message
Signed-off-by: sakeven <jc5930@sina.cn>
2017-02-10 11:56:58 +08:00
Derek McGowan
aaf18b5962 Rename CopyDirectory to CopyDir
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 12:08:53 -08:00
Derek McGowan
d96e6e3952 Refactor changes and test functions
Remove change type in favor of explicit change function.
Using change function makes it more difficult to unnecessarily
add to the change interface.

Update test apply functions to use an interface rather
than a function type.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 11:28:06 -08:00
Derek McGowan
65e8c07847 Update diff interface to use callback
The change computation will be done on the callers thread
and use callbacks rather than running a goroutine and
returning a channel.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 11:28:06 -08:00
Derek McGowan
572dbcdbd4 Use copy file range from sysx
Use pooled buffers for copy

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 11:28:06 -08:00
Derek McGowan
245495d54e Use full mode for making devices node
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
2017-02-03 11:28:06 -08:00