From patchwork Tue Apr 23 20:47:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Sent X-Patchwork-Id: 63323 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 8D41427BBEA; Tue, 23 Apr 2024 21:49:33 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id E364527BBE2 for ; Tue, 23 Apr 2024 21:49:32 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rzN4o-00035p-58; Tue, 23 Apr 2024 16:49:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rzN4S-000329-Qx for guix-patches@gnu.org; Tue, 23 Apr 2024 16:48:57 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rzN4S-0003Sf-I5 for guix-patches@gnu.org; Tue, 23 Apr 2024 16:48:56 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rzN4i-0003Yz-M1 for guix-patches@gnu.org; Tue, 23 Apr 2024 16:49:12 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#70542] [PATCH 2/4] services: base: Use requirements to delay some file-systems Resent-From: Richard Sent Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 23 Apr 2024 20:49:11 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 70542 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 70542@debbugs.gnu.org Cc: Richard Sent Received: via spool by 70542-submit@debbugs.gnu.org id=B70542.171390534613608 (code B ref 70542); Tue, 23 Apr 2024 20:49:11 +0000 Received: (at 70542) by debbugs.gnu.org; 23 Apr 2024 20:49:06 +0000 Received: from localhost ([127.0.0.1]:54263 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rzN4Y-0003Wr-9a for submit@debbugs.gnu.org; Tue, 23 Apr 2024 16:49:05 -0400 Received: from mail-108-mta34.mxroute.com ([136.175.108.34]:38921) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rzN3d-0003MA-4e for 70542@debbugs.gnu.org; Tue, 23 Apr 2024 16:48:12 -0400 Received: from filter006.mxroute.com ([136.175.111.2] filter006.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta34.mxroute.com (ZoneMTA) with ESMTPSA id 18f0cb6f2a20003bea.001 for <70542@debbugs.gnu.org> (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Tue, 23 Apr 2024 20:47:47 +0000 X-Zone-Loop: fb768efe4dcacf4848e89ee4ceeb28903401ea06368c X-Originating-IP: [136.175.111.2] DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=freakingpenguin.com; s=x; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=JFnq50DttwZ+qap2nmDE1ZtMkgIdnaAfw2lUNyI0zJs=; b=HqeOuTJXpxzEfIHBnvfI3r28PU uVnrJ/voJ3+DzGk1L5VQLpqLi2VOUsu8qdlbQfbDjFVQsy6UeoiN2o4O+kysHmgEV3L+45fgsWl4/ wWD/CF7jyDEabHbaxym95s5pf2K9ZGy+PztoSzZBILCYqbJiIy8ph1f2ViPlNmIjfzd6Owuag0nZq x9hzs5U6R/kticDvl4jaUJGpixw53GhbnIcmGZl2OnrueA0ePWnebftt4Ugl7I52yys+6IgcCGjS/ mMEVpwHeChTx8hUHNCYlAUuZMuEEsA7bmGdAk9SOg42LjkufNnIjOaHo9nXgfX76HxS2NnBhujorQ 7r73/tCw==; From: Richard Sent Date: Tue, 23 Apr 2024 16:47:20 -0400 Message-ID: <91efec381997bd89208d9f4a47141ae6481fb963.1713904784.git.richard@freakingpenguin.com> In-Reply-To: References: MIME-Version: 1.0 X-Authenticated-Id: richard@freakingpenguin.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches Add a mechanism to only require a subset of file-system entries during early Shepherd initialization. Any file-system with additional Shepherd service requirements (e.g. networking) will be brought up after 'file-systems is provisioned. * gnu/services/base.scm (file-system-shepherd-service): Splice file-system-requirements into the Shepherd service requirement list. * gnu/services/base.scm (file-system-shepherd-services): Provision 'file-system when file-systems that satisfy initial-file-system? are started. Change-Id: I7b1336ee970f4320f7431bef187e66f34f0d718c --- gnu/services/base.scm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 3f912225a0..af92b700b4 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -403,6 +403,7 @@ (define (file-system-shepherd-service file-system) (create? (file-system-create-mount-point? file-system)) (mount? (file-system-mount? file-system)) (dependencies (file-system-dependencies file-system)) + (requirements (file-system-requirements file-system)) (packages (file-system-packages (list file-system)))) (and (or mount? create?) (with-imported-modules (source-module-closure @@ -411,7 +412,8 @@ (define (file-system-shepherd-service file-system) (provision (list (file-system->shepherd-service-name file-system))) (requirement `(root-file-system udev - ,@(map dependency->shepherd-service-name dependencies))) + ,@(map dependency->shepherd-service-name dependencies) + ,@requirements)) (documentation "Check, mount, and unmount the given file system.") (start #~(lambda args #$(if create? @@ -460,12 +462,22 @@ (define (file-system-shepherd-services file-systems) (or (file-system-mount? x) (file-system-create-mount-point? x))) file-systems))) + + (define (initial-file-system? file-system) + "Return #t if the file system should be mounted initially or #f." + ;; File systems with additional Shepherd requirements (e.g. networking) + ;; should not be considered initial. Those requirements likely rely on + ;; 'file-systems being provisioned. + (null? (file-system-requirements file-system))) + (define sink (shepherd-service (provision '(file-systems)) (requirement (cons* 'root-file-system 'user-file-systems (map file-system->shepherd-service-name - file-systems))) + ;; Only file systems considered initial should + ;; be required to provision 'file-systems. + (filter initial-file-system? file-systems)))) (documentation "Target for all the initially-mounted file systems") (start #~(const #t)) (stop #~(const #f))))