From patchwork Fri Feb 14 22:10:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975671 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77E831DDA18 for ; Fri, 14 Feb 2025 22:10:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571027; cv=none; b=JHXKiv9aJPut3cr1eDuupBKAlSza+pP6/DDQPTz4HyluR26nl5ctwJEkYD6gkBFDWeSmxFUysPa8Rd5n1oyl+ZN+ZGxGOfHdeuwS6Ybpd8mzoWsQO8RWi4UAFriZwLc3WT1y6XM7jtsh1gs3J4ckKeFd0KDg/QXoijBwtfQAcIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571027; c=relaxed/simple; bh=CqQWvzMpNs2Yy1U1wRj6dEH064lM+EXAl/A+Qs9L5A0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h/Mr4yQiYxDZL8f1XLIYy51UfE/rJzFyhUZaR2HiIPvZaTNgwxze73l0GibPUsVa5wQwrbkMBCuvLgztcBguUdKt4TKQrdXiWw8nH0lXRkkkE/Ik219WARQPEgcv0OvuR0FBDzo/wbEsyq1BOtKCpFxy6ES1Q708Zf45R0r8ay0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=G70FJ/U3; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="G70FJ/U3" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ab7f76aeedbso322700866b.3 for ; Fri, 14 Feb 2025 14:10:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571024; x=1740175824; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ey3kUqeg9uyJ2PtkLSTy0NZEvELl91EqHkDHaUzML8k=; b=G70FJ/U3bYhHe7XAm8mpcayz1yHDD30TsJaf9JfDPx+IMBig5PHRx2fpcgv+lpnD8Z T5j4UpmhR9JI//n2MfNtYWaILYc8W6Zxv/YsRbx4WgdUc5BpSPKVFTn6RA3okPg9loJW NaxWHC7h2966ta7oD3W1EZJIZQ/3RXcSpYkicrPq+Jw9GGcH3aOq7Y6L/e75SKOwCFhP nZSPlhF5GY0kQypaCQOLf/GE061k1dphFXcLo1wZKRPI0Qb6SNT+mWX8tO/JZAOZVYnq pXF5ZbC+Z+5xq2a0tNofUHqFqyS6i0qigaYAQygs9YOVlJOwtL9ppl0GAnZK8S2dq6Ef 7eOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571024; x=1740175824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ey3kUqeg9uyJ2PtkLSTy0NZEvELl91EqHkDHaUzML8k=; b=GRqEKIcw+L6d4cRbjyYfvDDAyKQsJBse6P0m6PRf5cyYm2rMAd62jBN52EI7CvWa0e lJGSAIaWKAlgCf2pqGXXSD/QCtjzgZWv6CGaN25r/vJXDp7S408r+rWkU8MGNCNgzYPi 4gfQsQu1zhQheasKmp1nGHRRGKljaluS+TIabkCQ3nwUmKEFfU7bqES6i5/zBJnHr14L 0h1ZnzAeENhu+YSRnSJZQNQKNmi6r3x8G4spV1Ma9DxQ1VS1pXkph8i1wIJmFl7t16gM kIk21LBj9Of+k3XY8E+RjKryjItQqnZDlK2j0mmG8HzEPhPkKCfRHWoLkrEzXEcYEgRJ NwMg== X-Forwarded-Encrypted: i=1; AJvYcCUU/FfgpcnDZ719eTDhtRWMf1b3S2aRjsNnLS7PlYmAfa2d+7RCq1YV7zQ4ZGtyLP1OzqzYgDBNmg==@lists.linux.dev X-Gm-Message-State: AOJu0YzLOrf8JY0VnP2Sk7edpej+MbWG+o0QBg7WY1B5rfoPWPqUpOjD JYQ6pvUCWsxj0m6hfvrW6FNan+eh/uNIreIDYkhDAsoguoi/kHGbVlzMekcB1E0= X-Gm-Gg: ASbGncv2hoEHuISMi/nAjou2ZY/ZFCA+BZHsdsuxD3f9fpwGKC5Ywbf/kZ+3GSWNs3z jxjQiwEWg8/fsqg1maHyi2EJkuS45GEM5OqsE0L8v4mA0a8DDXMeo+7dEyIjYbHIOJ8qwXhmvl5 45E9BU/HnznHbvBAVayq9bw9Zu7cWvO9r5ztsPEoLYRx6bgSqq/dCcDWkVUUz43/D3u/pej7Yj1 IP5ctRKSWNqmqMOzgeodbwwgkRWai3JaV+W0wr51mZbxPsXpbxbD8cYgc42dHhaz6l2l89BtyIK oAwAPFIiZbHoxS5TH3tmKVZOx8mKoNyPmO2r99dWYzlpFIil/OXaf29g6xuiOjq0KRgUKRWOmgf 3NQ== X-Google-Smtp-Source: AGHT+IHQ/qsp1VUQSf7/mAVh/btOOHIXnABpeyMSwCQalXdmJbZJHSee8dryJXsGdWjM5luyYNJLAg== X-Received: by 2002:a05:6402:1e8a:b0:5de:5190:cfc7 with SMTP id 4fb4d7f45d1cf-5e03608cb01mr1854785a12.19.1739571023471; Fri, 14 Feb 2025 14:10:23 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5dece1d00d9sm3496765a12.32.2025.02.14.14.10.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:23 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 01/10] multipath-tools: move DEFAULT_SOCKET definition into Makefile.inc Date: Fri, 14 Feb 2025 23:10:02 +0100 Message-ID: <20250214221011.136762-2-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This enables configuring the socket name. Follow up patches will add more flexibility for configuring the sockets. Signed-off-by: Martin Wilck --- Makefile.inc | 5 ++++- libmpathcmd/mpath_cmd.h | 1 - libmultipath/defaults.h | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile.inc b/Makefile.inc index 65f6efc..76efeb9 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -79,6 +79,8 @@ libudev_incdir := $(or $(shell $(PKG_CONFIG) --variable=includedir libudev),/usr kernel_incdir := /usr/include sysdir_bin := $(sys_execprefix)bin +abstract_socket := /org/kernel/linux/storage/multipathd + ifeq ($(V),) Q := @ # make's "Entering directory" messages are confusing in parallel mode @@ -114,7 +116,8 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \ -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(TGTDIR)$(plugindir)\" \ -DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \ -DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \ - -DEXTRAVERSION=\"$(EXTRAVERSION)\" -MMD -MP + -DEXTRAVERSION=\"$(EXTRAVERSION)\" \ + -DDEFAULT_SOCKET=\"$(abstract_socket)\" -MMD -MP CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ -fexceptions BIN_CFLAGS := -fPIE -DPIE diff --git a/libmpathcmd/mpath_cmd.h b/libmpathcmd/mpath_cmd.h index bf30c1e..c96fabc 100644 --- a/libmpathcmd/mpath_cmd.h +++ b/libmpathcmd/mpath_cmd.h @@ -30,7 +30,6 @@ extern "C" { #endif -#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd" #define DEFAULT_REPLY_TIMEOUT 4000 diff --git a/libmultipath/defaults.h b/libmultipath/defaults.h index 02f7e57..134b690 100644 --- a/libmultipath/defaults.h +++ b/libmultipath/defaults.h @@ -67,7 +67,6 @@ #define DEV_LOSS_TMO_UNSET 0U #define MAX_DEV_LOSS_TMO UINT_MAX #define DEFAULT_PIDFILE RUNTIME_DIR "/multipathd.pid" -#define DEFAULT_SOCKET "/org/kernel/linux/storage/multipathd" #define DEFAULT_BINDINGS_FILE STATE_DIR "/bindings" #define DEFAULT_WWIDS_FILE STATE_DIR "/wwids" #define DEFAULT_PRKEYS_FILE STATE_DIR "/prkeys" From patchwork Fri Feb 14 22:10:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975672 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E2C2B1FC0E0 for ; Fri, 14 Feb 2025 22:10:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571030; cv=none; b=f7civVx5JctbmLxddCUXGlRiiQ6r6Rkef6T/EV7/2tnwHVrjdLE0fSTj5sAnTpVNQJ3OHZBQOiwvthDc5nQbY6NVwGW7yvcauwZaQgD6PsDJmHVjuOFIaP5p+kt4vB8LHi8JqMl5qdmNwj3wlzb2dis49b9CN7EjFNGxbEt7ptk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571030; c=relaxed/simple; bh=/E05KXQ4194m1gdad5uvswZz9gjlXIg7Mhf6fcFxmc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W9Tk6GOeC7o+0j+lWr3Kgtqy/Dr9SRZ5OFx1XXH1iZXbxi4VwtfvHWXWaNEVPH6Xc9Wnq7RCJ0zH6bsof6FBueTlWo2UrVC6DNzNya4K+ZikSR6q4cTPR4Wqc7IpSr8VZl2xBEUojWz9P4gQaUKKwCCqNzJYxrTdP+XaPsjuwwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=V0ld+7l6; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="V0ld+7l6" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-5dca468c5e4so4505515a12.1 for ; Fri, 14 Feb 2025 14:10:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571025; x=1740175825; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bOYjrERQAbKxd+P3j9lRvvt4TSnywH6bWoTyatpPUIE=; b=V0ld+7l6CX8QJgFSWXidEksz93gCfqoefCOXNf8pXAU+VHWs0IDkvtPlSCXxSonKZY CHt1g6hHNIBbQmegfHxI4h6b3sZfl9oU6smp4HAxdKDGpCnXAp5f1qWfViOVvCFo53IE HUDQVqcunFy5zcpF6/aD1/TsbM/SO6SO2jtXUdCEnYm48yF/jshd2bJmegtUfMgd997J 8AS51RnEuljyp0XPSuVYUGL61uTckQn77sOcDMXqUkv7mlDeqQzOTQ1az3cWrBN5Jqxy HtV7occy+LbeBeuGggA9lP0csBn6cEt2NxHhepWi7BxIw98oG9DqmJQZORoMVW34lYDS RWpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571025; x=1740175825; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bOYjrERQAbKxd+P3j9lRvvt4TSnywH6bWoTyatpPUIE=; b=VRIiyCsdY98dWyduccdJTbnPORX3Ffo69d5r9Wlg543VQos8RJcdyWt5I+2nMJrQ35 UCP5yad8R6bfG3/MbWx9O5rIJd0Ngv0EWbhk4ihcafqbBf7oQdyJ6umNo2/7dP8Z9TeN IV2/+UWOUK++SyXn3syTg8x6K7Fi/WBUbcokuiNAsvEt/fXLzAKZsHgUYRrbI6dkApZN Pr+Prtdnrg9chkHT8pDxy8K21N0/1imSxxasLQ4nRT3ACozWynCe1uGWNTfLDdheEfVO +n8UB/WWJh6AaKZ/j7VM6jiLR0OGiTKDo5Mzj2KOSsMYd43SplmrrOAS/SFtctPM+1NU v9UQ== X-Forwarded-Encrypted: i=1; AJvYcCWNkA3oS2ktm91RH5kdmMMQI9AQ+KDnG6wM5J+c6JLY+3palcsDIUtGXovXE1Z4XBEEH3b8GjFj3A==@lists.linux.dev X-Gm-Message-State: AOJu0YyUYY3EJFuNkm5baJplezzYdrst82ENUisIS4h0xdx41BWKtwc7 n8SpNoRL8ye9Pusm3aFI/bUIMIBN69fA1RVO8bbCqzRIkneksPG0qzGQlpnnHGo= X-Gm-Gg: ASbGncvqXxjxNFWxnAt4bUmTafD2xD1bcijLBUp/Mu7m9BkOC4Q0+5hFnQKePB5bLfn RVsgbUkvYHcGvX0l9KRne5NjfXZNhm/7ecH+YkiOrKlrIdbBc5PQX4wKGXgAxnFpVF0I/1Oy59I Num4CpW+pW6KLwQWPm3agocJuDmx3HrzxXJRz3/6JN17WlNXEhA/Fg1CILSQyBNlXckAmuTLFtd cvgKsLApUz6AyPdZHUif/wphgI0x5iunKjME8KSHMBZmEHb5yu/Dxbbo64q03HiMXyRZfGGMyke IqIpubupiFnndMTfbRTyzV2e9jNRvTRnqYU2u2oIktEBDYHSOfjPhCg94icAhcwr6zVJNs6EQVz zDg== X-Google-Smtp-Source: AGHT+IGNY5MyMneLhMGT/CfglrlVO5hfud30BrgtI5vINd8aF5AMFgvo/5frxf1mcCPzoYlqFD4SrQ== X-Received: by 2002:a17:907:7f27:b0:ab7:f096:61d8 with SMTP id a640c23a62f3a-abb70bfc808mr85680566b.29.1739571024791; Fri, 14 Feb 2025 14:10:24 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-abb7200144fsm27207566b.184.2025.02.14.14.10.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:24 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 02/10] multipath-tools: add helper mpath_fill_sockaddr__() Date: Fri, 14 Feb 2025 23:10:03 +0100 Message-ID: <20250214221011.136762-3-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Create a static new helper function which is used by both libmpathcmd and libmpathutil and fills in the socket address name from the compile-time default. The function is able to handle both abstract and pathname sockets, but more changes are needed to make the latter actually work. Signed-off-by: Martin Wilck Reviewed-by: Benjamin Marzinski --- .gitignore | 1 + Makefile.inc | 7 ++-- create-config.mk | 1 + libmpathcmd/mpath_cmd.c | 11 ++----- libmpathcmd/mpath_fill_sockaddr.c | 32 +++++++++++++++++++ libmpathutil/uxsock.c | 15 ++++----- multipathd/Makefile | 4 +-- ...multipathd.socket => multipathd.socket.in} | 2 +- 8 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 libmpathcmd/mpath_fill_sockaddr.c rename multipathd/{multipathd.socket => multipathd.socket.in} (87%) diff --git a/.gitignore b/.gitignore index 4548cfb..6a1f6fc 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ multipathd/multipathd multipathd/multipathd.8 multipathd/multipathc multipathd/multipathd.service +multipathd/multipathd.socket mpathpersist/mpathpersist mpathpersist/mpathpersist.8 abi.tar.gz diff --git a/Makefile.inc b/Makefile.inc index 76efeb9..4015006 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -79,7 +79,7 @@ libudev_incdir := $(or $(shell $(PKG_CONFIG) --variable=includedir libudev),/usr kernel_incdir := /usr/include sysdir_bin := $(sys_execprefix)bin -abstract_socket := /org/kernel/linux/storage/multipathd +abstract_socket := @/org/kernel/linux/storage/multipathd ifeq ($(V),) Q := @ @@ -117,7 +117,9 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \ -DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \ -DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \ -DEXTRAVERSION=\"$(EXTRAVERSION)\" \ - -DDEFAULT_SOCKET=\"$(abstract_socket)\" -MMD -MP + -DDEFAULT_SOCKET=\"$(abstract_socket)\" \ + -DWSTRINGOP_TRUNCATION=$(if $(WSTRINGOP_TRUNCATION),1,0) \ + -MMD -MP CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ -fexceptions BIN_CFLAGS := -fPIE -DPIE @@ -170,4 +172,5 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version) -e 's:@SYSDIR_BIN@:'$(sysdir_bin)': g' \ -e 's:@RUNTIME_DIR@:'$(runtimedir)':g' \ -e 's/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g' \ + -e 's,@MPATH_SOCKET@,'$(abstract_socket)',g' \ $< >$@ diff --git a/create-config.mk b/create-config.mk index ab163ed..f05fdab 100644 --- a/create-config.mk +++ b/create-config.mk @@ -191,6 +191,7 @@ $(TOPDIR)/config.mk: $(multipathdir)/autoconfig.h @echo "ERROR_DISCARDED_QUALIFIERS := $(call TEST_CC_OPTION,-Werror=discarded-qualifiers,)" >>$@ @echo "WNOCLOBBERED := $(call TEST_CC_OPTION,-Wno-clobbered -Wno-error=clobbered,)" >>$@ @echo "WFORMATOVERFLOW := $(call TEST_CC_OPTION,-Wformat-overflow=2,)" >>$@ + @echo "WSTRINGOP_TRUNCATION := $(call TEST_CC_OPTION,-Wstringop-truncation)" >>$@ @echo "W_MISSING_INITIALIZERS := $(call TEST_MISSING_INITIALIZERS)" >>$@ @echo "W_URCU_TYPE_LIMITS := $(call TEST_URCU_TYPE_LIMITS)" >>$@ @echo "ENABLE_LIBDMMP := $(ENABLE_LIBDMMP)" >>$@ diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c index a38e8b6..5a39471 100644 --- a/libmpathcmd/mpath_cmd.c +++ b/libmpathcmd/mpath_cmd.c @@ -24,11 +24,13 @@ #include #include #include +#include #include #include #include #include "mpath_cmd.h" +#include "mpath_fill_sockaddr.c" /* * keep reading until its all read @@ -101,14 +103,6 @@ int mpath_connect__(int nonblocking) struct sockaddr_un addr; int flags = 0; - memset(&addr, 0, sizeof(addr)); - addr.sun_family = AF_LOCAL; - addr.sun_path[0] = '\0'; - strncpy(&addr.sun_path[1], DEFAULT_SOCKET, sizeof(addr.sun_path) - 1); - len = strlen(DEFAULT_SOCKET) + 1 + sizeof(sa_family_t); - if (len > sizeof(struct sockaddr_un)) - len = sizeof(struct sockaddr_un); - fd = socket(AF_LOCAL, SOCK_STREAM, 0); if (fd == -1) return -1; @@ -119,6 +113,7 @@ int mpath_connect__(int nonblocking) (void)fcntl(fd, F_SETFL, flags|O_NONBLOCK); } + len = mpath_fill_sockaddr__(&addr, DEFAULT_SOCKET); if (connect(fd, (struct sockaddr *)&addr, len) == -1) { int err = errno; diff --git a/libmpathcmd/mpath_fill_sockaddr.c b/libmpathcmd/mpath_fill_sockaddr.c new file mode 100644 index 0000000..750ef3e --- /dev/null +++ b/libmpathcmd/mpath_fill_sockaddr.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2025 SUSE LLC + * SPDX-license-identifier: LGPL-2.1-or-newer + */ + +static size_t mpath_fill_sockaddr__(struct sockaddr_un *addr, const char *name) +{ + size_t len; + + addr->sun_family = AF_LOCAL; + + if (name[0] != '@') { + /* Pathname socket. This should be NULL-terminated. */ + strncpy(&addr->sun_path[0], name, sizeof(addr->sun_path) - 1); + addr->sun_path[sizeof(addr->sun_path) - 1] = '\0'; + len = offsetof(struct sockaddr_un, sun_path) + strlen(name) + 1; + } else { + addr->sun_path[0] = '\0'; + /* + * The abstract socket's name doesn't need to be NULL terminated. + * Actually, a trailing NULL would be considered part of the socket name. + */ +#pragma GCC diagnostic push +#if WSTRINGOP_TRUNCATION +#pragma GCC diagnostic ignored "-Wstringop-truncation" +#endif + strncpy(&addr->sun_path[1], &name[1], sizeof(addr->sun_path) - 1); +#pragma GCC diagnostic pop + len = offsetof(struct sockaddr_un, sun_path) + strlen(name); + } + return len > sizeof(*addr) ? sizeof(*addr) : len; +} diff --git a/libmpathutil/uxsock.c b/libmpathutil/uxsock.c index 2135476..12c4608 100644 --- a/libmpathutil/uxsock.c +++ b/libmpathutil/uxsock.c @@ -6,12 +6,15 @@ */ #include #include +#include #include #include +#include #include #include #include #include +#include #include #include #include @@ -33,6 +36,8 @@ static int _recv_packet(int fd, char **buf, unsigned int timeout, ssize_t limit); +#include "../libmpathcmd/mpath_fill_sockaddr.c" + /* * create a unix domain socket and start listening on it * return a file descriptor open on the socket @@ -63,15 +68,7 @@ int ux_socket_listen(const char *name) return -1; } - memset(&addr, 0, sizeof(addr)); - addr.sun_family = AF_LOCAL; - addr.sun_path[0] = '\0'; - len = strlen(name) + 1; - if (len >= sizeof(addr.sun_path)) - len = sizeof(addr.sun_path) - 1; - memcpy(&addr.sun_path[1], name, len); - - len += sizeof(sa_family_t); + len = mpath_fill_sockaddr__(&addr, name); if (bind(fd, (struct sockaddr *)&addr, len) == -1) { condlog(3, "Couldn't bind to ux_socket, error %d", errno); close(fd); diff --git a/multipathd/Makefile b/multipathd/Makefile index 997b40c..61cf1af 100644 --- a/multipathd/Makefile +++ b/multipathd/Makefile @@ -41,7 +41,7 @@ ifeq ($(FPIN_SUPPORT),1) OBJS += fpin_handlers.o endif -all : $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service +all : $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service $(EXEC).socket $(EXEC): $(OBJS) $(multipathdir)/libmultipath.so $(mpathcmddir)/libmpathcmd.so @echo building $@ because of $? @@ -78,7 +78,7 @@ uninstall: $(Q)$(RM) $(DESTDIR)$(unitdir)/$(EXEC).socket clean: dep_clean - $(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service + $(Q)$(RM) core *.o $(EXEC) $(CLI) $(MANPAGES) $(EXEC).service $(EXEC).socket include $(wildcard $(OBJS:.o=.d) $(CLI_OBJS:.o=.d)) diff --git a/multipathd/multipathd.socket b/multipathd/multipathd.socket.in similarity index 87% rename from multipathd/multipathd.socket rename to multipathd/multipathd.socket.in index 6a62f5f..c0e86c3 100644 --- a/multipathd/multipathd.socket +++ b/multipathd/multipathd.socket.in @@ -7,7 +7,7 @@ ConditionVirtualization=!container Before=sockets.target [Socket] -ListenStream=@/org/kernel/linux/storage/multipathd +ListenStream=@MPATH_SOCKET@ [Install] # Socket activation for multipathd is disabled by default. From patchwork Fri Feb 14 22:10:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975673 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A6C41FC0EF for ; Fri, 14 Feb 2025 22:10:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571030; cv=none; b=VqFMdRIvVzLOEGUtkjc/92bGTQVVf9t2J5USIbg8hI8h0wJqwo0PPHLAfkJGqwdr02JsnbBUEsOMx5RGGRLOW1LFDJc0xO1JHvkFv/0IuBpaQWm/7Mb6Lt2XYspTzoZxV4il9XjS8yIU1U+ZSwPWJ7EwuTOtjriRHUrdCtiq5JI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571030; c=relaxed/simple; bh=bm9Kzd16pC2B9V7BvdDWRHLEPCLhUOf4OZrbihI+ZFo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WPqwEGveeS+tZZdUyVBsNEXy5KvHn7K/vdovzly0KgNQiynrPqVVdQMbEnF1k6ZZB4WoUD39dj3krJPkkwARzWQ7fDKyJHXMuvYIvWQ9BReHfBOL4uBo/rZqwbRM9Ni6ZLr30920gI2IpPk/t9ZIIquu0voh+nDi34NUl73pOA0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=XAW0zR8/; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="XAW0zR8/" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-ab7f2b3d563so449445766b.1 for ; Fri, 14 Feb 2025 14:10:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571026; x=1740175826; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PQoaQcQuNqZP44VAQcbs31kOA1Z5W8AtyFETAYOlwpo=; b=XAW0zR8/7TIvIhzLN1Ynle9w5sbH4BMX2JawQ4jUAbnY8TgG9O+xfx9yCIPbGRQgd1 FQ9BIU5aPiJJPo1Bg7ukc3iedlgTAbxjy/OcivlCXoRvYmCVBnTkJLjmGPK9ONNJlSHE BOydnxk/jc7Ynq3AK0GSGFIoj2HR/1L4SmUuwCANk4IKW5LUZgofX1Bl9FT0Iq7J4qeU +nS4PNWzXQAd45ynEHDZGFKE6vUGjenJ58SiEVIhV1XJ0Zd01uS1E6HIbZahytrHLeG5 Dc3t4KaApRz7aqbZSZxXMBJuxcppC4foyNcmHfeURk/Vr5SjazVj75Cd1zZheVfk7eq4 LXdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571026; x=1740175826; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PQoaQcQuNqZP44VAQcbs31kOA1Z5W8AtyFETAYOlwpo=; b=l0mSM3u20ogCVslT8X21vrmbno5ond5oN1HEgySuknmbfxFe1KJ1Ym7q8s4eYOLZ+e XofgTSxkBHAJkgyvjF9QBIJiQzUuHXnm5UFIfcIO//iiBQpUtCYSS5gF7jpaKB3Y0LBz BcaUV2i896mIcnN1/s5pIMadxDyxenQleaSnBwvHgfdug31uFtxFA1YJ9zAPZcaQTZks KDVamp5E4fTYU7JMK1PGbKtwXvICrmzRoQqD7/ySaibYCpOyDhlxnoiL53q4NTvkKJxk l9XIIMnf8T1nVspqjkC+6JodGALZMqoHM9d66OrcfWB4K7xZ4D3/yeRp1pvXUn+QXPiq E6sg== X-Forwarded-Encrypted: i=1; AJvYcCWAJozEszuXzR/jFYK7zsCRVJrYr2bmGVQ4RNChjb/XgDZh3W2RXdB5qbtoxP9orOng7ICd4Kd/BA==@lists.linux.dev X-Gm-Message-State: AOJu0YwceK/yuS916nLUtnxRlJdyy+3r/aO/PZSLmse6r+9PUdatJZjI FNYAfNxgwdLKTqSgBlGEHCxq3Wt1NWH/CGmOSn5C/FW1ZwLuk6sTxP4kTamRg9A= X-Gm-Gg: ASbGncuvpeJKaodYeqBHAC4O060sx268wIPgBrFW/q1dWa/YUXi6XEeO8+VslzYw/O8 ClzTvZI5Z/bzcbvwXd2KTqGxPgTtnpvPwjmmXlfbMeeIZ2RN+v9Hn0ImCpIUUJtjF+90yyiPCGd 33Ssje1JYNu18SuSxkKKnRfPbvWbfaw5r+YA1g90VPaGo79qxKzKdcHu4OCcfJeMs1VZDfTmF+p 5EE6CPuUh3th8/yXd9oxTEJL2F1PHcWnCNEe15vojL2SZzD946UXWxyOGBI7lh5skBHyQPshieZ RGQXlU+Rilc+RaOyGYfpKwjdqIACMpBq7pri2jkXfG0tbLLi7kqDekDyf2OAejR7UMyoftFWnI3 nkw== X-Google-Smtp-Source: AGHT+IE8mMkukwxvc+2R8qXEkziHchW5ziEoJIew594Jfi61vo/Dx5K4hzMNP4EHQkgf5TIieRrCTw== X-Received: by 2002:a17:907:1b23:b0:aab:c35e:509b with SMTP id a640c23a62f3a-abb70e435abmr83310566b.55.1739571026338; Fri, 14 Feb 2025 14:10:26 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba532594a0sm423089566b.68.2025.02.14.14.10.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:25 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 03/10] libmpathutil: add support for Unix pathname sockets Date: Fri, 14 Feb 2025 23:10:04 +0100 Message-ID: <20250214221011.136762-4-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Pathname sockets need to be world read/writable in order to allow regular users to read information from multipathd. Our SO_PEERCRED permission check will make sure that they can't make configuration changes. Also, SO_REUSEADDR doesn't work for pathname sockets as it does for abstract Unix sockets. A possibly pre-existing socket file must be removed before trying to recreate it. Signed-off-by: Martin Wilck --- libmpathutil/uxsock.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libmpathutil/uxsock.c b/libmpathutil/uxsock.c index 12c4608..889d7a1 100644 --- a/libmpathutil/uxsock.c +++ b/libmpathutil/uxsock.c @@ -62,6 +62,11 @@ int ux_socket_listen(const char *name) return fd; } #endif + + /* This is after the PID check, so unlinking should be fine */ + if (name[0] != '@' && unlink(name) == -1 && errno != ENOENT) + condlog(1, "Failed to unlink %s", name); + fd = socket(AF_LOCAL, SOCK_STREAM, 0); if (fd == -1) { condlog(3, "Couldn't create ux_socket, error %d", errno); @@ -75,6 +80,14 @@ int ux_socket_listen(const char *name) return -1; } + /* + * Socket needs to have rw permissions for everone. + * SO_PEERCRED makes sure that only root can modify things. + */ + if (name[0] != '@' && + chmod(name, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) == -1) + condlog(3, "failed to set permissions on %s: %s", name, strerror(errno)); + if (listen(fd, 10) == -1) { condlog(3, "Couldn't listen to ux_socket, error %d", errno); close(fd); From patchwork Fri Feb 14 22:10:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975674 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDAEF1DDA18 for ; Fri, 14 Feb 2025 22:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571031; cv=none; b=i8bQJXVA7bznBu+T0REdS9fHUgTL7AMz+o0BFsZdrSP5B3GBnMs6QMd4pfkM6B9YV7rywFyvvgv4lF9cuNT7lKr01fU+8OSPwY5kr63WaBXQ+jBCWbk+8uQPc55FcFYbMrYnjjpuqhEV1Vbg0ZJaf7csAv/dKce3dGx1nKdDZZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571031; c=relaxed/simple; bh=02Q5vcC8yncjuH+7aUMbNJAgYmJovhwuyhHk5iLg0UE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bNWXH9WrMJb8yRdXQYPBC5Hvx6DQ8/EvLUqPXOUfMGGnVyrfjbhnX3l7Gq7mClQOiyb7XAsHq3NJGBYSeb9rXbveDrMi6haDeyhI765K9OqRd0tebzhp5tMi+AZ4+EJ4EcoOWuAkooPj3hH/Qv7vsXu//BbKlx+D9gtHtYsBfSM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=d49BsT+J; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="d49BsT+J" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-aba868c6e88so129335366b.2 for ; Fri, 14 Feb 2025 14:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571028; x=1740175828; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9aMLz95gPZJZMD4V3ui2EqhPP7acemxgYeWutYWIT40=; b=d49BsT+JJpQauSFocI/X5/ZqORHb443Zh3/lijDFezFe7OqetZnVxmBZ8LkUv6MPKA /iJtZKsb133vBo6N5LrjklU6aBXxwNtIQgIDstEcxOcKDyxT+UrOAS0ILOQF/qKarnh7 EbAIDanVJsqDQ5+qI+MDDgqKkiHHvRUvZOxsCq2AitMRw3gTRBDNRIJGYyFJkNFlsMqa GU+t/howniKN3Cz4jSvGoQ79Z9+du5l3nVPan9dgIxLYWrPPVl8qBb9e7gCDX4njdRry OhVGv5NcpPEgx2bKt71vb6YYlSodNoad3JSrvyPaJZ9B8cqXjGwR8SxT47nKjgvMIDJ4 5PBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571028; x=1740175828; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9aMLz95gPZJZMD4V3ui2EqhPP7acemxgYeWutYWIT40=; b=d3YPXlW4ueb8bdW9h56u5gesTmG5RUP0W4ZSiswzRbKJY/+D7PJq2p73ENiBkWbzIZ 3XSoJy4AO+ML49IktHXqlrpGmni4cw03tG7YewdXS+XBBT+x8+eEcSB6xPHm3s/feDlD JI1Elvp1+cqmUkAfcPYORiAlvyf/pXRhHaXFGJXGY8kBAyeg5/jLfZIH+NvHw9KH7WGz +Jlm+A6CcRkepr0Nex1gdZftKVa2ViuurWclhMQZrVi1pCwfQyoPSU+A6crycFo1OQu2 ZiwBs8SQYvtAVnGCFRcTzhRbXw8uQesCdDQX7/KUuyHG1O0c0+jWu09xf1tr83Dp9A6R qHtw== X-Forwarded-Encrypted: i=1; AJvYcCWdaULZ45te0QISaGj5VmRJL4ZNCzglQYCxFHcW3xF98VoVMvUpiM88FA0AzXHLf0oTMAXW6oa4Iw==@lists.linux.dev X-Gm-Message-State: AOJu0YxSW8L4w7Wjd3wxnTHD14ZXf1Ns/5eX8Sn8zCc6eoQ44GFvIHXn J7OKBu1Ean2lGb7om/56UIGXFW9REU9VRtfqJmhAoNn9Oixo5wnrWZG3dAXaKPM= X-Gm-Gg: ASbGncvl4uMS6X8NsoSPlOn7ObIce/pDvmH4eSRhBP2qSAzaIPukI5+xr/84qHJWvF4 tDilfqtV0abi+vT3RDPKU4v1G/Z6jzcCiE1f2oDQgbuiegI8pTi+9hBd/a5xclDzMXeVpmmoqMW MRVzhybCmiprpgHJh9FBY8/5qM0vJiVPaPDu/Bcvf1Rzfp0qsz51s9hbkCXQcwd9XM6fhGyLvJN qPHkJwVPPl6thJj4zdfOl35DQJ9JYhRPFxoVDvx7iUBOPDzSU/lXBXqgT/ZvzXBx5sHt8Lrnm/p 0FuFmyWO+I+xRVphO7rtcQWI+CObnbR7JmZaT7wlIq4eXXr6oI7fmdF9yunsQ4tiAiFElyxsC7S Z8g== X-Google-Smtp-Source: AGHT+IHiZHM/leAXKrPNPQM2InkXXwkJkbj913Ij59l95Z0QajCicGoRspkQgECoWTKhLzVD7XcdiQ== X-Received: by 2002:a17:907:7706:b0:ab2:bd0b:acdf with SMTP id a640c23a62f3a-abb70de286amr68737166b.36.1739571027797; Fri, 14 Feb 2025 14:10:27 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba532322c4sm414479066b.34.2025.02.14.14.10.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:27 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 04/10] libmpathutil: move systemd_listen_fds() support into multipathd Date: Fri, 14 Feb 2025 23:10:05 +0100 Message-ID: <20250214221011.136762-5-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This feature is only used by multipathd. Signed-off-by: Martin Wilck Reviewed-by: Benjamin Marzinski --- libmpathutil/uxsock.c | 15 --------------- multipathd/main.c | 28 +++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/libmpathutil/uxsock.c b/libmpathutil/uxsock.c index 889d7a1..59c4717 100644 --- a/libmpathutil/uxsock.c +++ b/libmpathutil/uxsock.c @@ -46,23 +46,8 @@ int ux_socket_listen(const char *name) { int fd; size_t len; -#ifdef USE_SYSTEMD - int num; -#endif struct sockaddr_un addr; -#ifdef USE_SYSTEMD - num = sd_listen_fds(0); - if (num > 1) { - condlog(3, "sd_listen_fds returned %d fds", num); - return -1; - } else if (num == 1) { - fd = SD_LISTEN_FDS_START + 0; - condlog(3, "using fd %d from sd_listen_fds", fd); - return fd; - } -#endif - /* This is after the PID check, so unlinking should be fine */ if (name[0] != '@' && unlink(name) == -1 && errno != ENOENT) condlog(1, "Failed to unlink %s", name); diff --git a/multipathd/main.c b/multipathd/main.c index 52630f7..5455bdf 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1863,15 +1863,41 @@ uevqloop (void * ap) pthread_cleanup_pop(1); return NULL; } + +#ifdef USE_SYSTEMD +static int get_systemd_sockets(long *ux_sock) +{ + int num = sd_listen_fds(0); + + if (num > 1) { + condlog(3, "sd_listen_fds returned %d fds", num); + return -1; + } else if (num == 1) { + ux_sock[0] = SD_LISTEN_FDS_START + 0; + condlog(3, "using fd %ld from sd_listen_fds", ux_sock[0]); + } + return num; +} +#else +static int get_systemd_sockets(long *ux_sock __attribute__((unused))) +{ + return 0; +} +#endif + + static void * uxlsnrloop (void * ap) { long ux_sock; + int num; pthread_cleanup_push(rcu_unregister, NULL); rcu_register_thread(); - ux_sock = ux_socket_listen(DEFAULT_SOCKET); + num = get_systemd_sockets(&ux_sock); + if (num < 1) + ux_sock = ux_socket_listen(DEFAULT_SOCKET); if (ux_sock == -1) { condlog(1, "could not create uxsock: %d", errno); exit_daemon(); From patchwork Fri Feb 14 22:10:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975679 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A62F1FC10D for ; Fri, 14 Feb 2025 22:10:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571033; cv=none; b=f4K/OJ0s+yEOkMQEz3VM0r/BGn74FF+OWQJE0XRdDkyxSJsupmuiCKh1Bi17B9LVHYiZ0UouCzvGsu4zoZ3xWQ9zZLIpSHsOPzFAFyPaac2agSgxd3S4HKC66/HNV8wxXMZEMBrK3fddj/DhTneMoh8VlO4xZDZqEKqt6zalaMo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571033; c=relaxed/simple; bh=Na73xDahlZS1rxik68kyYK3WXihqieFSa2MmBb6Oyrw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FgHlTOZWUbO2hereMAezGj3ulEgLv6r6QZGhcEKhomX6GAcjItBgzwEEubK3WkXpSsVbYC1fdw1MXD08ftt5cEJIw02qXii2VOU/oN2+qnOij2lr5+AXHEXw1SS/92q89ixEwvEDM6F5QuJ2eVAH77xzeiojHtRgMvDUM0gCcBU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=dRADeHAU; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="dRADeHAU" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-aaecf50578eso518060566b.2 for ; Fri, 14 Feb 2025 14:10:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571029; x=1740175829; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gFeUl6XnfeilaPzet7d+57Sh+AWbFP2lvUy3EHTZr4o=; b=dRADeHAUeA7cMeNkY/uyjGCkRLt0cbE1LpOdbTqbaz7/15c8L1l4DGfZzqIKrY/pFd ZRvo7IjkkXH685RLYbiAEHhEEUAV41OZunsiroGgCeQVDGuwovlUk0vBYksjMxDiVQ2B YPqvpNXIBemJUA5YURS5a7fohm72sWFxpyBmGjdW7Hmq9ti2Svm1IvqwAcgvZ3+csv++ Ruvqoxl4uyow23yjeWQWQPa+OXIJ19pG8/HeYOkwGrFSfg2WFee0qwUM42Y2GSUCzcr6 q5RTw8iGOyhwE8pEcm997igqsmMw20rfCABdYWVowYgyjtcWd6tjwdLI7isv/o3y/jlp 2kpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571029; x=1740175829; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gFeUl6XnfeilaPzet7d+57Sh+AWbFP2lvUy3EHTZr4o=; b=aAQlZhJHQohQSuBFMxFPee2h7EzPL8Dsu8JAle1Eh8JRVxjUEb1eTcCW75YzUibhmj a7QqzcYS3qyYSfQsoa1eHsPiqPkFwEe27OBpqgpWwjDsY9zptJURiRejgIR0pIcLNYjW 3cVu9U8Xj4ON0uvzpgHC8+ZUcTRuMus4F4Phk9QMfifSCS2BZng9wMRLQwCPvsXJH9d3 Uu0d24556uQ1AxMU8NpoxYRJV1s2Vj62kkWTW+If/n1QAV4hhkjvDr556eNPpikZzkwV rrDD612Chs/5YfwxYRV87P6h/z2x8IuV2EwQeUJ9cy4ROkGckx0WYQB5OGo29Eap9QHM +y+A== X-Forwarded-Encrypted: i=1; AJvYcCVBb3DE+lEHlEFujabD726aheOG2AtteC8PZOM0pl+ze3wULP4FaEfC/X23HkEgZxeXaOJAFSdYkA==@lists.linux.dev X-Gm-Message-State: AOJu0YzqlzUh6j5Bga+0heik7ojP/f09EzYYv40JGpXZTB0S0OPBGq1N hUU3eFJVPdJwQ+hLQt8V6+o6BTA8TWFHOIzkpzB8DlZvPRurDFdhkxhgkdfA1jcngipIOFXYqfA P X-Gm-Gg: ASbGnctjoZv9fxtEEwU0JtThpDeoQDWTZD/eRcw174RIXSeEmX6t6o8gCP30fHNVmci KF2d6Pv8VdoJvsTSllXYmrnQi1cmcHlpg4UVTYnGMzBIJ6dKgw0KXBJp3UbkoPKDR6I4qfaiEZi +gRXv5fJubBlGuoxeSGEUjpFZnrqenStM6m9GhuIGbO6JSIT3mQkGbaFVtNSaaeEbvDM//wZkMy 5/I8HRl/fW7lKN5t3pdED7jeGvnlUyJWJX2qbgpfpFDVA+81r8i3RaohX7woW492Sxsfeeh3hdr PIZ3UdbHxuuLMDrAdby6b2Fh0D4eA3q89+48PKkITx8z5plpkZMvqNC5+5gwUYRFks4IF+f/zQl H2w== X-Google-Smtp-Source: AGHT+IEeeRUQaopyljr5P+Gv/45y/4bJWxckLM9UbPxmmU5ohiboiN1eWWLT50syCp/WNplXTPUQ0Q== X-Received: by 2002:a17:907:7742:b0:ab7:be81:894a with SMTP id a640c23a62f3a-abb7091f374mr59878266b.8.1739571029065; Fri, 14 Feb 2025 14:10:29 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba53231ddasm414940166b.36.2025.02.14.14.10.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:28 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 05/10] multipathd: make uxsock_listen() take a pointer to fd Date: Fri, 14 Feb 2025 23:10:06 +0100 Message-ID: <20250214221011.136762-6-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This prepares being able to pass multiple socket fds. Signed-off-by: Martin Wilck --- multipathd/main.c | 2 +- multipathd/uxlsnr.c | 11 ++++++++--- multipathd/uxlsnr.h | 3 +-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/multipathd/main.c b/multipathd/main.c index 5455bdf..602215c 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1924,7 +1924,7 @@ uxlsnrloop (void * ap) == DAEMON_CONFIGURE) handle_signals(false); - uxsock_listen(ux_sock, ap); + uxsock_listen(1, &ux_sock, ap); out_sock: pthread_cleanup_pop(1); /* uxsock_cleanup */ diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c index d74bb35..79e28e4 100644 --- a/multipathd/uxlsnr.c +++ b/multipathd/uxlsnr.c @@ -614,7 +614,7 @@ static void handle_client(struct client *c, struct vectors *vecs, short revents) /* * entry point */ -void *uxsock_listen(long ux_sock, void *trigger_data) +void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data) { sigset_t mask; int max_pfds = MIN_POLLS + POLLFDS_BASE; @@ -623,6 +623,11 @@ void *uxsock_listen(long ux_sock, void *trigger_data) struct watch_descriptors wds = { .conf_wd = -1, .dir_wd = -1, .mp_wd = -1, }; struct vectors *vecs = trigger_data; + if (n_socks != 1) { + condlog(0, "uxsock: no socket fds"); + exit_daemon(); + return NULL; + } condlog(3, "uxsock: startup listener"); polls = calloc(1, max_pfds * sizeof(*polls)); if (!polls) { @@ -673,7 +678,7 @@ void *uxsock_listen(long ux_sock, void *trigger_data) } } if (num_clients < MAX_CLIENTS) { - polls[POLLFD_UX].fd = ux_sock; + polls[POLLFD_UX].fd = ux_sock[0]; polls[POLLFD_UX].events = POLLIN; } else { /* @@ -767,7 +772,7 @@ void *uxsock_listen(long ux_sock, void *trigger_data) /* see if we got a new client */ if (polls[POLLFD_UX].revents & POLLIN) { - new_client(ux_sock); + new_client(ux_sock[0]); } /* handle inotify events on config files */ diff --git a/multipathd/uxlsnr.h b/multipathd/uxlsnr.h index a14a667..a331e23 100644 --- a/multipathd/uxlsnr.h +++ b/multipathd/uxlsnr.h @@ -5,7 +5,6 @@ bool waiting_clients(void); void uxsock_cleanup(void *arg); -void *uxsock_listen(long ux_sock, - void * trigger_data); +void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data); #endif From patchwork Fri Feb 14 22:10:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975680 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F3BEB1DDA18 for ; Fri, 14 Feb 2025 22:10:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571035; cv=none; b=eNgYux2GEu2yVHNis/Ps0sjXHfY49dmzsVrpqbPWb0Htw+U0tIabaUqrI/JSleW/b1jl4tQcke43Qqt3zGOLu5n6sviaFYPzIOTsNknySAOU8txFG1S5Nv2mF47l+JXp+apWLYEvCRgz/lSkJo0qs0gFKqe8OjwyCCG27Pi2yec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571035; c=relaxed/simple; bh=laFA1nGz9SmuMX0k1eLTe7OfygCzQdAeZPThcooYUWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KjIOf2K5lAV/sgtWUTIU9cRonCU8DjSDnig4BG8hofwWRGEtPD63VJinVao8mHp4WRwbw0zsKRSbBe1uRbNp7dGduT2gocvDWInljqlDbTGvDOcBafLANp7bGbtw+5Zam9k+JE8opXGuFIf4ufHqmg91rK+OMjzLUsmLowq7Fd0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=AJeDp2cC; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="AJeDp2cC" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-aaf3c3c104fso408015066b.1 for ; Fri, 14 Feb 2025 14:10:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571031; x=1740175831; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ej12EdUAK1b+uk+2L7lCdVv7GMqrT4vqoApBnP0pYnQ=; b=AJeDp2cCa2TXY76Oh/FAEBPc7kLfxbLdreuepj3KU0VOHiXx0a6tt6iXKv/cJ7MEa3 QFhf10hM73K9KV8TxMZXkSjvKSmqxyhDnSfSzaaf8fyXLj7WK+DWXp40J+kpJ+3Kt2xx Fe9au2a5nFqxa8MGUoLd2DCsQlumEE1P8sx/dZOqQMLIdiCYCg7INicj3WpsQ+l4lQSv aU0lrxpCBX03P7Xdb+OLadDmvvgedqFxYKjp0KkhoYm9/EbhBClyESCiqK38EHi3GDdp 4xmkbbS21fE86MEiHnI6VyLNdecYsFJUhQaJwN0WpIIEkhlSSgJPAC/pSKeq5Q/pvp6i zP1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571031; x=1740175831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ej12EdUAK1b+uk+2L7lCdVv7GMqrT4vqoApBnP0pYnQ=; b=qOBHAwA1lU0V1u/4IPkJGtobT8KcfJRfPyTqXP2OtpHoNugXTr/VckDB0at5lY2Byg dadLbaevUSoO3EWHInAAqB6dzcKoyWmBikgTd7ujNw9uV2hwZvq8YkA+I5wiz4O+HgSA tTK2d0huTlgn0DEvDiPxvx1TTT4Y24AkOESwzFLHD07fBPueJ/P2GYW6tzNJ/AaMI8gE x8DLTA/99cRTFepcDSjyV0cyJn6J0yCupCRmgZTYqMor8NTeB+VG//RF/n3ky2wf5TzX gTedRecgPvCbByRa6Yq/dmPDcImVKONuYjEc/W7+6JbIKW0xTkt7341KnMVC/rvNKI6Q hM7A== X-Forwarded-Encrypted: i=1; AJvYcCVxT/SaoiSPOZST4ZtZZMTAQ0MIcF5rRITPQ+lCdK6uLw7U8nJoCRQXeTGPHRE3OycddZZXxc24IQ==@lists.linux.dev X-Gm-Message-State: AOJu0YxBSqBRSLgiHcQOH/jgiBWER+Uau0UI4t/W1A/IPB2nmJBKtj9Q EZW72Xe4p+w39yf/1pdL4uJWP7teiUWDmkTkS3FUiPHQr/n2r9tzCwozaQDNq9k= X-Gm-Gg: ASbGncto6Z8QzzOO6kM7LpmUIWKvr930dDmFCHNQ6A9CFiR3qtjnr8IJD08mTEhgIx+ heg3tKu9U1YWm1HbRxWNpHEtRhJcch4bNC+TB9xTC72Eu6+wHVcNWqAQcHda2fJwSV7rGDbJcLH p/M7jigmvfTaDJ7PCsK0OFgumEq1hM5HYL2QnmWUrzJoOU7mJujkv9Tm49NFBVfnOZVoUiy89bq Ydp2hIMsVvxJI7Y33+5Q0qMYLcfzRZemm8V067b6OzkXKUcO9wfTstWC9K2rpdE4R6NCMuLJ/jb l3HByXk0ZFpAMllhkamPEVf8C0+IDgkePckNV2T2DAKkGa/oAEummL5YJTlauCz9oTqjubEJEfb /3Q== X-Google-Smtp-Source: AGHT+IE2vWcJPkjsJUcg6VKr4rTFaKINwpovQ4RCb/nrr7vz/Cfca13GLMjbq+ikEoip6suwCC6LVg== X-Received: by 2002:a17:906:3b56:b0:abb:4802:709e with SMTP id a640c23a62f3a-abb70d67bbdmr71652866b.42.1739571030858; Fri, 14 Feb 2025 14:10:30 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba533bce23sm411999166b.161.2025.02.14.14.10.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:29 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 06/10] multipathd: allow receiving two socket fds from systemd Date: Fri, 14 Feb 2025 23:10:07 +0100 Message-ID: <20250214221011.136762-7-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add another ListenStream directive in multipathd.socket for a Unix pathname socket. In multipathd, read both socket fds from systemd, and open both when they are defined. Signed-off-by: Martin Wilck --- Makefile.inc | 4 +++- multipathd/main.c | 18 ++++++++++++------ multipathd/multipathd.socket.in | 3 ++- multipathd/uxlsnr.c | 33 ++++++++++++++++++++++----------- 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/Makefile.inc b/Makefile.inc index 4015006..d0fecc3 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -80,6 +80,7 @@ kernel_incdir := /usr/include sysdir_bin := $(sys_execprefix)bin abstract_socket := @/org/kernel/linux/storage/multipathd +pathname_socket := /run/multipathd.socket ifeq ($(V),) Q := @ @@ -172,5 +173,6 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version) -e 's:@SYSDIR_BIN@:'$(sysdir_bin)': g' \ -e 's:@RUNTIME_DIR@:'$(runtimedir)':g' \ -e 's/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g' \ - -e 's,@MPATH_SOCKET@,'$(abstract_socket)',g' \ + -e 's,@ABSTRACT_SOCKET@,'$(abstract_socket)',g' \ + -e 's,@PATHNAME_SOCKET@,'$(pathname_socket)',g' \ $< >$@ diff --git a/multipathd/main.c b/multipathd/main.c index 602215c..ac204b2 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1869,9 +1869,13 @@ static int get_systemd_sockets(long *ux_sock) { int num = sd_listen_fds(0); - if (num > 1) { + if (num > 2) { condlog(3, "sd_listen_fds returned %d fds", num); return -1; + } else if (num == 2) { + ux_sock[0] = SD_LISTEN_FDS_START + 0; + ux_sock[1] = SD_LISTEN_FDS_START + 1; + condlog(3, "using fd %ld and %ld from sd_listen_fds", ux_sock[0], ux_sock[1]); } else if (num == 1) { ux_sock[0] = SD_LISTEN_FDS_START + 0; condlog(3, "using fd %ld from sd_listen_fds", ux_sock[0]); @@ -1889,16 +1893,18 @@ static int get_systemd_sockets(long *ux_sock __attribute__((unused))) static void * uxlsnrloop (void * ap) { - long ux_sock; + long ux_sock[2] = {-1, -1}; int num; pthread_cleanup_push(rcu_unregister, NULL); rcu_register_thread(); num = get_systemd_sockets(&ux_sock); - if (num < 1) - ux_sock = ux_socket_listen(DEFAULT_SOCKET); - if (ux_sock == -1) { + if (num < 1) { + ux_sock[0] = ux_socket_listen(DEFAULT_SOCKET); + num = 1; + } + if (ux_sock[0] == -1) { condlog(1, "could not create uxsock: %d", errno); exit_daemon(); goto out; @@ -1924,7 +1930,7 @@ uxlsnrloop (void * ap) == DAEMON_CONFIGURE) handle_signals(false); - uxsock_listen(1, &ux_sock, ap); + uxsock_listen(num, ux_sock, ap); out_sock: pthread_cleanup_pop(1); /* uxsock_cleanup */ diff --git a/multipathd/multipathd.socket.in b/multipathd/multipathd.socket.in index c0e86c3..11002fc 100644 --- a/multipathd/multipathd.socket.in +++ b/multipathd/multipathd.socket.in @@ -7,7 +7,8 @@ ConditionVirtualization=!container Before=sockets.target [Socket] -ListenStream=@MPATH_SOCKET@ +ListenStream=@ABSTRACT_SOCKET@ +ListenStream=@PATHNAME_SOCKET@ [Install] # Socket activation for multipathd is disabled by default. diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c index 79e28e4..aa6aae7 100644 --- a/multipathd/uxlsnr.c +++ b/multipathd/uxlsnr.c @@ -69,7 +69,8 @@ struct client { /* Indices for array of poll fds */ enum { - POLLFD_UX = 0, + POLLFD_UX1 = 0, + POLLFD_UX2, POLLFD_NOTIFY, POLLFD_IDLE, POLLFDS_BASE, @@ -164,9 +165,10 @@ void uxsock_cleanup(void *arg) { struct client *client_loop; struct client *client_tmp; - long ux_sock = (long)arg; + long *ux_sock = (long *)arg; - close(ux_sock); + close(ux_sock[0]); + close(ux_sock[1]); close(notify_fd); list_for_each_entry_safe(client_loop, client_tmp, &clients, node) { @@ -614,20 +616,24 @@ static void handle_client(struct client *c, struct vectors *vecs, short revents) /* * entry point */ -void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data) +void *uxsock_listen(int n_socks, long *ux_sock_in, void *trigger_data) { sigset_t mask; int max_pfds = MIN_POLLS + POLLFDS_BASE; + long ux_sock[2] = {-1, -1}; /* conf->sequence_nr will be 1 when uxsock_listen is first called */ unsigned int sequence_nr = 0; struct watch_descriptors wds = { .conf_wd = -1, .dir_wd = -1, .mp_wd = -1, }; struct vectors *vecs = trigger_data; - if (n_socks != 1) { - condlog(0, "uxsock: no socket fds"); + if (n_socks < 1 || n_socks > 2) { + condlog(0, "uxsock: unsupported number of socket fds"); exit_daemon(); return NULL; - } + } else if (n_socks == 2) + ux_sock[1] = ux_sock_in[1]; + ux_sock[0] = ux_sock_in[0]; + condlog(3, "uxsock: startup listener"); polls = calloc(1, max_pfds * sizeof(*polls)); if (!polls) { @@ -678,8 +684,10 @@ void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data) } } if (num_clients < MAX_CLIENTS) { - polls[POLLFD_UX].fd = ux_sock[0]; - polls[POLLFD_UX].events = POLLIN; + polls[POLLFD_UX1].fd = ux_sock[0]; + polls[POLLFD_UX1].events = POLLIN; + polls[POLLFD_UX2].fd = ux_sock[1]; + polls[POLLFD_UX2].events = POLLIN; } else { /* * New clients can't connect, num_clients won't grow @@ -687,7 +695,7 @@ void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data) */ condlog(1, "%s: max client connections reached, pausing polling", __func__); - polls[POLLFD_UX].fd = -1; + polls[POLLFD_UX1].fd = polls[POLLFD_UX2].fd = -1; } reset_watch(notify_fd, &wds, &sequence_nr); @@ -771,9 +779,12 @@ void *uxsock_listen(int n_socks, long *ux_sock, void *trigger_data) handle_signals(true); /* see if we got a new client */ - if (polls[POLLFD_UX].revents & POLLIN) { + if (polls[POLLFD_UX1].revents & POLLIN) { new_client(ux_sock[0]); } + if (polls[POLLFD_UX2].revents & POLLIN) { + new_client(ux_sock[1]); + } /* handle inotify events on config files */ if (polls[POLLFD_NOTIFY].revents & POLLIN) From patchwork Fri Feb 14 22:10:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975681 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B2C81FC10E for ; Fri, 14 Feb 2025 22:10:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571036; cv=none; b=P5ElV3MLI3h8/dZuboi3pn1v6eaOsjrTX07w+0P0pGA/RmlVxm7SirMEMwY/cvJR7/f0HjW7MSMABs3d6nOa3th77ehjJp5otdtNuZGyKSIOocUvcl6J/VWxJHW8s2BsMrpGY/Jx7ZWn/dAT4vd6p5/QYFDc7p8b6buJZBRivTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571036; c=relaxed/simple; bh=DYrMSk4AQU1u4X9YborFmHHmLE57qCojBRuK8ma87e4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LFieiWuDZAkD34rRdGMYV/oIgmXhMdcQFYk+yuo9qJc5Cx9xeU5RuB7UdJwwq8CikcPv97LzdIKbrv+yeKFEvS065r6sQttDDAdgRdTE4BwS8Svot6LQHbo1PCDAMWZi66XVwWDka4Yf/hMss/KWxrflaXOPWOQjUeiC0odocVw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=FvygshSH; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="FvygshSH" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-aaee2c5ee6eso428794566b.1 for ; Fri, 14 Feb 2025 14:10:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571033; x=1740175833; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=578YEZjvQAxwKHK6SmUl2Er8XRp1rjU3E8RBIObEcbQ=; b=FvygshSHoddJL69Bow2cYDMvzBJV1ADlM5KT6eVM3xDLY5wm1rh7Q2Fb7GrNrm1k/t 0++Rk/qf270u8ArM2YBWEK4opTNTjngT2zCZJLLb6ylHCUwIP2PjBTxxsI20JgpWpQV6 +7ryrPcAPdtdBewAGovG8hIY7tSpuXBEebKm5wRQutF1VV/vvWQRPbmRAto43mcjVd20 we5toadlAz2f+CrvgLihWQ7ZMhgx8k0d8Ul3zWVIDTr3Q0E7lL6zkHS6pghLsDsdaFSN gDd3fKfh1U1EhQ09x1TkH7BphYBPkPPuMzyDwgVd0vn1Y/n0K8oq3M4yvKc9NWmgy0g8 5aow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571033; x=1740175833; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=578YEZjvQAxwKHK6SmUl2Er8XRp1rjU3E8RBIObEcbQ=; b=i9soUMwvqTulQ4KfFRgKwFRW0NjVkYl8BqQ3VtHyNsPPzhNa3nswc6mR3QyGEBP3yl 22UT4V8afdAIV0OqElPX4q5Wwh804zaABUuc1X81IvE3TXWuN5JFJdWIW0m0wFHvWuWS ZWjA+Hg72wxevhr2pJIb5jUdGJm6yKPrWzwEuj8yAHcgx0BWTEcIUsVMeA0MWNA29Fm+ 3lzsEuIVS/SnVQHJk84SXq35tL1kWb64LOZ8DgUZX0X2mDdoieL0ryClakNrEGkTkxR6 iHXNU+qWvWdCcdeQwAjvy82cXGFrj56kgMWFJlrv8oK1ONRoDR5J5cdcvZYWj7a09JPx 2LNQ== X-Forwarded-Encrypted: i=1; AJvYcCVRstMnSqKc7JjGlGn2LjZ7Z2ylPM+Sj2y3CbuD3zAZHUVqDcahatuW4yLjVGEQzHWj5Ts1Z78uWA==@lists.linux.dev X-Gm-Message-State: AOJu0Yz0KvVi06oFqs+Oc7ZL6hENbu9s+U/I5Ol+qwzW2iUYq9KBT0+j Mo/kdqTQfaQykovu+XpJy8L9JmiwuqWYBHK1gaoAR3jTPfkyOocoxXix9PZr9ys= X-Gm-Gg: ASbGncuvSlXYVP7LUkCShDJpEbYAmf94DbafeWQq//1S0A8CO9pjqT5pvR7OuEFTjQQ h7Zvh6TiRjNbZcuTSScNcW0YocBr8jxvRT56o0pygK+j/VWFn/N164rkeDjJ9XDQkGyjPeKUMz3 3mBG5vASxKfymLCRiE9DzYhAAskmfcEtFevtEsOTpwXn8Pd4sEdDdLTam+GQGSG16Ms7e+ebu3k vyQqFP4+NuCm3Aebfc9KQjY5rD9XhTcmAZVnIT5XQE8WLjb7Q6Zixt3zt/VEsLbtuCeACP8LGJY yMwm8QXxoG8R/y1GInIJL8+FMI709Dv4r2bnDUH0rpjk/GddUTjRiM1NlmYAbG9aETnbTPSe4e2 CLw== X-Google-Smtp-Source: AGHT+IGtSvvU3m6U5nA6BfW0izenQ7l/evdQGm0vPKeoRw6c4PPouExRIwsjgBUgK62RjTmZQX68gA== X-Received: by 2002:a17:907:9802:b0:ab7:bcc0:9067 with SMTP id a640c23a62f3a-abb70dd72f8mr81775566b.40.1739571032498; Fri, 14 Feb 2025 14:10:32 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba53258215sm415720266b.53.2025.02.14.14.10.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:31 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 07/10] multipathd: listen on pathname and abstract socket by default Date: Fri, 14 Feb 2025 23:10:08 +0100 Message-ID: <20250214221011.136762-8-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Pass both ABSTRACT_SOCKET and PATHNAME_SOCKET to the compiler at build time, and listen on both sockets by default. Signed-off-by: Martin Wilck --- Makefile.inc | 2 +- libmpathcmd/mpath_cmd.c | 2 +- multipathd/main.c | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Makefile.inc b/Makefile.inc index d0fecc3..9e3dc46 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -118,7 +118,7 @@ CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \ -DRUNTIME_DIR=\"$(runtimedir)\" -DCONFIG_DIR=\"$(TGTDIR)$(configdir)\" \ -DDEFAULT_CONFIGFILE=\"$(TGTDIR)$(configfile)\" -DSTATE_DIR=\"$(TGTDIR)$(statedir)\" \ -DEXTRAVERSION=\"$(EXTRAVERSION)\" \ - -DDEFAULT_SOCKET=\"$(abstract_socket)\" \ + -DABSTRACT_SOCKET=\"$(abstract_socket)\" -DPATHNAME_SOCKET=\"$(pathname_socket)\" \ -DWSTRINGOP_TRUNCATION=$(if $(WSTRINGOP_TRUNCATION),1,0) \ -MMD -MP CFLAGS := -std=$(C_STD) $(CFLAGS) $(OPTFLAGS) $(WARNFLAGS) -pipe \ diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c index 5a39471..c7cf954 100644 --- a/libmpathcmd/mpath_cmd.c +++ b/libmpathcmd/mpath_cmd.c @@ -113,7 +113,7 @@ int mpath_connect__(int nonblocking) (void)fcntl(fd, F_SETFL, flags|O_NONBLOCK); } - len = mpath_fill_sockaddr__(&addr, DEFAULT_SOCKET); + len = mpath_fill_sockaddr__(&addr, ABSTRACT_SOCKET); if (connect(fd, (struct sockaddr *)&addr, len) == -1) { int err = errno; diff --git a/multipathd/main.c b/multipathd/main.c index ac204b2..b41c181 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1899,13 +1899,14 @@ uxlsnrloop (void * ap) pthread_cleanup_push(rcu_unregister, NULL); rcu_register_thread(); - num = get_systemd_sockets(&ux_sock); + num = get_systemd_sockets(ux_sock); if (num < 1) { - ux_sock[0] = ux_socket_listen(DEFAULT_SOCKET); - num = 1; + ux_sock[0] = ux_socket_listen(ABSTRACT_SOCKET); + ux_sock[1] = ux_socket_listen(PATHNAME_SOCKET); + num = 2; } - if (ux_sock[0] == -1) { - condlog(1, "could not create uxsock: %d", errno); + if (ux_sock[0] == -1 && ux_sock[1] == -1) { + condlog(1, "could not create sockets: %d", errno); exit_daemon(); goto out; } From patchwork Fri Feb 14 22:10:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975682 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F6301DC198 for ; Fri, 14 Feb 2025 22:10:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571038; cv=none; b=hGFrHlFCyFpdIp+jhCY7B2Ybe6RAaYRq7Wak0PF5Lex/oXRrnsnw2ezAkn5AxopOGiOCG4H7G9xffMEhSTahBIzblP4mdETzXefK4n11oxncjwUxRjrukyIZU+GRL4PTIMOLVPhBwui+1opz30coNnvGji6cf7uQlYGG2OUai2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571038; c=relaxed/simple; bh=Sgs7G2XbjhR17uH6if9QSsZzItfemXzPZt0IiWGNQWs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o59wqnDUb40dllMGvs8t3VqIeErC5chYUUDDjXqpmUIBPpocMBP8F4sq0VtKX9ExVcV5CbdPaZcgg+Gfjw9nvB9mBTmyb4WN5Grn5uto7ytpO/1hTZI02RSl1us42Dxo/Qi522skNQtwReSjeeBU6ptOl9fQAtkmbH7oVz1fkmc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=YoN0Gick; arc=none smtp.client-ip=209.85.208.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="YoN0Gick" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-5dedae49c63so2824002a12.0 for ; Fri, 14 Feb 2025 14:10:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571034; x=1740175834; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dTz2EEocUipq1j838IYHG+vuxnn0i4KvU6vOXOtzbBM=; b=YoN0Gickqo7XaWbe+iQdsBmwvZCMKpOkq+sR6+XoPuCiSLUn/BVbQb69bAnMb+ubrk qHmR+i/kyf2xM8bWa1agdgUnI6LgyVD2F+hBgde8zxQMxMKWKAIbMoBzJHgiXSu2VWcz 06lvUkzaKHHyGGoXzD5bEiqIFhx2O5cACFCG7y2iEq/U3urCLLv87LDQKFrdyInu1LdL miWSIP0vXbjXZ311wGOBtXRqjyt5Eu0FlN2ZUZjmSA1r80HzUlUDJAMn+z/YkKmI6Bbt SGmuYiBGXW70G6DywmG4YTDdD8ntWcR+TMSuiTq/Jqaqk0b+E7LkdTMGgc+fQZCD7VWr UnpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571034; x=1740175834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dTz2EEocUipq1j838IYHG+vuxnn0i4KvU6vOXOtzbBM=; b=vLZKPIZ5JT3dRDafrF1zClmTi0KSIn7sivbLrhsqA9M+xElQ0PsIfzbvRt6FoKxI1i qWCSZWRXtX7ZFJ7IbrxTgRBoqVY5Z2Q+UF4NvFSW1pBuQK+0k+myz406IpBLaiAij0Gp yHXHO/ArSNoN5Vnohk2PKJEby3BhHc0J1UM8nh6gVtXxvzwePWlZQZyPI0H7W0V5ypHK aQP5fofz9J8k9xZunUy7x1ldKh+wU9vAJitJttwuJfZiL5B8xsiKFHFEQDKhPCrxHDza ZukFOqadzCpotmpCyxpZI/5PfEZ/XpPoNoLg/fmKXUfHaQUh1SUudCaYc/7LvaaqCUSi ERvA== X-Forwarded-Encrypted: i=1; AJvYcCV71YxQXfp7+NZyTCnk3ZWUDCwAnFkmTUsCMEWKSi0QpxefLUidmx+JDJSsTaiKlYumytlYSIdnnw==@lists.linux.dev X-Gm-Message-State: AOJu0YyINTVMFrozsT9nPt6QPvmmzQ/WuMazKevBIYJb8fX1we7ghUGH uTAKbnRmv6d0Ih1kprITTZX2B/F6tzPYnPqgEcuSnPHXENbR4pV5OMkSxF2DzL0= X-Gm-Gg: ASbGncskNB2NcEcvQX9S3HKjXMQhzaj30pmnQEovmEG63yzce+poGvypUH1vVJtnBI2 WbxUPNZ8oBxD5ATXr6+MjMLLU+VfBiKyWd2pp1SSgT+TxAnU1exYEgbwClPIy9O4PoVm918V8si E/7E6+td50KTW9kyiNmi/dpJgdcM9DwO2pExc1yR/MkcXx3wQdnFzHPtBmR2N3VBywM1Z3wp7TO yDv7+s1+kKGe9I+1Pz4/cUsSFCVJaOz04qFhLZlcEKGboP9Ncy34wcIVoxP5yOe7MvBJKdkzyHY y2attIOSb/uWDN2y1mQz3/uxqHNpPp75pnvKC0Ek+rHtoNaRnxpOdUgnmJrKzkEjtmITHAQwVsS Umg== X-Google-Smtp-Source: AGHT+IGjL9y7SNiMgizSPC8SkyhY6UjgldTD8oCLSub80zJEiVdnB4CMIVgz8zsO71ce2WuulJ+2Pw== X-Received: by 2002:a05:6402:51ca:b0:5de:d313:d059 with SMTP id 4fb4d7f45d1cf-5e036112946mr1218070a12.18.1739571034274; Fri, 14 Feb 2025 14:10:34 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5dece270affsm3451038a12.54.2025.02.14.14.10.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:33 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 08/10] libmpathcmd: try both abstract and pathname sockets Date: Fri, 14 Feb 2025 23:10:09 +0100 Message-ID: <20250214221011.136762-9-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When connecting to the multipathd socket, try the pathname socket first, then the abstract socket. Fail only if both connection attempts fail. Signed-off-by: Martin Wilck --- libmpathcmd/mpath_cmd.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c index c7cf954..ba5bb31 100644 --- a/libmpathcmd/mpath_cmd.c +++ b/libmpathcmd/mpath_cmd.c @@ -102,7 +102,10 @@ int mpath_connect__(int nonblocking) size_t len; struct sockaddr_un addr; int flags = 0; + const char *names[2] = {PATHNAME_SOCKET, ABSTRACT_SOCKET}; + int name_idx = 0; +retry: fd = socket(AF_LOCAL, SOCK_STREAM, 0); if (fd == -1) return -1; @@ -113,13 +116,17 @@ int mpath_connect__(int nonblocking) (void)fcntl(fd, F_SETFL, flags|O_NONBLOCK); } - len = mpath_fill_sockaddr__(&addr, ABSTRACT_SOCKET); + len = mpath_fill_sockaddr__(&addr, names[name_idx]); if (connect(fd, (struct sockaddr *)&addr, len) == -1) { int err = errno; close(fd); - errno = err; - return -1; + if (err == ECONNREFUSED && ++name_idx == 1) + goto retry; + else { + errno = err; + return -1; + } } if (nonblocking && flags != -1) From patchwork Fri Feb 14 22:10:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975683 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC8CA1FBEBF for ; Fri, 14 Feb 2025 22:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571039; cv=none; b=Bm3c2kGMKhRXxYv+buoi2uEwuHeVm8F8Ko+hCB6XQrPtzVXGr25F46PDvDvVc+rNWfjVY9PTElKUlUQeG87gb1aHgSWXjCTeRH8+MT9SwxmZxgEdeCcGc4JN6Goctz7Foh/cCeSFYxTfyl7zyIFlWgjaCUkqIx0oGt2UAxfLzlE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571039; c=relaxed/simple; bh=2Y5F1cGXLU9v5N61M+fYZ4o7dw3NlqAfIAWeI03DRDE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KkyYxxYdlpJ9wIyISbzkOhZ/jsWeH6mqeBMeV5EWrWKFrwtR9+qT4TeUEYdki33kGIzA+pDjF+7gzxVk6Szk1527U6om49tcYHSOEpbWNRMZ8f8ZrqbaRMxWqkH87po3DvGh1mgKll+5w8+HH336brKA6J4gFWlMunz6NS4Brq4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=KDrNKWEq; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="KDrNKWEq" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5de63846e56so4744415a12.1 for ; Fri, 14 Feb 2025 14:10:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571036; x=1740175836; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CatvQEzHVoc8N6QoTtk8QoEkCaj+lbixe5m7NOS42o4=; b=KDrNKWEqfUr1bMuQidEw4CTiLbMgiJt2P2YDj01rveP+qyPkB8pbAGuJ/xVcFr5Pje IGOTO7wwNi+IvF8c769C3fatqiyikHzjvGJ+1lzjSkeAnVHKXao3aLRxWV4a1Gk+UQdv 4EKXSclNMGzF5ElL3MFDtrZIt+41Ju0p0WYIOSSbMn2D1CJanXi3UTQVRVtwb34Ugta0 YvhyQePt3bZ57dyObRckl2TTwcl5y/ARiJ1uVVp9SSQC2dKpjNmbqJnNftKDmHhgl4Tt aXEcwqnJNtxmYJttDlc82iacF3MLFnUaOfx6542M9sfd9JlV/Y4BwvPaLB6xHhSfyfwr WuSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571036; x=1740175836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CatvQEzHVoc8N6QoTtk8QoEkCaj+lbixe5m7NOS42o4=; b=p3pPgklP1+jgu1IzxzSMe/nRaRDtrVSsftPDg+0nwv2yzJ2eAALTjuRVL2O5f5b1Af HufFg3wgBPwaPFHJ2LbqcDnrYRNnkUaKoBZw4i9y67vvUSr6cm7Kpr0o+V2ZBI7QHjw1 V19r32lDtIqQ5CtdfThKs3O2K46DbVLxtZ+5ZfLsl9m466dXG5Ez2bG02JrB++CG4u+x mqUiz/9hR7gjbXdaDrB5kD1KRXYoiwpLbDnxfg7FkSPipeUaGfHEHbFw6J+BC5QG+vJ1 YY8vo9hJBFOBtrFw5KG4ie4XKWB39vr6PaoKKfxLQVm+bH/8hXR9ulXEfcTZTDtIByRQ Rj+g== X-Forwarded-Encrypted: i=1; AJvYcCUePk4OzjalXv7t7Q4wgTSOkDtcm1vqew/NOUxpFZjPtqbKbOxkpHz3z32Td/jb1hQFIcg1CqsIHQ==@lists.linux.dev X-Gm-Message-State: AOJu0Yy4GERqKCnIk5QbRk75q3GJKiEwcrQHp0ToUtsyruYJnBRziIq3 BNAtVHoslPQY3gZpVrZxsZXQxjyqOrJFUp9D3l/R24E23l5OlkZOPEb9q2hB/T0= X-Gm-Gg: ASbGncvT+xUWXRaVBqrz/hzmiOD25m2Rdz1/urDKEXv/yvst8u8SX4ZgjaTO9GJSilM A2ZUSbn0dMb7QekEsD3U0jup4Aj7DlUoggje1jYn2k6fI2jRaH4LGg+8xGE87eIw8vMKJExXnJt bA2LSLQB7+T+8lb64tjRGmSWipAkOpw6RQW7bWx6O8o3ZsFeGzeZTxW/GJ5C0uQm9UHDum8U31k psjFNwJcjbwtlnVy7TzbS57QdFsdeWwUEJTife/2E2YsNtp6JRdqWbMFK/q00wR+YfLnJHellUc fFgiUAsVrRsjJvqefHiXfKUDyxiM6mdae5pDTlc/hVO22/l5C7spdT79Laoa/kQxsEAwgLREFuP DTA== X-Google-Smtp-Source: AGHT+IFh4dR/V1DbrDmTE4vZgeiq41BniHpryRAOPlytwU2aeS5oO/t1Pgmt7k1VvrtCCUe6EJEF3w== X-Received: by 2002:a05:6402:5246:b0:5db:f5e9:6745 with SMTP id 4fb4d7f45d1cf-5e035f4cbcemr1163795a12.0.1739571035762; Fri, 14 Feb 2025 14:10:35 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5dece1c4483sm3522515a12.25.2025.02.14.14.10.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:35 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 09/10] libmpathcmd: honor MULTIPATH_SOCKET_NAME environment variable Date: Fri, 14 Feb 2025 23:10:10 +0100 Message-ID: <20250214221011.136762-10-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In systemd installments, users can already override the socket names that systemd listens on. With this patch, clients using libmpathcmd can be customized to use a non-standard socket by setting an environment variable. Signed-off-by: Martin Wilck --- libmpathcmd/mpath_cmd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libmpathcmd/mpath_cmd.c b/libmpathcmd/mpath_cmd.c index ba5bb31..405267f 100644 --- a/libmpathcmd/mpath_cmd.c +++ b/libmpathcmd/mpath_cmd.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -104,6 +105,7 @@ int mpath_connect__(int nonblocking) int flags = 0; const char *names[2] = {PATHNAME_SOCKET, ABSTRACT_SOCKET}; int name_idx = 0; + const char *env_name = getenv("MULTIPATH_SOCKET_NAME"), *name; retry: fd = socket(AF_LOCAL, SOCK_STREAM, 0); @@ -116,12 +118,13 @@ retry: (void)fcntl(fd, F_SETFL, flags|O_NONBLOCK); } - len = mpath_fill_sockaddr__(&addr, names[name_idx]); + name = env_name ? env_name : names[name_idx]; + len = mpath_fill_sockaddr__(&addr, name); if (connect(fd, (struct sockaddr *)&addr, len) == -1) { int err = errno; close(fd); - if (err == ECONNREFUSED && ++name_idx == 1) + if (name != env_name && err == ECONNREFUSED && ++name_idx == 1) goto retry; else { errno = err; From patchwork Fri Feb 14 22:10:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13975684 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 45E4A1DC198 for ; Fri, 14 Feb 2025 22:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571041; cv=none; b=rqfqTArdxLCXYeJnbPy/d50nmN3eMptiq70bavpJpubc1vG+ENzse03moMYphR67FMA2Z6KKB6md5KxDwcymFSp5Q4ksAWMnQhElrblgwyxns700hcknjMsLdPikMwvHqj+ggkR1Hs5+OX9EfOqDzSIiPc6tNqePb/qdPjWs62w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739571041; c=relaxed/simple; bh=BiJT/zyMDu3V0a9lldikzsslrZ6N5FEnN4xq+yQ5HfI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y8IBo4IaIurnaEx9BvyhN/7uX2k7t9WJrKqvxBtQpaR58ogxOlnc66Slx6+5dIrvfm5IoMdpvCq6SXVSZFrM36ibk+bgrlL6s3cdOE44QZp4deJgW+W2BqFCz4noU/VL0sFV5PemWrMptIjHr0JBq9PzAqvtmw5iOx0CPhrPYHc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=R08ukjsA; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="R08ukjsA" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5dedae49c63so2824059a12.0 for ; Fri, 14 Feb 2025 14:10:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1739571037; x=1740175837; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Y9PcQyACG+DZ1jHwA/dnCv9ZwRSyMPSmU5F9DkIUBpI=; b=R08ukjsA1gGQsT73/pWNnuo4NI/wvSLbuoljlNd3F9cp4j+u12dgm0SF5myacLapl8 Kr5CowNWMDczHb97yVYW5MxeM5a/pM8Jb4xfDYWG0H7yqbC2g2sPxIFCgs1PJhhJNo4X RXPzK2Lgn7DnKNNzp0k/0fGWei8IntVON2EOh2fCyuNXwjMwy2fKgcIV0RYV1wpeBu/O PQx3yQ3/W96tAQJ7UsyfhyLnNOpIGDIae60rNkvsAlWwx81MwNcUrAxqESo5sm1Bsd+r GFdqWhDhrjHtThjef/paG9tjP/siydIh3gR3TqJ147Z2x0hGoguf8K4W3keGPqSnWQM1 CA3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739571037; x=1740175837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y9PcQyACG+DZ1jHwA/dnCv9ZwRSyMPSmU5F9DkIUBpI=; b=qzQCzGx8+DDep6IdtO2K+N6n4HM7iiaV/H4TsRP9ISSy3TaWbtCxd5sKXvxLVIvQ9p cjpn2AbKT8qE4jrbF6XUbQlIH/Hra0ccEAfbpBkuUVFkJfptcw19bkzeTV2Uv96NhjAE baTN3WF82UgtWX4X96TLbqlrso4+oAkml52m1cAFjp4ijNHXOSfylN7H/OwTLC8sdxij kTgiN00ODsSLzNGG2jDYaeUSS2Lj0I5UAjFSupdTJTqtc97WvGyuxCBHyUTQy3WhHsiB nJu/GZSFJqXf37kqMMJaCiPdAvMSsfHKmbuStL7romVXhlwQonvHIL/I+8LmUuYAkBA/ qOSg== X-Forwarded-Encrypted: i=1; AJvYcCWXJJaGTUMwu5hbYMIBtZCOfMCuSVBlOQUYlWIN7QKsjzlUhyrmIngZDJtmsPbxwMXtFZexvX4+jQ==@lists.linux.dev X-Gm-Message-State: AOJu0YzzBv+hbwYKgiNBrTKjOqisRmL5mdOLcrEFmjizXsoBdGmBRhJK 13quyVxQarXAPM+JXk7Uzs49x1QnDhmcEEBzWzAFv7AVP18hW8B4Y/JjQgDRRcg= X-Gm-Gg: ASbGncs4e9AmRzvh9b1YdLWdxtBzJHXnCprxDQYuRAsRWvIFuoAG63DQV8ZG1WZK7a0 mP6WYa5XCzxLW5wTBCmv2eLLNz3PdQJ8m2qgiJsc3ZAhIAeGnNsx8jAimAYSxpE/RmoNLo1f9tC 6wG6alcQfTizD6BRNoLgU50PspgE1iDSJ88TZhPvIvRFsJB7uFMjyDEA7Gff+GPJC6D4GCd8XUl TyPNM+ab9c5P7jH/s0nspioy/BsT3LPvSCHPO5XNxK/fluM2dob+Gssx95tDYJ2/iy2nykHrhwx J/sb/DqiU413S6fjjlkhNVq0ioVtgPATiuGqYlBqnOb2c4JvAmc+iv9no6mLye4APPfOSSrilbh oUg== X-Google-Smtp-Source: AGHT+IHaSPk2kFKKXBl/y2CGsWQzpoi1HB2jnhkjaTkm/j6uk7h8K5yTK2b2dUjYbXhKa7z5Vomp5Q== X-Received: by 2002:a17:907:da4:b0:ab7:6d59:3b4c with SMTP id a640c23a62f3a-abb70aa65bcmr57355166b.21.1739571037273; Fri, 14 Feb 2025 14:10:37 -0800 (PST) Received: from localhost (p200300de37464600ac00037825cc9f2c.dip0.t-ipconnect.de. [2003:de:3746:4600:ac00:378:25cc:9f2c]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-aba53376adcsm417678366b.95.2025.02.14.14.10.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Feb 2025 14:10:36 -0800 (PST) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: Alice Frosi , Paolo Bonzini , Martin Wilck , dm-devel@lists.linux.dev Subject: [PATCH v3 10/10] multipathd: honor MULTIPATH_SOCKET_NAME environment variable Date: Fri, 14 Feb 2025 23:10:11 +0100 Message-ID: <20250214221011.136762-11-mwilck@suse.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250214221011.136762-1-mwilck@suse.com> References: <20250214221011.136762-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 If multipathd is started via socket activation, it will obtain sockets from systemd. The names of these sockets, and whether the abstract and / or pathname socket is created, is configurable in the systemd unit file. Add support for passing a socket name via the environment, so that it's possible to configure the socket name at runtime even without socket activation. In this case, only this single socket will be created. If creating the socket fails, multipathd startup will fail, too. Signed-off-by: Martin Wilck --- multipathd/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/multipathd/main.c b/multipathd/main.c index b41c181..3468b21 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1895,11 +1895,16 @@ uxlsnrloop (void * ap) { long ux_sock[2] = {-1, -1}; int num; + const char *env_name = getenv("MULTIPATH_SOCKET_NAME"); pthread_cleanup_push(rcu_unregister, NULL); rcu_register_thread(); num = get_systemd_sockets(ux_sock); + if (num < 1 && env_name != NULL) { + ux_sock[0] = ux_socket_listen(env_name); + num = 1; + } if (num < 1) { ux_sock[0] = ux_socket_listen(ABSTRACT_SOCKET); ux_sock[1] = ux_socket_listen(PATHNAME_SOCKET);