768 Commits

Author SHA1 Message Date
Daniel J Walsh
fc0eae542e
Merge pull request #291 from giuseppe/fix-dir-reload
main: move directory load at readdir time
2021-04-17 06:07:00 -04:00
Giuseppe Scrivano
0db6ecbbd9
main: move directory load at readdir time
move the logic for loading the directory content at readdir time when
the offset is set to 0, so that any new file to the directory is
propagated.

Closes: https://github.com/containers/fuse-overlayfs/issues/287

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-04-16 21:53:37 +02:00
Giuseppe Scrivano
d4188a4f59
main, rename: fix leak on error
fix a fd leak on the error exit path.

Closes: https://github.com/containers/fuse-overlayfs/issues/289

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-04-16 20:36:35 +02:00
Giuseppe Scrivano
af5cb1c04c
Merge pull request #288 from cptpcrd/utimensat-fix
Fix flaws in utimensat() handling
2021-04-16 20:35:57 +02:00
cptpcrd
defd480c0e main: improve UTIME_NOW special-casing
FUSE never passes FUSE_SET_ATTR_ATIME_NOW without also passing
FUSE_SET_ATTR_ATIME. Since FUSE_SET_ATTR_ATIME_NOW was only checked if
FUSE_SET_ATTR_ATIME was not set, it would never be triggered.

Note that this is an *improvement*, not a *fix*, because FUSE always
passes the current time in st_atim whenever it sets
FUSE_SET_ATTR_ATIME_NOW. As a result, the previous code works properly,
but it does so differently from the way it was intended to.

(All of the above descriptions of st_atim handling also applies to
st_mtim.)
2021-04-13 21:33:00 -04:00
cptpcrd
d23dbe914d main: tv_sec -> tv_nsec
As specified in utimensat(2), *tv_nsec*, not *tv_sec*, should be set to
UTIME_NOW or UTIME_OMIT.

The way this bug manifests is that if utimensat() is called with
one of the timestamps set to UTIME_OMIT, fuse-overlayfs will
accidentally reset the timestamp to 1073741822, which is 2004-01-10
13:37:02 UTC.
2021-04-13 21:32:57 -04:00
Giuseppe Scrivano
6457fd46c0
Merge pull request #285 from giuseppe/tag-1.5
NEWS: tag 1.5
2021-03-24 18:07:20 +01:00
Giuseppe Scrivano
e90bcb77f3
NEWS: tag 1.5
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
v1.5.0
2021-03-23 12:11:26 +01:00
Daniel J Walsh
30775315a6
Merge pull request #286 from giuseppe/fix-copyup-long-xattr
main: fix reading xattrs longer than 256 bytes
2021-03-23 06:46:21 -04:00
Giuseppe Scrivano
11ad142525
main: fix reading xattrs longer than 256 bytes
fix reading extended attributes longer than 256 bytes.

Closes: https://github.com/containers/fuse-overlayfs/issues/284

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-21 17:50:06 +01:00
Giuseppe Scrivano
f6b0d2eaea
Merge pull request #282 from dhedberg/master
main: Add option static_nlink to set st_nlink to 1 for all directories
2021-03-17 21:08:50 +01:00
David Hedberg
5ec356b29e main: Add option static_nlink to set st_nlink to 1 for all directories
Skips calculation of st_nlink for directories, which can be
expensive on higher latency file systems such as NFS.

Signed-off-by: David Hedberg <david.hedberg@gmail.com>
2021-03-16 18:51:42 +01:00
Daniel J Walsh
1f1377d880
Merge pull request #280 from giuseppe/rm-whiteout-symlink
main: mark directory not loaded on rename
2021-03-05 14:22:40 -05:00
Giuseppe Scrivano
d612d48326
main: mark directory not loaded on rename
if a whiteout was created as part of a rename operation, mark the
directory content as not loaded so to avoid some optimizations when a
whiteout file must be deleted.

Closes: https://github.com/containers/fuse-overlayfs/issues/279

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-05 17:51:18 +01:00
Giuseppe Scrivano
062ec18711
main: honor FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT also for renames
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-05 14:56:55 +01:00
Giuseppe Scrivano
0d77a9fdd0
main: simplify logic for FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-05 14:56:35 +01:00
Daniel J Walsh
d085fa9ade
Merge pull request #278 from giuseppe/fix-static-analysis
src: fix some defects found by static analysis
2021-03-04 15:39:49 -05:00
Giuseppe Scrivano
5530c154d8
tests: fix test
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 12:00:12 +01:00
Giuseppe Scrivano
95a0a8999b
tests: install ffjson
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:45:22 +01:00
Giuseppe Scrivano
44561349cd
main: use strncpy instead of strcpy
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:04:48 +01:00
Giuseppe Scrivano
c1fd9a7e0b
main: ignore write error
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:03:14 +01:00
Giuseppe Scrivano
360a0c6bfd
main: drop unused variable
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:02:37 +01:00
Giuseppe Scrivano
446e99e4c6
utils: fix double definition for _GNU_SOURCE
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:02:03 +01:00
Giuseppe Scrivano
5df063677b
main: check for asprintf return code
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-03-04 11:00:46 +01:00
Daniel J Walsh
ee8ce2eb5c
Merge pull request #274 from giuseppe/NO_REPLACE-with-whiteouts
fuse-overlayfs: fix renameat2(RENAME_NOREPLACE)
2021-02-01 17:09:23 -05:00
Giuseppe Scrivano
450b0d790f
fuse-overlayfs: fix renameat2(RENAME_NOREPLACE)
when device whiteouts are created (supported for unprivileged users in
newer Linux kernels) make sure the RENAME_NOREPLACE flag is dropped
when renaming the file on top of an existing whiteout.

