Jump to content

remedy

Members
  • Posts

    22
  • Joined

  • Last visited

Posts posted by remedy

  1. So I actually had cache=Yes previously which is what I want here as well. I think I do have that configured properly here, misunderstanding on my part. Creating a new file on the /user/Media/Data did create it on the cache. 
     

    any thoughts on the parity speed change? Writes to the array seem to max out around 50mb/s per the “Main” dashboard read/write page. 

  2. 7 minutes ago, JorgeB said:

    The options are the same, you currently have Media set to the equivalent of cache=Yes, if you want cache=Prefer you just need to change the mover action from array to cache.

    So if I’m understanding correctly as it previously was with cache=Prefer, new files would write to the cache and then when mover ran it would move files from cache -> array. 
     

    The equivalent of that is what I’m going for, I just want the initial writes to go to the cache and then when mover runs to move them to the array. 

  3. After upgrading to Unraid 6.12.6 recently, I've noticed that new files are mostly being written directly to the array instead of my Cache drive. I checked in progress downloads and I see the files being downloaded on disk10 (which has the most free space) instead of going directly to the Cache. Did something change in this version? I did previously have the share set to "Prefer" cache, and it worked great. But that option is gone now so I have the replacement options of Primary storage to set Cache, and Secondary storage set to Array.

     

    I've also noticed hardlinks which previously worked don't work. Does anyone know what might be wrong here? Diagnostics attached.

     

    Separately, I've noticed that the max speed of the Parity drives during Parity operations is now about 50mb/s with 2 parity drives. I previously had 1 parity drive and the speed was closer to 100mb/s. Is that an expected drop as a result of having 2 parity drives?

    unraid-diagnostics-20240112-2308.zip

  4. 16 minutes ago, DZMM said:

    Something is in the folder that is stopping mergerfs creating a mount

     

    Whatever docker you are using is creating a file(s) in the mount location - don't start dockers that add files to the mount outside the script!

    wow, that was it. i was pulling my hair out.

     

    so if starting the dockers outside the script breaks it, do i also have to stop the mount before updating the dockers?

  5. 9 hours ago, DZMM said:

    Why did you delete the logs from your post? It's hard to help you without logs.  Luckily, the logs are in the email alert I got.  If you look at the logs it says, error mergerfs mountpoint not empty.  Look at the mergerfs file location and delete or move whatever files are there and then run the script again.

    i thought it said that because i left a manually created mountcheck file in gmedia. but i deleted everything and ran it again, it ran fine, then again when i launched the docker the files disappear and it shows just the empty directories the script creates.

     

     Script location: /tmp/user.scripts/tmpScripts/rclone_mount_plugin/script
    Note that closing this window will abort the execution of this script
    26.07.2020 12:26:36 INFO: Creating local folders.
    26.07.2020 12:26:36 INFO: *** Starting mount of remote gdrive_vfs
    26.07.2020 12:26:36 INFO: Checking if this script is already running.
    26.07.2020 12:26:36 INFO: Script not running - proceeding.
    26.07.2020 12:26:36 INFO: *** Checking if online
    26.07.2020 12:26:37 PASSED: *** Internet online
    26.07.2020 12:26:37 INFO: Mount not running. Will now mount gdrive_vfs remote.
    26.07.2020 12:26:37 INFO: Recreating mountcheck file for gdrive_vfs remote.
    2020/07/26 12:26:37 DEBUG : rclone: Version "v1.52.2-250-g4f9a80e2-beta" starting with parameters ["rcloneorig" "--config" "/boot/config/plugins/rclone-beta/.rclone.conf" "copy" "mountcheck" "gdrive_vfs:" "-vv" "--no-traverse"]
    2020/07/26 12:26:37 DEBUG : Using config file from "/boot/config/plugins/rclone-beta/.rclone.conf"
    2020/07/26 12:26:37 DEBUG : fs cache: adding new entry for parent of "mountcheck", "/"
    2020/07/26 12:26:38 DEBUG : mountcheck: Need to transfer - File not found at Destination
    2020/07/26 12:26:39 INFO : mountcheck: Copied (new)
    2020/07/26 12:26:39 INFO :
    Transferred: 32 / 32 Bytes, 100%, 26 Bytes/s, ETA 0s
    Transferred: 1 / 1, 100%
    Elapsed time: 1.1s
    
    2020/07/26 12:26:39 DEBUG : 10 go routines active
    26.07.2020 12:26:39 INFO: *** Creating mount for remote gdrive_vfs
    26.07.2020 12:26:39 INFO: sleeping for 5 seconds
    26.07.2020 12:26:44 INFO: continuing...
    26.07.2020 12:26:44 INFO: Successful mount of gdrive_vfs mount.
    26.07.2020 12:26:44 INFO: Mergerfs not installed - installing now.
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
    v3.10.5-60-gf7c8b9a88d [http://dl-cdn.alpinelinux.org/alpine/v3.10/main]
    v3.10.5-58-g477aae6b2f [http://dl-cdn.alpinelinux.org/alpine/v3.10/community]
    OK: 10348 distinct packages available
    (1/6) Installing ca-certificates (20191127-r2)
    (2/6) Installing nghttp2-libs (1.39.2-r1)
    (3/6) Installing libcurl (7.66.0-r0)
    (4/6) Installing expat (2.2.8-r0)
    (5/6) Installing pcre2 (10.33-r0)
    (6/6) Installing git (2.22.4-r0)
    Executing busybox-1.30.1-r2.trigger
    Executing ca-certificates-20191127-r2.trigger
    OK: 21 MiB in 20 packages
    Cloning into 'mergerfs'...
    2.29.0
    Note: checking out '2.29.0'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
    git checkout -b
    
    HEAD is now at 10e8bd9 Merge pull request #716 from trapexit/mount
    (1/49) Installing fakeroot (1.23-r0)
    (2/49) Installing sudo (1.8.27-r2)
    (3/49) Installing libcap (2.27-r0)
    (4/49) Installing pax-utils (1.2.3-r0)
    (5/49) Installing openssl (1.1.1g-r0)
    (6/49) Installing libattr (2.4.48-r0)
    (7/49) Installing attr (2.4.48-r0)
    (8/49) Installing tar (1.32-r0)
    (9/49) Installing pkgconf (1.6.1-r1)
    (10/49) Installing patch (2.7.6-r6)
    (11/49) Installing libgcc (8.3.0-r0)
    (12/49) Installing libstdc++ (8.3.0-r0)
    (13/49) Installing lzip (1.21-r0)
    (14/49) Installing curl (7.66.0-r0)
    (15/49) Installing abuild (3.4.0-r0)
    Executing abuild-3.4.0-r0.pre-install
    (16/49) Installing m4 (1.4.18-r1)
    (17/49) Installing libbz2 (1.0.6-r7)
    (18/49) Installing perl (5.28.3-r0)
    (19/49) Installing autoconf (2.69-r2)
    (20/49) Installing automake (1.16.1-r0)
    (21/49) Installing binutils (2.32-r0)
    (22/49) Installing gmp (6.1.2-r1)
    (23/49) Installing isl (0.18-r0)
    (24/49) Installing libgomp (8.3.0-r0)
    (25/49) Installing libatomic (8.3.0-r0)
    (26/49) Installing mpfr3 (3.1.5-r1)
    (27/49) Installing mpc1 (1.1.0-r0)
    (28/49) Installing gcc (8.3.0-r0)
    (29/49) Installing musl-dev (1.1.22-r3)
    (30/49) Installing libc-dev (0.7.1-r0)
    (31/49) Installing g++ (8.3.0-r0)
    (32/49) Installing gettext-asprintf (0.19.8.1-r4)
    (33/49) Installing libintl (0.19.8.1-r4)
    (34/49) Installing libunistring (0.9.10-r0)
    (35/49) Installing gettext-libs (0.19.8.1-r4)
    (36/49) Installing ncurses-terminfo-base (6.1_p20190518-r2)
    (37/49) Installing ncurses-libs (6.1_p20190518-r2)
    (38/49) Installing libxml2 (2.9.9-r3)
    (39/49) Installing gettext (0.19.8.1-r4)
    (40/49) Installing gettext-dev (0.19.8.1-r4)
    (41/49) Installing perl-error (0.17027-r0)
    (42/49) Installing perl-git (2.22.4-r0)
    (43/49) Installing git-perl (2.22.4-r0)
    (44/49) Installing readline (8.0.0-r0)
    (45/49) Installing bash (5.0.0-r0)
    Executing bash-5.0.0-r0.post-install
    (46/49) Installing libltdl (2.4.6-r6)
    (47/49) Installing libtool (2.4.6-r6)
    (48/49) Installing linux-headers (4.19.36-r0)
    (49/49) Installing make (4.2.1-r2)
    Executing busybox-1.30.1-r2.trigger
    OK: 237 MiB in 69 packages
    make -C libfuse
    make[1]: Entering directory '/tmp/mergerfs/libfuse'
    mkdir -p build
    touch build/stamp
    ecfd/build | tee build/config.h
    #ifndef CONFIG_H_INCLUDED
    #define CONFIG_H_INCLUDED
    
    #define HAVE_FORK
    #define HAVE_SPLICE
    #define HAVE_STRUCT_STAT_ST_ATIM
    #define HAVE_UTIMENSAT
    #define HAVE_VMSPLICE
    
    #endif
    make build/buffer.o build/cuse_lowlevel.o build/fuse.o build/fuse_kern_chan.o build/fuse_loop.o build/fuse_loop_mt.o build/fuse_lowlevel.o build/fuse_mt.o build/fuse_opt.o build/fuse_session.o build/fuse_signals.o build/helper.o build/mount.o
    make[2]: Entering directory '/tmp/mergerfs/libfuse'
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/buffer.c -o build/buffer.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/cuse_lowlevel.c -o build/cuse_lowlevel.o
    lib/cuse_lowlevel.c: In function 'cuse_lowlevel_new':
    lib/cuse_lowlevel.c:170:12: warning: assignment to 'void (*)(struct fuse_req *, fuse_ino_t, int, void *, struct fuse_file_info *, unsigned int, const void *, uint32_t, uint32_t)' {aka 'void (*)(struct fuse_req *, long unsigned int, int, void *, struct fuse_file_info *, unsigned int, const void *, unsigned int, unsigned int)'} from incompatible pointer type 'void (*)(struct fuse_req *, fuse_ino_t, int, void *, struct fuse_file_info *, unsigned int, const void *, size_t, size_t)' {aka 'void (*)(struct fuse_req *, long unsigned int, int, void *, struct fuse_file_info *, unsigned int, const void *, long unsigned int, long unsigned int)'} [-Wincompatible-pointer-types]
    lop.ioctl = clop->ioctl ? cuse_fll_ioctl : NULL;
    ^
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse.c -o build/fuse.o
    lib/fuse.c: In function 'fuse_compat_open':
    lib/fuse.c:1402:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    err = ((struct fuse_operations_compat22 *) &fs->op)->open(path,
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c:1407:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    err = ((struct fuse_operations_compat2 *) &fs->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c: In function 'fuse_compat_release':
    lib/fuse.c:1418:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    return ((struct fuse_operations_compat2 *) &fs->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c: In function 'fuse_compat_opendir':
    lib/fuse.c:1431:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    err = ((struct fuse_operations_compat22 *) &fs->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c: In function 'fuse_compat_statfs':
    lib/fuse.c:1471:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    err = ((struct fuse_operations_compat22 *) &fs->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c:1478:10: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    err = ((struct fuse_operations_compat1 *) &fs->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c: In function 'add_name':
    lib/fuse.c:831:2: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    strncpy(s, name, len);
    ^~~~~~~~~~~~~~~~~~~~~
    lib/fuse.c:807:15: note: length computed here
    size_t len = strlen(name);
    ^~~~~~~~~~~~
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_kern_chan.c -o build/fuse_kern_chan.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_loop.c -o build/fuse_loop.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_loop_mt.c -o build/fuse_loop_mt.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_lowlevel.c -o build/fuse_lowlevel.o
    lib/fuse_lowlevel.c: In function 'fuse_add_dirent':
    lib/fuse_lowlevel.c:271:2: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
    strncpy(dirent->name, name, namelen);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    lib/fuse_lowlevel.c:261:21: note: length computed here
    unsigned namelen = strlen(name);
    ^~~~~~~~~~~~
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_mt.c -o build/fuse_mt.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_opt.c -o build/fuse_opt.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_session.c -o build/fuse_session.o
    lib/fuse_session.c: In function 'fuse_chan_recv':
    lib/fuse_session.c:211:11: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
    return ((struct fuse_chan_ops_compat24 *) &ch->op)
    ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/fuse_signals.c -o build/fuse_signals.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/helper.c -o build/helper.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -c lib/mount.c -o build/mount.o
    In file included from lib/mount_generic.c:23,
    from lib/mount.c:22:
    /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include to [-Wcpp]
    #warning redirecting incorrect #include to
    ^~~~~~~
    make[2]: Leaving directory '/tmp/mergerfs/libfuse'
    ar rcs build/libfuse.a build/buffer.o build/cuse_lowlevel.o build/fuse.o build/fuse_kern_chan.o build/fuse_loop.o build/fuse_loop_mt.o build/fuse_lowlevel.o build/fuse_mt.o build/fuse_opt.o build/fuse_session.o build/fuse_signals.o build/helper.o build/mount.o
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -o build/mount.mergerfs util/mount.mergerfs.c build/libfuse.a -lrt -pthread
    cc -O2 -Wall -pipe -MMD -Iinclude -Ibuild -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DPACKAGE_VERSION=\"2.9.7-mergerfs_2.29.0\" -DFUSERMOUNT_DIR=\"/usr/local/bin\" -Ilib -o build/mergerfs-fusermount util/fusermount.c lib/mount_util.c
    make[1]: Leaving directory '/tmp/mergerfs/libfuse'
    tools/update-version
    grep: src/version.hpp: No such file or directory
    mkdir -p build
    touch build/stamp
    make[1]: Entering directory '/tmp/mergerfs'
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_listxattr.cpp -o build/fuse_listxattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_lus.cpp -o build/policy_lus.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_init.cpp -o build/fuse_init.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_read.cpp -o build/fuse_read.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_destroy.cpp -o build/fuse_destroy.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_copydata_readwrite.cpp -o build/fs_copydata_readwrite.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_readlink.cpp -o build/fuse_readlink.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_lfs.cpp -o build/policy_lfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/gidcache.cpp -o build/gidcache.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_getattr.cpp -o build/fuse_getattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_getxattr.cpp -o build/fuse_getxattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_truncate.cpp -o build/fuse_truncate.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/category.cpp -o build/category.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_rand.cpp -o build/policy_rand.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fchmod.cpp -o build/fuse_fchmod.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_erofs.cpp -o build/policy_erofs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_copy_file_range.cpp -o build/fuse_copy_file_range.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_chmod.cpp -o build/fuse_chmod.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_mktemp.cpp -o build/fs_mktemp.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_mknod.cpp -o build/fuse_mknod.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_opendir.cpp -o build/fuse_opendir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_symlink.cpp -o build/fuse_symlink.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_mfs.cpp -o build/policy_mfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_statvfs_cache.cpp -o build/fs_statvfs_cache.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_sendfile.cpp -o build/fs_sendfile.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_unlink.cpp -o build/fuse_unlink.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_ficlone.cpp -o build/fs_ficlone.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_epmfs.cpp -o build/policy_epmfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/config.cpp -o build/config.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_all.cpp -o build/policy_all.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_movefile.cpp -o build/fs_movefile.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/num.cpp -o build/num.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_removexattr.cpp -o build/fuse_removexattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_copy_file_range.cpp -o build/fs_copy_file_range.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_statfs.cpp -o build/fuse_statfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_invalid.cpp -o build/policy_invalid.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_base_fadvise.cpp -o build/fs_base_fadvise.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fallocate.cpp -o build/fuse_fallocate.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_write_buf.cpp -o build/fuse_write_buf.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_base_fallocate.cpp -o build/fs_base_fallocate.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/resources.cpp -o build/resources.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_release.cpp -o build/fuse_release.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fusefunc.cpp -o build/fusefunc.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_eplfs.cpp -o build/policy_eplfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_chown.cpp -o build/fuse_chown.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fchown.cpp -o build/fuse_fchown.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_ff.cpp -o build/policy_ff.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/mergerfs.cpp -o build/mergerfs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_read_buf.cpp -o build/fuse_read_buf.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_base_futimesat.cpp -o build/fs_base_futimesat.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_flush.cpp -o build/fuse_flush.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_glob.cpp -o build/fs_glob.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_epall.cpp -o build/policy_epall.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_ioctl.cpp -o build/fuse_ioctl.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/branch.cpp -o build/branch.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_path.cpp -o build/fs_path.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_setxattr.cpp -o build/fuse_setxattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_cache.cpp -o build/policy_cache.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_newest.cpp -o build/policy_newest.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_futimens.cpp -o build/fuse_futimens.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_xattr.cpp -o build/fs_xattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_clonefile.cpp -o build/fs_clonefile.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_info.cpp -o build/fs_info.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_eplus.cpp -o build/policy_eplus.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_rmdir.cpp -o build/fuse_rmdir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fgetattr.cpp -o build/fuse_fgetattr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_cow.cpp -o build/fs_cow.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_access.cpp -o build/fuse_access.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/option_parser.cpp -o build/option_parser.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_link.cpp -o build/fuse_link.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_copydata_copy_file_range.cpp -o build/fs_copydata_copy_file_range.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fsyncdir.cpp -o build/fuse_fsyncdir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_flock.cpp -o build/fuse_flock.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_create.cpp -o build/fuse_create.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_acl.cpp -o build/fs_acl.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_rename.cpp -o build/fuse_rename.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_prepare_hide.cpp -o build/fuse_prepare_hide.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_utimens.cpp -o build/fuse_utimens.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_epff.cpp -o build/policy_epff.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_attr.cpp -o build/fs_attr.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/ugid.cpp -o build/ugid.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy_eprand.cpp -o build/policy_eprand.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs_clonepath.cpp -o build/fs_clonepath.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_mkdir.cpp -o build/fuse_mkdir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_releasedir.cpp -o build/fuse_releasedir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_fsync.cpp -o build/fuse_fsync.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_ftruncate.cpp -o build/fuse_ftruncate.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fs.cpp -o build/fs.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/str.cpp -o build/str.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_write.cpp -o build/fuse_write.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_open.cpp -o build/fuse_open.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fasthash.cpp -o build/fasthash.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_readdir.cpp -o build/fuse_readdir.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/fuse_free_hide.cpp -o build/fuse_free_hide.o
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 -c src/policy.cpp -o build/policy.o
    make[1]: Leaving directory '/tmp/mergerfs'
    g++ -O2 -static -Wall -Wno-unused-result -MMD -Ilibfuse/include -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29 -DUSE_XATTR=1 -DUGID_USE_RWLOCK=0 build/fuse_listxattr.o build/policy_lus.o build/fuse_init.o build/fuse_read.o build/fuse_destroy.o build/fs_copydata_readwrite.o build/fuse_readlink.o build/policy_lfs.o build/gidcache.o build/fuse_getattr.o build/fuse_getxattr.o build/fuse_truncate.o build/category.o build/policy_rand.o build/fuse_fchmod.o build/policy_erofs.o build/fuse_copy_file_range.o build/fuse_chmod.o build/fs_mktemp.o build/fuse_mknod.o build/fuse_opendir.o build/fuse_symlink.o build/policy_mfs.o build/fs_statvfs_cache.o build/fs_sendfile.o build/fuse_unlink.o build/fs_ficlone.o build/policy_epmfs.o build/config.o build/policy_all.o build/fs_movefile.o build/num.o build/fuse_removexattr.o build/fs_copy_file_range.o build/fuse_statfs.o build/policy_invalid.o build/fs_base_fadvise.o build/fuse_fallocate.o build/fuse_write_buf.o build/fs_base_fallocate.o build/resouild/policy.o -o build/mergerfs libfuse/build/libfuse.a -pthread -lrt
    mergerfs version: 2.29.0
    FUSE library version: 2.9.7-mergerfs_2.29.0
    using FUSE kernel interface version 7.31
    'build/mergerfs' -> '/build/mergerfs'
    26.07.2020 12:27:17 INFO: *sleeping for 5 seconds
    26.07.2020 12:27:22 INFO: Mergerfs installed successfully, proceeding to create mergerfs mount.
    26.07.2020 12:27:22 INFO: Creating gdrive_vfs mergerfs mount.
    26.07.2020 12:27:22 INFO: Checking if gdrive_vfs mergerfs mount created.
    26.07.2020 12:27:22 INFO: Check successful, gdrive_vfs mergerfs mount created.
    26.07.2020 12:27:22 INFO: Starting dockers.
    26.07.2020 12:27:22 INFO: Script complete

     

     

    what the folder structure looks like before i run a docker and after:

     

    root@unRAID:/mnt/user/gmedia# ls
    Movies/  TV/  data/  id_rsa  id_rsa.pub  mountcheck  watch/
    root@unRAID:/mnt/user/gmedia# ls
    Movies/  TV/  data/  watch/

     

    and what happens if i run the script again after starting the docker:

     

     Script location: /tmp/user.scripts/tmpScripts/rclone_mount_plugin/script
    Note that closing this window will abort the execution of this script
    26.07.2020 12:34:02 INFO: Creating local folders.
    26.07.2020 12:34:02 INFO: *** Starting mount of remote gdrive_vfs
    26.07.2020 12:34:02 INFO: Checking if this script is already running.
    26.07.2020 12:34:02 INFO: Script not running - proceeding.
    26.07.2020 12:34:02 INFO: *** Checking if online
    26.07.2020 12:34:03 PASSED: *** Internet online
    26.07.2020 12:34:03 INFO: Mount not running. Will now mount gdrive_vfs remote.
    26.07.2020 12:34:03 INFO: Recreating mountcheck file for gdrive_vfs remote.
    2020/07/26 12:34:03 DEBUG : rclone: Version "v1.52.2-250-g4f9a80e2-beta" starting with parameters ["rcloneorig" "--config" "/boot/config/plugins/rclone-beta/.rclone.conf" "copy" "mountcheck" "gdrive_vfs:" "-vv" "--no-traverse"]
    2020/07/26 12:34:03 DEBUG : Using config file from "/boot/config/plugins/rclone-beta/.rclone.conf"
    2020/07/26 12:34:03 DEBUG : fs cache: adding new entry for parent of "mountcheck", "/"
    2020/07/26 12:34:04 DEBUG : mountcheck: Modification times differ by -7m26.662403559s: 2020-07-26 12:34:03.845403559 -0400 EDT, 2020-07-26 16:26:37.183 +0000 UTC
    2020/07/26 12:34:05 INFO : mountcheck: Copied (replaced existing)
    2020/07/26 12:34:05 INFO :
    Transferred: 32 / 32 Bytes, 100%, 35 Bytes/s, ETA 0s
    Transferred: 1 / 1, 100%
    Elapsed time: 0.8s
    
    2020/07/26 12:34:05 DEBUG : 11 go routines active
    26.07.2020 12:34:05 INFO: *** Creating mount for remote gdrive_vfs
    26.07.2020 12:34:05 INFO: sleeping for 5 seconds
    26.07.2020 12:34:10 INFO: continuing...
    26.07.2020 12:34:10 INFO: Successful mount of gdrive_vfs mount.
    26.07.2020 12:34:10 INFO: Mergerfs already installed, proceeding to create mergerfs mount
    26.07.2020 12:34:10 INFO: Creating gdrive_vfs mergerfs mount.
    fuse: mountpoint is not empty
    fuse: if you are sure this is safe, use the 'nonempty' mount option
    26.07.2020 12:34:10 INFO: Checking if gdrive_vfs mergerfs mount created.
    26.07.2020 12:34:10 CRITICAL: gdrive_vfs mergerfs mount failed. Stopping dockers.
    plex
    sonarr
    radarr
    requestrr
    deluge
    

     

  6. had this working flawlessly for months, but today for some reason if i start a docker that has  /user -> /mnt/user mapped, the gdrive files disappear from the mergerfs mount.

     

    /mnt/user/gdrive/mount -  has all of my gdrive contents mounted properly

    /mnt/user/gmedia/    - has all of my gdrive+local contents merged properly, but the gdrive folders are all empty starting docker

    /mnt/user/gmedia/data    - my local data merged but still works when the gdrive folders/files disappear

    /mnt/user/local/data -   all my local data (before its uploaded to gdrive)

     

    dockers are mapped to /mnt/user -> /user , and then within each docker i navigate them to the relevant folders.

     

    to get the mount properly working again, i have to fusermount -uz it and remove /bin/mergerfs, all tracking files, and then run the mount script again. then the cycle continues with docker breaking it.

     

    mergerfs command:

    mergerfs /mnt/user/local:/mnt/user/gdrive/mount /mnt/user/gmedia -o rw,async_read=false,use_ino,allow_other,func.getattr=newest,category.action=all,category.create=ff,cache.files=partial,dropcacheonclose=true

    with rclone mount set to debug log level, it shows nothing bad, even when i start a docker to intentionally trigger the mount breaking.

     

    i've tried:

    docker new safe permissions

    recreating docker.img

     

    no luck so far

     

    any ideas? @DZMM

  7. 10 hours ago, ich777 said:

    Yes but you have to disable steam guard on your account and then you have to choose a really really really good password for your account so that nobody can easiely get access to it...

     

    I can try it but no garantuee that it actually will work with WINE...

    It seems to be something you can run without WINE, it has windows/mac/linux versions. shouldn't it be able to just run through steamcmd?

  8. 1 hour ago, ich777 said:

    Not really.

    First of all you need a second account that also owns the game for the server and with steam guard disabled.

    The next thing is that this needs to run through WINE and there is no garantuee that this works, since I don't own the game I can't try it.

    The second account issue I understand, but if it was solely for the person who wanted to host, you only need one account with the game. If it all executes properly, no second account is needed (unless you wanted to play on your own server).

     

    I only want to host, I don't need to play on my own host. Can I gift you a steam copy for testing?

  9. 1 hour ago, ritty said:

    I am having similar issues as you. I cannot stop my array whatsoever because of rclone. I ssh'd into unraid then ran ps -ef | grep /mnt/user only to notice that rclone was still mounted...

     

    Has anybody created a safe user script to unmount drives for a safe array stop/unraid reboot?

     

    I would prefer not to run ps -ef | grep /mnt/user and then kill {pid} every time i stop the array....any help would be appreciated big time :)

    also having this issue. i don't restart my array often so its not a huge problems, but fusermount -uz /path/to/mount alone isnt getting it done, I have to do the ps -ef | grep /mnt/user and kill the rclone pids.

  10. having an issue where when plex is being used pretty decently (4ish streams of 1080p 20mbps bitrate content), rclone can cause my server to run OOM and it kills the mount. i have 16gb of ram, buffer size is 256mb for the mount.

     

    you can see the OOM errors in my attached syslog around 8pm, then at midnight, yesterday. im on a symmetrical gigabit dl/upload line, writing to an nvme cache drive for any new writes, dont see any iowait at all.

     

    below is from right now, with the mount running fine, and no upload running. there still seems to be 4 instances of rclone running, not sure why there isn't only 1, and 2 if i the upload were running.

     

    root@unRAID:~# ps -ef | grep rclone
    root      9394  1603  0 14:28 pts/0    00:00:00 grep rclone
    root     22963     1  0 03:44 ?        00:00:00 /bin/bash /usr/sbin/rclone mount --allow-other --buffer-size 256M --dir-cache-time 1000h --log-level DEBUG --log-file /mnt/user/appdata/other/rclone/mount.log --poll-interval 15s --timeout 1h --bind= gdrive_vfs: /mnt/user/gdrive/mount
    root     22966 22963  0 03:44 ?        00:03:11 rcloneorig --config /boot/config/plugins/rclone-beta/.rclone.conf mount --allow-other --buffer-size 256M --dir-cache-time 1000h --log-level DEBUG --log-file /mnt/user/appdata/other/rclone/mount.log --poll-interval 15s --timeout 1h --bind= gdrive_vfs: /mnt/user/gdrive/mount
    root     24014     1  0 00:26 ?        00:00:00 /bin/bash /usr/sbin/rclone mount --allow-other --buffer-size 256M --dir-cache-time 720h --drive-chunk-size 256M --log-level INFO --vfs-cache-mode writes --bind= gdrive_vfs: /mnt/user/gdrive/mount
    root     24017 24014  0 00:26 ?        00:03:14 rcloneorig --config /boot/config/plugins/rclone-beta/.rclone.conf mount --allow-other --buffer-size 256M --dir-cache-time 720h --drive-chunk-size 256M --log-level INFO --vfs-cache-mode writes --bind= gdrive_vfs: /mnt/user/gdrive/mount

     

    i killed the mounts at 3:40am today, with fusermount -uz /mnt/user/gdrive/mount so that some slightly changed settings could be applied and maybe fix the issue. the mount originally restarted after going OOM around midnight, with the old settings, so the time of 00:26 there also makes sense. when I ran "ps -ef | grep rclone" after running the fusermount command at 3:40am to apply the new settings when remounting, there were no rclone processes shown. so its weird that when running that command NOW, it shows the mount from around midnight.

     

    i think the /bin/bash rclone mounts are from the userscripts plugin, but im not sure what the rcloneorig one is from, as i don't have anything that runs that command in any script. even still, if it were the uploads, i think it'd show the upload command execution line, which of course isnt "mount".

     

    from reading some on the rclone forums, seems like one of the scripts is calling the mount more than it should be, so i think its duplicating and using way more resources than it should. not sure how to track it down.

     

    edit: after reading more about it, i think its just the user script calling the rclone plugin, since the parent process of rcloneorig is 22963. the 24017/24014 process dropped off on its own. really unsure why its running OOM and being killed if its not being duplicated.

     

    any ideas?

     

    syslog.txt

  11. 35 minutes ago, DZMM said:

    Yes, you need to create a share folder e.g. mount_rclone like the default in the script and then mount the remote there.

     

     If you don't use the share for anything but mounting, the share settings don't matter as nothing should get stored there.

    tried it, and the error is gone! thank you. last question, for the local share I have, if I want it to download to the cache drive, since its an nvme ssd so it doesn't bottleneck as easily as the array,) i should change the share settings for /mnt/user/local to cache - Yes, right? that wont mess with anything on the mergerfs side?

  12. 7 hours ago, DZMM said:

    where are you mounting?  Directly in /mnt/user or a share in /mnt/share?  If it's the former, that's why you're getting errors.

    directly in /mnt/user. so I need to mount in a share inside /mnt/user? unraid makes a share normally for new folders in /mnt/user, but i didnt notice that it hadnt for mnt/user/gdrive. can i just make one named the same and it'll work after unmounting and remounting?

     

    also, does it matter what the share settings are? i should leave "Use cache drive" set to No, right, since the underlying mergerfs is handling it?

     

    does that matter for mnt/user/local? thats where i have my newly downloaded files in a subdirectory /data, and sonarr/radarr hardlinking to subdirectories /Movies and /TV.

  13. having a bit of trouble getting this setup. i uploaded all of my media to my team drive with the crypt remote.

     

    my paths are currently:

     

    /mnt/user/Downloads/Media/{TV or Movies} - Media folder plex uses and where Sonarr/Radarr hardlink files to

    /mnt/user/Downloads/data - newly downloaded files not yet imported by Sonarr/Radarr

     

    so to see if i understand this correctly:

     

    /mnt/user/mount_rclone/gdrive_vfs -  this is where rclone will mount my team drive, which should mirror my current Media folder given everything is uploaded

    /mnt/user/local/gdrive_vfs - this is where newly downloaded files not yet uploaded will go, becoming my new Downloads/data folder

    /mnt/user/mount_mergerfs/gdrive_vfs -- this is where i navigate within dockers to, after pointing them at /mnt/user, as this is the merged contents of my team drive and local data

     

    so since i already have everything uploaded, then not have to bother moving my current Media folder, given its already on my team drive? and my mount script settings should then be:

     

    # REQUIRED SETTINGS

    RcloneRemoteName="gdrive_vfs" # Name of rclone remote mount WITHOUT ':'. NOTE: Choose your encrypted remote for sensitive data

    RcloneMountShare="/mnt/user/mount_rclone" # where your rclone remote will be located without trailing slash e.g. /mnt/user/mount_rclone

    MergerfsMountShare="/mnt/user/mount_mergerfs" # location without trailing slash e.g. /mnt/user/mount_mergerfs. Enter 'ignore' to disable

    DockerStart="deluge plex sonarr radarr ombi" # list of dockers, separated by space, to start once mergerfs mount verified. Remember to disable AUTOSTART for dockers added in docker settings page

    LocalFilesShare="/mnt/user/local" # location of the local files and MountFolders you want to upload without trailing slash to rclone e.g. /mnt/user/local. Enter 'ignore' to disable

    MountFolders=\{"Downloads/data,Movies,TV"\} # comma separated list of folders to create within the mount

     

     

     

  14. 4 hours ago, senpaibox said:

    The reason for this is because of the Discord notifications. If you don't care for Discord notifications then you can remove "--stats 9999m" and change "-vP" to -vvv or -P

    hmm still not working. it prints everything after the transfer is complete, but until then it still sits at the rclone debug line. i removed "--stats 9999m" and tried "-vvv" and tried "-P, same result.

     

    is there no way to get it to output the upload periodically during the actual upload? i tried "-v" with "--stats 5m" instead and that didn't work either.

×
×
  • Create New...