Tim Woodall wrote: > Short script below that shows my problem. > > fusermount -u (and umount) both return before all the data is written > out to the backing file on a fuse FS. Is there any way to tell when this > is complete? I tried running fuse in the foreground and then doing a > wait $PID but that didn't help, I still needed the sleep. > > At least on my system, with a fs of 50G it always unmounts quickly > enough for the e2fsck to pass, at 500G it sometimes does, and at 5T it > seems to always fail without the sleep (which can probably be a bit > shorter than 30s but I haven't bothered to try to work out exactly how > much shorter it can safely be. > > Tim. > > #!/bin/bash > > set -e > > ROOT=mount > DEV=container_mount/pv1 > > rm -f container > rm -fr container_mount > rm -fr mount > > mkdir -p container_mount > > # create a container fs that can hold a 5T sparse file > truncate -s 3G container > /sbin/mke2fs -t ext4 -O \ > > none,has_journal,ext_attr,dir_index,filetype,extent,64bit,flex_bg,sparse_super,large_file,huge_file,dir_nlink,extra_is > -b 4096 container > > fuse2fs -o fakeroot container container_mount > > mkdir -p "$ROOT" > > echo "truncate $(date)" > truncate -s 5T "${DEV}" > > echo "mke2fs $(date)" > /sbin/mkfs.ext4 -N 1000000 -O \ > > none,has_journal,ext_attr,dir_index,filetype,extent,64bit,flex_bg,sparse_super,large_file,huge_file,dir_nlink,extra_is > -b 1024 "$DEV" > > echo "fuse2fs ${DEV} ${ROOT} $(date)" > fuse2fs -o fakeroot "$DEV" "$ROOT" > > echo "make filler $(date)" > touch "${ROOT}/filler" > echo "fusermount -u $ROOT $(date)" > fusermount -u "$ROOT" > > ### How can I avoid this step > echo "sleeping" > sleep 30 > > /sbin/e2fsck -f "$DEV" || true > > fusermount -u container_mount > rm container > rmdir $ROOT > rmdir container_mount > > exit 0 > >
sync should do it, but there are important details to check which i hope are explained by the man page or the referenced items at the bottom: "BUGS Persistence guarantees vary per system. See the system calls below for more details. AUTHOR Written by Jim Meyering and Giuseppe Scrivano. REPORTING BUGS GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report any translation bugs to <https://translationproject.org/team/> SEE ALSO fdatasync(2), fsync(2), sync(2), syncfs(2) Full documentation <https://www.gnu.org/software/coreutils/sync> or available locally via: info '(coreutils) sync invocation' " songbird