diff --git a/.travis.yml b/.travis.yml index a774971..5048eaa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,6 +44,6 @@ script: - (cd /unionmount-testsuite; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 unshare -m ./run --ov --fuse=fuse-overlayfs --xdev) || travis_terminate 1; - sudo tests/fedora-installs.sh || travis_terminate 1; - sudo tests/unlink.sh || travis_terminate 1; - - (cd $GOPATH/src/github.com/containers/storage/tests; sudo STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1; - - (cd $GOPATH/src/github.com/containers/storage/tests; sudo FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1; + - (cd $GOPATH/src/github.com/containers/storage/tests; sudo JOBS=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1; + - (cd $GOPATH/src/github.com/containers/storage/tests; sudo JOBS=1 FUSE_OVERLAYFS_DISABLE_OVL_WHITEOUT=1 STORAGE_OPTION=overlay.mount_program=/sbin/fuse-overlayfs STORAGE_DRIVER=overlay unshare -m ./test_runner.bash) || travis_terminate 1; - docker run --rm -v $(pwd):/fuse-overlayfs alpine-build sh -c 'cd /fuse-overlayfs; ./autogen.sh && ./configure && make clean && make' diff --git a/main.c b/main.c index 0f1ff13..b0cfdd6 100644 --- a/main.c +++ b/main.c @@ -1097,19 +1097,13 @@ make_whiteout_node (const char *path, const char *name) new_name = strdup (name); if (new_name == NULL) - { - free (ret); - return NULL; - } + return NULL; + node_set_name (ret, new_name); ret->path = strdup (path); if (ret->path == NULL) - { - free (new_name); - free (ret); - return NULL; - } + return NULL; ret->whiteout = 1; ret->ino = &dummy_ino; @@ -1225,7 +1219,6 @@ make_ovl_node (struct ovl_data *lo, const char *path, struct ovl_layer *layer, c for (it = layer; it; it = it->next) { ssize_t s; - bool stat_only = false; cleanup_free char *val = NULL; cleanup_free char *origin = NULL; cleanup_close int fd = -1; @@ -1275,12 +1268,6 @@ make_ovl_node (struct ovl_data *lo, const char *path, struct ovl_layer *layer, c ret->last_layer = it; } - if (stat_only) - { - has_origin = false; - goto no_fd; - } - s = safe_read_xattr (&val, fd, PRIVILEGED_ORIGIN_XATTR, PATH_MAX); if (s > 0) { @@ -1766,7 +1753,7 @@ do_lookup_file (struct ovl_data *lo, fuse_ino_t parent, const char *name) char whpath[PATH_MAX]; const char *wh_name; - if (pnode && pnode->last_layer == it) + if (pnode->last_layer == it) stop_lookup = true; strconcat3 (path, PATH_MAX, pnode->path, "/", name); @@ -2570,12 +2557,14 @@ copy_fd_to_fd (int sfd, int dfd, char *buf, size_t buf_size) break; written = 0; - { - ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); - if (ret < 0) - return ret; - nread -= ret; - } + do + { + ret = TEMP_FAILURE_RETRY (write (dfd, buf + written, nread)); + if (ret < 0) + return ret; + nread -= ret; + written += ret; + } while (nread); } return 0; @@ -4707,7 +4696,7 @@ direct_ioctl (struct ovl_layer *l, int fd, int cmd, unsigned long *r) } static void -ovl_ioctl (fuse_req_t req, fuse_ino_t ino, unsigned int cmd, void *arg, +ovl_ioctl (fuse_req_t req, fuse_ino_t ino, int cmd, void *arg, struct fuse_file_info *fi, unsigned int flags, const void *in_buf, size_t in_bufsz, size_t out_bufsz) { diff --git a/tests/unlink.sh b/tests/unlink.sh index a963c07..77d4242 100755 --- a/tests/unlink.sh +++ b/tests/unlink.sh @@ -1,5 +1,7 @@ #!/bin/sh +rm -rf lower upper workdir merged + mkdir lower upper workdir merged touch lower/a