Don't kill unionfs-fuse during shutdown

Killing the daemon backing /nix/store prevents a clean shutdown.  See
http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/
This commit is contained in:
Eelco Dolstra
2014-05-21 15:19:01 +02:00
parent 5e364503d5
commit c54eb79063
3 changed files with 25 additions and 2 deletions

View File

@@ -8,6 +8,14 @@ stdenv.mkDerivation rec {
sha256 = "0qpnr4czgc62vsfnmv933w62nq3xwcbnvqch72qakfgca75rsp4d";
};
patches =
[ # Prevent the unionfs daemon from being killed during
# shutdown. See
# http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/
# for details.
./prevent-kill-on-shutdown.patch
];
buildInputs = [ cmake fuse ];
# Put the unionfs mount helper in place as mount.unionfs-fuse. This makes it

View File

@@ -0,0 +1,14 @@
diff -ru -x '*~' unionfs-fuse-0.26-orig/src/unionfs.c unionfs-fuse-0.26/src/unionfs.c
--- unionfs-fuse-0.26-orig/src/unionfs.c 2012-09-11 00:06:32.000000000 +0200
+++ unionfs-fuse-0.26/src/unionfs.c 2014-05-21 14:22:03.597861805 +0200
@@ -831,6 +831,10 @@
}
#endif
+ /* Prevent systemd's shutdown from killing us. */
+ if (access("/etc/initrd-release", F_OK) >= 0)
+ argv[0][0] = '@';
+
umask(0);
int res = fuse_main(args.argc, args.argv, &unionfs_oper, NULL);
RETURN(uopt.doexit ? uopt.retval : res);