From d23e7fdfc3e3ca6db57641592598ca3b7f569bb0 Mon Sep 17 00:00:00 2001 From: Gergely Risko Date: Fri, 14 Mar 2014 11:52:06 +0100 Subject: [PATCH 1/2] OpenAFS client update --- pkgs/servers/openafs-client/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkgs/servers/openafs-client/default.nix b/pkgs/servers/openafs-client/default.nix index ba0b80fc61e..47c8c12edef 100644 --- a/pkgs/servers/openafs-client/default.nix +++ b/pkgs/servers/openafs-client/default.nix @@ -4,11 +4,11 @@ assert stdenv.isLinux; stdenv.mkDerivation { - name = "openafs-1.6.1-${kernel.version}"; + name = "openafs-1.6.6-${kernel.version}"; src = fetchurl { - url = http://www.openafs.org/dl/openafs/1.6.1/openafs-1.6.1-src.tar.bz2; - sha256 = "1c7mid0dwl2x0sikr70bi5cs881y6pa4dfwkdmr3jscvx3wgfpnh"; + url = http://www.openafs.org/dl/openafs/1.6.6/openafs-1.6.6-src.tar.bz2; + sha256 = "0xfa64hvz0avp89zgz8ksmp24s6ns0z3103m4mspshhhdlikypk3"; }; buildInputs = [ autoconf automake flex yacc ncurses perl which ]; @@ -41,6 +41,5 @@ stdenv.mkDerivation { license = stdenv.lib.licenses.ipl10; platforms = stdenv.lib.platforms.linux; maintainers = stdenv.lib.maintainers.z77z; - broken = true; }; } From 2be35c3e99855b695a7599811dec24cc0fcdf282 Mon Sep 17 00:00:00 2001 From: Gergely Risko Date: Fri, 14 Mar 2014 14:39:21 +0100 Subject: [PATCH 2/2] OpenAFS client fixes Make it stoppable. Add support for crypt and dynroot-sparse. --- .../openafs-client/default.nix | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix index 4a888b64bd3..b34ebc3663e 100644 --- a/nixos/modules/services/network-filesystems/openafs-client/default.nix +++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix @@ -46,6 +46,16 @@ in description = "Cache directory."; }; + crypt = mkOption { + default = false; + description = "Whether to enable (weak) protocol encryption."; + }; + + sparse = mkOption { + default = false; + description = "Minimal cell list in /afs."; + }; + }; }; @@ -70,18 +80,23 @@ in startOn = "started network-interfaces"; stopOn = "stopping network-interfaces"; - preStart = '' - mkdir -m 0755 /afs || true - mkdir -m 0755 -p ${cfg.cacheDirectory} || true + preStart = '' + mkdir -p -m 0755 /afs + mkdir -m 0700 -p ${cfg.cacheDirectory} ${pkgs.module_init_tools}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true - ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} -dynroot -fakestat - ''; + ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb + ${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"} + ''; - postStop = '' - umount /afs + # Doing this in preStop, because after these commands AFS is basically + # stopped, so systemd has nothing to do, just noticing it. If done in + # postStop, then we get a hang + kernel oops, because AFS can't be + # stopped simply by sending signals to processes. + preStop = '' + ${pkgs.utillinux}/bin/umount /afs ${openafsPkgs}/sbin/afsd -shutdown - rmmod libafs - ''; + ${pkgs.module_init_tools}/sbin/rmmod libafs + ''; };