Closes: https://github.com/containers/fuse-overlayfs/issues/273

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-02-01 23:00:50 +01:00
Daniel J Walsh
b104426786
Merge pull request #272 from giuseppe/check-whiteout-already-exists
main: check if whiteout device already exists
2021-01-25 13:48:21 -05:00
Giuseppe Scrivano
6f2af48a03
main: check if whiteout device already exists
on newer kernels unprivileged users can create whiteout devices.  If
the whiteout device creation failed with EEXIST, check whether the
existing file is already a whiteout.

Closes: https://github.com/containers/fuse-overlayfs/issues/271

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-01-25 19:00:15 +01:00
Daniel J Walsh
865b3b9dfb
Merge pull request #270 from giuseppe/tag-1.4
NEWS: tag 1.4.0
2021-01-22 08:37:43 -05:00
Giuseppe Scrivano
27bf038d0e
NEWS: tag 1.4.0
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
v1.4.0
2021-01-20 09:29:06 +01:00
Giuseppe Scrivano
3ae5b85c5b
main: fix compiler warning
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2021-01-20 09:29:05 +01:00
Daniel J Walsh
bfe6d5e789
Merge pull request #268 from giuseppe/squash-to-id
main: add squash_to_uid and squash_to_gid
2021-01-05 14:05:08 -05:00
Giuseppe Scrivano
0b551b90bd
man: document squash functionalities
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-22 15:58:11 +01:00
Giuseppe Scrivano
e5d35c9a01
main: add squash_to_uid and squash_to_gid
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-22 15:57:56 +01:00
Daniel J Walsh
bccc81eb8e
Merge pull request #267 from giuseppe/github-actions-ci
tests: move to github actions instead of travis
2020-12-21 13:48:03 -05:00
Giuseppe Scrivano
fa1dc2cf53
test: use github actions for CI
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-21 18:39:30 +01:00
Giuseppe Scrivano
43a1faf889
.travis.yml: remove file
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-21 17:44:58 +01:00
Giuseppe Scrivano
abf77369b3
tests: upgrade to centos:8
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-21 17:44:49 +01:00
Giuseppe Scrivano
53f598afea
tests: drop -ti
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-12-21 17:04:29 +01:00
Daniel J Walsh
3a1301ec2d
Merge pull request #264 from giuseppe/tag-1.3
NEWS: tag 1.3
2020-11-25 09:26:20 -05:00
Giuseppe Scrivano
18f574f192
NEWS: tag 1.3
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
v1.3.0
2020-11-25 14:42:50 +01:00
Daniel J Walsh
a9d8634e5f
Merge pull request #260 from giuseppe/invalidate-cache-readdir
main: invalidate directory cache on create/rename
2020-11-11 16:34:50 -05:00
Daniel J Walsh
84c224c6d1
Merge pull request #261 from giuseppe/fix-override
utils: enable override only for directories and files
2020-11-11 16:33:46 -05:00
Giuseppe Scrivano
33a2fa47c9
main: invalidate directory cache on create/rename
if we are adding a new file to a directory, the parent directory must
be invalidated if it is in the middle of a opendir/releasedir
otherwise the added files won't be cached.

Closes: https://github.com/containers/fuse-overlayfs/issues/259

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-11 15:34:01 +01:00
Giuseppe Scrivano
7868e49da8
utils: enable override only for directories and files
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-11 11:18:41 +01:00
Daniel J Walsh
fc9de46ebf
Merge pull request #258 from giuseppe/block-set-containers-xattr
main: block setting the user.containers. xattr
2020-11-07 10:20:37 -05:00
Giuseppe Scrivano
a513d3de66
main: block setting the user.containers. xattr
it is reserved for internal usage with containers/storage.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-07 12:08:18 +01:00
Daniel J Walsh
15a04643b8
Merge pull request #257 from giuseppe/stat-override-containers
main: honor user.containers.override_stat
2020-11-06 11:35:01 -05:00
Giuseppe Scrivano
3cb30d4c11
main: honor user.containers.override_stat
also honor user.containers.override_stat to override containers stat
override as it is set by containers/storage.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-06 13:19:51 +01:00
Giuseppe Scrivano
3dbb7d9bd5
main: move stat override mode to enum
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2020-11-06 13:17:14 +01:00