From patchwork Tue Jul 9 21:38:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728534 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (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 BD84C182A5B for ; Tue, 9 Jul 2024 21:39:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561191; cv=none; b=nsRP4fTlSOfGk21r1PtUgGYDTe7iCMgKgMIqppe35WOboC/XOVkedwMDHoQp8+bUdluml3igx2ovSNQWlCUk+C8NzQuynxLeR2kcT/iSLZHWVfdgNB8LmHQYchi74uczVxm8Z9NOvnkk2v2M0saWM1eelPp442pzjDRNghJUiLc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561191; c=relaxed/simple; bh=5NuwC02vKg35zEqPIbpUxzIHZqWrqaXVkG+0U7nlYjk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KHrcLiyvnY0YnaaC1Uk/x8iVmzu0gq/ZKlt+bwrUWk3LNqxut1Ga8Usgwfcb7Aef27dkYCrMI95ocDha5T/pJrYFpy9woI4bpslAnq/AHrvOS6DJy4+pZtJArYqUmBfFdPEsxTaswa1IgDmDx9DYljxCsZjTppAxU207G7cXr2c= 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=SXY8oTpt; arc=none smtp.client-ip=209.85.208.52 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="SXY8oTpt" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-58bac81f40bso7513834a12.1 for ; Tue, 09 Jul 2024 14:39:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561187; x=1721165987; 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=zDpgdxQTbPJ5rdGlBdKaz6zmfU8E+UbT1GSD1jQiPeU=; b=SXY8oTpteCycII8RsycKPlZ+ACc41crxtDtbatqYTsQyVczBHtZyq/FR2FbXm6+sQb H4Tv/NVr77WKECslpnT2y6LYuLtf1c1ahz7rYIMItZeO1GnNRapVqLDFYX+3S06dTGYH sgjkhssSlhHaKPJnRZPk145TTrl4knmVcZ6LwgNdUN04UzMv60IKIQTs71eWBWRZHaaz bg+25mxQBEfa5S7z0jvATzpGvIdgYjNrfpoFlf+/O983j/FI4OVqPBU4v7QHfPl7/Pii 9HwHMy/rQjyT4lwi6cYwaV7GslPwEOMNBdkNo3D40VXNrc24PIRe0ApYcZ8HF8dtw60W ypwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561187; x=1721165987; 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=zDpgdxQTbPJ5rdGlBdKaz6zmfU8E+UbT1GSD1jQiPeU=; b=U18exCPtRVAZmnUk/EGlgbdYn/wGvfCMigDVzCeTks2YEY293TLVVaCQJwZppTvduZ Oc/+yMDfMfMLHAkPjzSCCfE+mZAsmzHYBiv9tgHY+dt7kyHMI/lG33GFOPVHGyjzLXzq IwgIjABfo0gZTE697/PeqzvcY2UA11KDqAd3Uo1IzLtnaxtWfFXRJ8L7SE5yZ2jeQ2tC rQnCMAqtVF9PDz3VhuOERrJixbSA0Q3hWCRAxlvcXL2iAelIxZRecaLdpEmYvXl9D9oC U4gjXsiaNUXtw7iBrO0101gIPBDmH1bAHQ39x9IOZN3Xzbnv/aJRrnZXXCXGNbrKViv/ hLow== X-Gm-Message-State: AOJu0YwPIWDP1G1xzqJHL8F2ASNcWBIUsa/Dva1R2A3c66S+TOjY+2wy gwoGXBMphTa6HnWUoktFSgX373PIezxnLe3Af9k6ejhr23MhGT5j7LK0jGWn304a2PtendmjqQg N X-Google-Smtp-Source: AGHT+IEWnEYFyWiAjoCHDwLAryYYgh7bAHGGAjsFuXP8mYZK2EQLeElZXrrVsx11szq0LPf5HelnOw== X-Received: by 2002:a17:906:2342:b0:a77:e1fb:7dec with SMTP id a640c23a62f3a-a780b6b316dmr212995866b.17.1720561186853; Tue, 09 Jul 2024 14:39:46 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bc4e80c6sm1500983a12.46.2024.07.09.14.39.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:46 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 01/44] multipath-tools CI: more fixes for arm/v7 Date: Tue, 9 Jul 2024 23:38:52 +0200 Message-ID: <20240709213935.177028-2-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The previous fix for the CI under arm/v7 was incomplete, and actually broke the tests under openSUSE Tumbleweed. Closer examination showed that the issues were caused by Debian's move to 64bit time_t on some 32 bit architectures [1][2]. This effort causes _TIME_BITS=64 to be set by gcc internally, and introduces symbol redirections for libaio [3], on Debian with gcc 13 and newer only. Fix the conditions for symbol remappings in wrap64.h. [1] https://wiki.debian.org/ReleaseGoals/64bit-time [2] https://salsa.debian.org/toolchain-team/gcc/-/commit/d82fb8a8ab7b84f61fb8290a2c3aa2e3f54e7b8a [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1062218 Fixes: 6a7524a ("multipath-tools tests: fix CI failures on arm/v7 with glibc 2.37") Signed-off-by: Martin Wilck --- tests/wrap64.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/wrap64.h b/tests/wrap64.h index 7e43420..890fae8 100644 --- a/tests/wrap64.h +++ b/tests/wrap64.h @@ -47,7 +47,8 @@ * fcntl() needs special treatment; fcntl64() has been introduced in 2.28. * https://savannah.gnu.org/forum/forum.php?forum_id=9205 */ -#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 37) && defined(__arm__) && __ARM_ARCH == 7 +#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 34) && __BITS_PER_LONG == 32 \ + && defined(_TIME_BITS) && _TIME_BITS == 64 #define WRAP_FCNTL_NAME __fcntl_time64 #elif defined(__GLIBC__) && __GLIBC_PREREQ(2, 28) #define WRAP_FCNTL_NAME WRAP_NAME(fcntl) @@ -60,7 +61,8 @@ /* * glibc 2.37 uses __ioctl_time64 for ioctl */ -#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 37) && defined(__arm__) && __ARM_ARCH == 7 +#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 34) && __BITS_PER_LONG == 32 \ + && defined(_TIME_BITS) && _TIME_BITS == 64 #define WRAP_IOCTL_NAME __ioctl_time64 #else #define WRAP_IOCTL_NAME ioctl @@ -68,7 +70,8 @@ #define WRAP_IOCTL CONCAT2(__wrap_, WRAP_IOCTL_NAME) #define REAL_IOCTL CONCAT2(__real_, WRAP_IOCTL_NAME) -#if defined(__NR_io_pgetevents) && __BITS_PER_LONG == 32 && defined(_TIME_BITS) && _TIME_BITS == 64 +#if defined(__GLIBC__) && defined(LIBAIO_REDIRECT) && __BITS_PER_LONG == 32 \ + && defined(_TIME_BITS) && _TIME_BITS == 64 #define WRAP_IO_GETEVENTS_NAME io_getevents_time64 #else #define WRAP_IO_GETEVENTS_NAME io_getevents From patchwork Tue Jul 9 21:38:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728535 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 B03CC182A62 for ; Tue, 9 Jul 2024 21:39:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561192; cv=none; b=sMZ0QxQr/dqqYXsCQc8XuTkIY7MLwoizsXsY/BHQ4aXJH5hXSgu2jMtqM+OZvfOVwQg0Xkw2sjMRRkhObFn0acNqRId2/giDt+PyBYYVIGztssJcDQuDJ330toMDbkjwv7VeFU7YF4G3oRamWmg2cBWUnSIm8is8yilz5qc8py4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561192; c=relaxed/simple; bh=98RJUg6RALMHNnjaH+Wwaq/CmysC7G/SUnRyzMFF/QM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rKspb7LQuK1hNVjGz4ir8t5xzcEo/f0SrignXYCuv179Te73bhxRwKl9KzonetzvOZ/pnnKSKYaxr+IfzNk96iCyzH+MCrQKO0Dw/EDaVdvS+hXIE5Pk0JhP9I3afPppZx1UQ157KV/OBSPyYdve88aJ9ksOw6sT31bciazhOd4= 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=OcVO7UmD; arc=none smtp.client-ip=209.85.208.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="OcVO7UmD" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-58bac81f3f9so7432847a12.2 for ; Tue, 09 Jul 2024 14:39:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561188; x=1721165988; 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=0aDf0zHLMivaEgNNhVaRC5STQ/gEL1xdQciCK9cWy1c=; b=OcVO7UmDOMZUy7nP/DNWaPtH0bdjB2OE1SAJMe6gbm2t05JLCraj7FnroreQND/qNp uqHbkZknSDcv2cE6LXSPm7Idfo4XVVJc7NkLo/NMj3zu/jK8+mqf7MD/y6GDMdvn9N1x Hl06DIuJz3XBjP5Ljwwm22yKFvF84y5ctPHgIjRgqyKO8GHiDdlX+myW+2lzhAuygBvQ b5g6e5SSqbmSDegLGHkS+wRbq/nvW7CzGKKhUXfcj+V6k4au84Xko14nUSwsE9ddh1qX d1FVBcnXoXqaJWx22AdaUyHNRPkVv+utIP1Y23KDDCgk7q8pgX3QHgbfCDm+eMQTpsXP jeWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561188; x=1721165988; 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=0aDf0zHLMivaEgNNhVaRC5STQ/gEL1xdQciCK9cWy1c=; b=RIdt62inRhqXCTGbWGakwA6ui3qN/GdEliBd9w7rHulYbwQ1Mfe8Z7+aUg8jqKWoMr 7+9djbBLXwsYdcH8GsD9OaGwKf8SmCZpLOzjASad341Te+p2IoozgVhOCXsHU0Sv8WLd r9SFVJA3AVlWbpZpLF80CmZNtG9xGYI0lvlyXQfGC2P6sGGAK4gPEjl2GkgzEQDBsb/t 6CsgBIjAATZHW3aHjsknUn2da7EdCry6dsglWZ4wZRWQuXPGDh3pFrMpc18SjHs3fKOn RY8gIiKlYK5ZBKPK/uWntYOI0quUDYaUK97PR5f50EOz7mrJc3MOFlXhsW9ZqefjzY3L Uzng== X-Gm-Message-State: AOJu0Ywf7yEeEZtLHdHjlFRti9KC8PmhbutcyRiuRWUBLPz2rfXmMpd1 iihEUMrG9YsZQpEk+9QD1SWQg7DT+7F+Le4PU5+se5l1DTVT6zDPs0qmLxjyZ4k= X-Google-Smtp-Source: AGHT+IFXC4wYHzT8OKzpO6g4X6QIuY8+FkzYzLKdt3un9BcHy5TpvFpHKzpX4q/8NTWi8jvO2XK6Sw== X-Received: by 2002:a05:6402:28a5:b0:58c:804a:6f0a with SMTP id 4fb4d7f45d1cf-594ba59f87emr2031408a12.19.1720561187716; Tue, 09 Jul 2024 14:39:47 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594b8d6cdffsm1497067a12.0.2024.07.09.14.39.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:47 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 02/44] multipath-tools CI: fix dmevents test for Debian Sid, arm/v7 Date: Tue, 9 Jul 2024 23:38:53 +0200 Message-ID: <20240709213935.177028-3-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Same fix as in 6a7524a ("multipath-tools tests: fix CI failures on arm/v7 with glibc 2.37"). Signed-off-by: Martin Wilck --- tests/dmevents.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/tests/dmevents.c b/tests/dmevents.c index 395b16d..668e6d2 100644 --- a/tests/dmevents.c +++ b/tests/dmevents.c @@ -253,8 +253,9 @@ int __wrap_dm_geteventnr(const char *name) return -1; } -int __wrap_ioctl(int fd, unsigned long request, void *argp) +int WRAP_IOCTL(int fd, unsigned long request, void *argp) { + condlog(1, "%s %ld", __func__, request); assert_int_equal(fd, waiter->fd); assert_int_equal(request, DM_DEV_ARM_POLL); return mock_type(int); @@ -675,7 +676,7 @@ static void test_dmevent_loop_bad1(void **state) skip(); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, -1); + wrap_will_return(WRAP_IOCTL, -1); assert_int_equal(dmevent_loop(), 1); dev_evt = find_dmevents("foo"); assert_ptr_not_equal(dev_evt, NULL); @@ -697,7 +698,7 @@ static void test_dmevent_loop_bad2(void **state) skip(); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); will_return(__wrap_libmp_dm_task_create, NULL); assert_int_equal(dmevent_loop(), 1); dev_evt = find_dmevents("foo"); @@ -721,9 +722,8 @@ static void test_dmevent_loop_good0(void **state) remove_all_dm_device_events(); unwatch_all_dmevents(); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); assert_int_equal(dmevent_loop(), 1); @@ -757,9 +757,8 @@ static void test_dmevent_loop_good1(void **state) assert_int_equal(add_dm_device_event("foo", 1, 6), 0); assert_int_equal(remove_dm_device_event("xyzzy"), 0); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); expect_string(__wrap_update_multipath, mapname, "foo"); @@ -805,9 +804,8 @@ static void test_dmevent_loop_good2(void **state) assert_int_equal(watch_dmevents("baz"), 0); assert_int_equal(add_dm_device_event("baz", 1, 14), 0); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); expect_string(__wrap_update_multipath, mapname, "bar"); @@ -849,9 +847,8 @@ static void test_dmevent_loop_good3(void **state) assert_int_equal(remove_dm_device_event("foo"), 0); unwatch_dmevents("bar"); will_return(__wrap_poll, 1); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); expect_string(__wrap_remove_map_by_alias, alias, "foo"); @@ -874,7 +871,7 @@ static void test_arm_poll(void **state) struct test_data *datap = (struct test_data *)(*state); if (datap == NULL) skip(); - will_return(__wrap_ioctl, 0); + wrap_will_return(WRAP_IOCTL, 0); assert_int_equal(arm_dm_event_poll(waiter->fd), 0); } From patchwork Tue Jul 9 21:38:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728537 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 84ACB182A6D for ; Tue, 9 Jul 2024 21:39:50 +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=1720561193; cv=none; b=a01r78jWb2dqRc8+S3Xsg9fPI0dySyc6dKYDClae5AzObfJicDaejEzNzYD8NKxxR4Cf2LpYwppZ9sMksuYKv2XDzml1ak1YaryOaSVrCBEpcJBWVoD6eeWtTazoOVIsDmFH7WX1z45VrTjFiOvNnq+tjBRS0qqfAgLvxZixbTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561193; c=relaxed/simple; bh=AdVGCKgqJTLvdGKIAR/DAsycf4+aiQXifD2mSgKNkBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lz8wA8ymlUOzkomn+lJ+2dVP06ikvbO1YT7x4Ho4hJggQIV4NCzCiMa+cBjYuq1qPy7v99XkARodqq5fEYWhvPsoN+ZLWetG/Qe+Jk049t5DSL4cByyOFTQACJOu6BTXvZqzRF1zJTklpIHwwTvzfYmaIStcgzu6f1QYzVVWXNI= 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=VwhKeRMz; 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="VwhKeRMz" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a77d876273dso288110566b.0 for ; Tue, 09 Jul 2024 14:39:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561189; x=1721165989; 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=622zwGNxqYN2mmw46fNW/mrONf95+0t+kRIGzrM4Ay4=; b=VwhKeRMzKXXl9uyefrvZZ8nObXOo6BiF80ycHIr6u1GxswyIcsK+rNbWGBcNOFVh4v eTSnWfRQGOiGMePp3kEjnHrGIpNy7A7PPXObnIVEVigMmPSs8WJkGRhd/De85QTWC91U Nm1SIsS2jEMNItcfTl0k06YfwCB6VQfLT3OCYZfUL2gQ3R5E2OCGgXNLuYZDvxqtN9iE lpfjBgRGhUULFR/8X4n0Imkvp67/bWAeFPp1lKioFv7Dudy8ynh8XvDaF323tsZ2PYvk +i8iq6uOiIhddaWpaHgwTySr4AJwA4yBC5w/TLfbUIfrSsWaUHSmINiBnqUH5Abw0V3Y tvdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561189; x=1721165989; 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=622zwGNxqYN2mmw46fNW/mrONf95+0t+kRIGzrM4Ay4=; b=D2E1t1ZNjZcd1HQsigPRuwVohT70JMWeNtHOY/VTESzi30tao+M5G6+c21/wjoCvIr Nt2ZP4HfT2Ml42wGXg52UB3BuGv0hd6ce/306qDwxO8TSQfYZ9rZZzKwQqvOCNvzcPZh 2Vp+8qFkMoaYtETX2DGzKIEjOhxy1pwNte4yUkYVIdFh30Rid6jgbHNvkUdrLnerI/Cr a9+khh93s1DEDwlNLrzv0V7Uw7z43ccXwmZhWE98FblOvl84QW4DgClsF74akKQbBiWo yqGaElB0xkDld0xMzXTfX4vp1ZnB3EoCORortKOyhIFu6um9TerHv175xa4Yp69XgvIM 6inw== X-Gm-Message-State: AOJu0YxFnWEVmSzKdOzcJWwUwfAzO14MdY+uJ4EBJ70CpY5lzLsf/yAI 3bscCijP0VDRZhD8QrjIEKk0X0IRuqBsgTrQg+Y++++Co7InmcgKPbJq9XzkgJekjfe2DsnoXAX Q X-Google-Smtp-Source: AGHT+IGTYiY8LT4b9TVRrLvFYq2cFA1wdujo+U6GRWH0/wpEvbEZISgoDzGQloB6ozsdCWmyRoeLXQ== X-Received: by 2002:a05:6402:2790:b0:57d:496:209a with SMTP id 4fb4d7f45d1cf-594bab80aaamr3721840a12.6.1720561188668; Tue, 09 Jul 2024 14:39:48 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bda30823sm1487926a12.83.2024.07.09.14.39.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:48 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 03/44] create-config.mk: use printf instead of /bin/echo Date: Tue, 9 Jul 2024 23:38:54 +0200 Message-ID: <20240709213935.177028-4-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The behavior of "echo -e" is not part of the POSIY standard and different shells handle it differently. OTOH, /bin/echo isn't necessarily available, either. Use printf instead, which is part of POSIX. Signed-off-by: Martin Wilck --- create-config.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/create-config.mk b/create-config.mk index 4d318b9..0abbb3a 100644 --- a/create-config.mk +++ b/create-config.mk @@ -147,11 +147,11 @@ TEST_CC_OPTION = $(shell \ # On some distros (e.g. Debian Buster) it will be falsely reported as supported # but it doesn't seem to make a difference wrt the compilation result. FORTIFY_OPT := $(shell \ - if /bin/echo -e '$(__HASH__)include \nint main(void) { return 0; }' | \ + if printf '$(__HASH__)include \nint main(void) { return 0; }\n' | \ $(CC) -o /dev/null $(OPTFLAGS) -c -Werror -D_FORTIFY_SOURCE=3 -xc - 2>/dev/null; \ then \ echo "-D_FORTIFY_SOURCE=3"; \ - elif /bin/echo -e '$(__HASH__)include \nint main(void) { return 0; }' | \ + elif printf '$(__HASH__)include \nint main(void) { return 0; }\n' | \ $(CC) -o /dev/null $(OPTFLAGS) -c -Werror -D_FORTIFY_SOURCE=2 -xc - 2>/dev/null; \ then \ echo "-D_FORTIFY_SOURCE=2"; \ From patchwork Tue Jul 9 21:38:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728536 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 41E37185623 for ; Tue, 9 Jul 2024 21:39:51 +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=1720561193; cv=none; b=SffX0TkixSKZZMeDBMe3Z0rBonnxVp9M3Ed0BoCB2pULkcIb0LEfXpp1Z+owO/ZStTiP4GZmB7cGad8I+cQsiVNNA8/WZ3ezsp3v5oqHPuJ1x5cVkn6IzlAem1kNODZCBTIV4MZuz5O6lWDMr3J7jOYsCSJc96PRYExJlqcpQZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561193; c=relaxed/simple; bh=Hw5JJ1TXNEfdnTdUN9EFk7iUIaGZnO8yFZAXEqASdiw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZE6iw0mqgQjZfu0o+FxwJnbqX/BSZFapfK3WvxFL91ULxRCa/0Ee28BWpTzO+hH2bKodtq1h4ey4klKSCpH1NlfQEc872edHhkS6F18t33VHbJE+Cs5HXdN182zeUKDJ1GySuevWg0SrjMRBzqf65iF5sLD6yCXCZYgRAe4HpdI= 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=QIHsgnVG; 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="QIHsgnVG" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a77e392f59fso418487266b.1 for ; Tue, 09 Jul 2024 14:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561190; x=1721165990; 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=JrHXXV8VLJpJ9eIxh5MIvTS6KDKkL9E5B0nBHXrnN2w=; b=QIHsgnVGFzBoMUxpjwt3B0NmMarpTBzciDn6STVN71VXRdEysCTAGT44/msCJ4Mg3r Zil5JxCv6fOEVoSDA1kAXGwL9FoGqUcrSyaPN0ih8fIRQPvR0mxhvGKaLq5+M6DS+pTN 1sxhTdHSg7bBiTTKUeWj4EC1YnRBh2elp6ZcyRg65HuaGHwl2l83u7kdvg86L4jP90P7 e+24Nfud/wk2YjDAwUJYbxHvOJ0IvkakANK7s7RsbQeV4yN67D4wrAnc7wZYrjbq1F/P b0flv0HqbAM8j90LicLeb+/RO94kwwbDsraLPQtx3igbdAE13SZrGcFgvtjh1amPCWKu 1Wrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561190; x=1721165990; 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=JrHXXV8VLJpJ9eIxh5MIvTS6KDKkL9E5B0nBHXrnN2w=; b=qxweDswV401n4M3peEfp19OpdmgTC9ewr+A922WGJK+0mMXtaMQpNlQQXd84prrfCB vXLSfjQoj9jPLAUXb1zm28YoxDlIPdNgWn54D8JhvRY7FGEFdz/WY1ctv2GQPzA1g+cX wWdw+AkJzXit3hKAZJmReUlJB9lzLaQRx2Rmqgv/K7kab2EIl6ReJ5F7U+nSl2lzUBU2 /ud51s3gYgiL3KQZkyUsDLXCDmM4obqg2sNCcWAPCO+IIQYk5Svj0sj0zYVZROCR1yLw 3jCeIKOpaYoi0Jb7E+KMtLt6w8x/rGf+Wgdr/lcho+wCG31YoqeIEg6aR5Hb02byEGFz np2w== X-Gm-Message-State: AOJu0YwCorefFhvtMycXqnY521WTiEGkvyfNENEG9QHeWmScBRH4Hmyn Lvar8WYP2TIMlvQ5omYVSlbBT8K9I0T9BJHwfxBeoQyrYoKFHdze65t4cvGocJ4= X-Google-Smtp-Source: AGHT+IEeQqvGA5rIXPU5iu2ORUd4aywGoHdMtzkGZMYxdBSKRb8E+NY10yY/CgtCC52MeEWqEoBMXA== X-Received: by 2002:a17:907:94d2:b0:a77:d1ea:ab3b with SMTP id a640c23a62f3a-a780b6b2f2dmr254648366b.25.1720561189519; Tue, 09 Jul 2024 14:39:49 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a85603fsm109878066b.176.2024.07.09.14.39.49 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:49 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 04/44] multipathd.service.in: use @BINDIR@ instead of /sbin Date: Tue, 9 Jul 2024 23:38:55 +0200 Message-ID: <20240709213935.177028-5-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The path in the unit file should match the actual installation path. Signed-off-by: Martin Wilck --- multipathd/multipathd.service.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/multipathd/multipathd.service.in b/multipathd/multipathd.service.in index a63ddd9..646001e 100644 --- a/multipathd/multipathd.service.in +++ b/multipathd/multipathd.service.in @@ -16,8 +16,8 @@ ConditionVirtualization=!container [Service] Type=notify NotifyAccess=main -ExecStart=/sbin/multipathd -d -s -ExecReload=/sbin/multipathd reconfigure +ExecStart=@BINDIR@/multipathd -d -s +ExecReload=@BINDIR@/multipathd reconfigure TasksMax=infinity LimitRTPRIO=10 CPUWeight=1000 From patchwork Tue Jul 9 21:38:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728538 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 23034182A5B for ; Tue, 9 Jul 2024 21:39:51 +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=1720561194; cv=none; b=U5Yh607spNLHObbpt7JbgXmxVBff/VzVyCHys9mcGBV7rXfU5N3ub66ItmPOQ+fssKnV4YHzLdVAtKGp/pBLCDUgUIt70LTzddF5yR75+Forf6Ij8Rzb28kiTn3myDULeGKfWWh1YdIo3n7hV+A1HHNo1OU8szH5HGsxAt/K7AQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561194; c=relaxed/simple; bh=De2ULvfHpCB/v2SveMhQtfwHY8DDuOc8dTmCBqNjxlc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bs8FXFgQqVrm9qu6QumSTbD8NwKehrb8eL+uBggjQmBhzBJWh3rATq2l/lRwljF+6E9492QraGDdDdjiStnxyGLiWHmbN5nq9YOqR5DrQAw6ISAvb9lc2pT6P/fUc0MyfjuI6Wa4rNw0SxkdGwXQdiK6mcB5VDtJUwHPa/DVhZo= 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=bGVCua3d; 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="bGVCua3d" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-58b966b41fbso7196017a12.1 for ; Tue, 09 Jul 2024 14:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561190; x=1721165990; 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=YGBd+4Xgs23I2KXriLfSbwwgkqdZdBRNMvxgmEHfUm4=; b=bGVCua3difP/QZzAZfJuDkXjxRyIwnNx30rRETg/c+4MvCJCG8HOmEDugcmmCRUc6I 4MdzOaD8VXSbOOiL+BDAEyap3P2D/SWicopIISmVJNudsADHnfJngEUFESbD56kk6xRH C0FqvzLRwE85ZPSDWq8JDdYmbuETJCmmz2JeJEu5M0qYjXNYXQpLcui/BFdKp/0CoVnC H4XCHsVk8nKCV5CoUX+EF8hb+uoAMv1zfl63+uF1nGaAdCQukk1lVyOZuBR0ra8aAYNv HeB5SOksqDuDtTB5Xcm5H0LrvXfdvt4wH9/ECNvQuS8Isp8hv2wHp/DZaBJg6nD8qBPZ gqvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561190; x=1721165990; 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=YGBd+4Xgs23I2KXriLfSbwwgkqdZdBRNMvxgmEHfUm4=; b=Utx66MZExgVgXpcSE0QpFeqJ4z2AlNqB8UHIb5orEerWFe6/Wfdr+I+RxE1MGho6/v zBabLnfUxkYW6MsqA+CvU5euN5ZiOIwCEULUTFj/Xa7qEST+VoxgWSOw6QsDCJvvb9zl T1iFLjqHJ9cgGIE5nHTrXnVZGeJoThlvRYlZVtY/VBsR44J9jVw99nBgr3+YBUYVcfCO a6rzcN7oiJmQsIuxE2sdhvPxH5iR6m/5NUS+xRqHSvxWTy2CK8kY6IxsGMFGAj6RvYHu 6LvuB+e0yvB2/GVWdKqkuhqGGXinYoMS/ZmUhwGrEAD7lyV8vAtC5Q0ZPbsWYaBjFkJq VFNA== X-Gm-Message-State: AOJu0YwzO/ec72GtLfDufzE0jCNG2oOMhGfmn/aaNnXSZ+2rm3QnhuLm KGGKxT+O5p5V7FP1fKjX5pAQijAVC6rwOZo9WqdWotF4MUt1ztcI+WKT9lXD6trgWsAO+OahfIf g X-Google-Smtp-Source: AGHT+IFaAd2vmQclDeDKdGTvT3LjL9RZK9nze2XvypEuX1J9cESyJzCwbqxFSl9YWip0tFQkiJqHZA== X-Received: by 2002:a17:906:f110:b0:a77:c7d8:fe16 with SMTP id a640c23a62f3a-a780b87ef45mr227290266b.62.1720561190329; Tue, 09 Jul 2024 14:39:50 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a72fd39sm108826566b.91.2024.07.09.14.39.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:50 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 05/44] Makefile.inc: replace @BINDIR@ with $(TGTDIR)/$(bindir) Date: Tue, 9 Jul 2024 23:38:56 +0200 Message-ID: <20240709213935.177028-6-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The unit files and udev rules that use @BINDIR@ for substitutions have the installation target's point of view, they must include $(TGTDIR) (which is empty by default). Signed-off-by: Martin Wilck --- Makefile.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.inc b/Makefile.inc index ed4a423..28b6032 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -150,4 +150,4 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version) %: %.in @echo creating $@ - $(Q)sed 's:@CONFIGFILE@:'$(TGTDIR)$(configfile)':g;s:@CONFIGDIR@:'$(TGTDIR)$(configdir)':g;s:@STATE_DIR@:'$(TGTDIR)$(statedir)':g;s:@RUNTIME_DIR@:'$(runtimedir)':g;s/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g;s:@BINDIR@:'$(bindir)':g' $< >$@ + $(Q)sed 's:@CONFIGFILE@:'$(TGTDIR)$(configfile)':g;s:@CONFIGDIR@:'$(TGTDIR)$(configdir)':g;s:@STATE_DIR@:'$(TGTDIR)$(statedir)':g;s:@RUNTIME_DIR@:'$(runtimedir)':g;s/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g;s:@BINDIR@:'$(TGTDIR)$(bindir)':g' $< >$@ From patchwork Tue Jul 9 21:38:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728539 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 57012185627 for ; Tue, 9 Jul 2024 21:39:53 +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=1720561195; cv=none; b=rus6LAQ642F70KzKMVT/+z5z3Xwe9YqrtZm4NldedN7GgyliBGshgMUTm6zuntrT2/HRLXjl+zIyAWrdxlPnDFRxcyQawbfvXNV7+yjvJKMQWZdHXCF1TPWkfVjfWayix8SukbuxNeiywvDvogeEiZSqw9qt8Xfe00S+XwsH9tU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561195; c=relaxed/simple; bh=Z0ojGRReO7vVh+b04uvBgwJhqnol1Xomv0cWmT6tFa4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FzGm4TWVUvjdkWk95TpX+41nmbIxAIUkuKAnc/Xj6F9AXEjcDVl+3vbJweJEBGfJr7gsh16V/xRNSGF3PSbTiRa+TBWA1obe2D9Z9RDxeya/yn1hqW7SVIn5nvA4v3Okrb2vveK/ea3q8Q7KJCw2BCzdFvIUWqEnMIyVO1sH7yI= 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=M7HhizCb; 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="M7HhizCb" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a7523f0870cso692499366b.3 for ; Tue, 09 Jul 2024 14:39:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561192; x=1721165992; 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=Gd6/SC1Kr2RQl3l4c13ae8aa/HTk0fUFNuJ+Ax+4u+M=; b=M7HhizCb+6Gy3x8aeqhsqt7BdclNrHxFjJWJzpLna9pm4nGwEAs+61JU8SvmH3rGB1 Pxjyq9XwGw0sFJH4wIvnKsd9KCyiViKdEFoXzzqx4dRLeJzEE0Uj7/miZ8sfn0ijsM5d nWwtGbTvi7a6WZyaCjmdHkwG5hWdvBteHw99gmk+gTg7gE5nT+gLITmpgxu6PzVzpiSO lqmSoKeV64jq+q+N+8cmZvgmAUG3Qq/1jfy6S448gF7paJo6uVnHIU9oThysTX4CNSI2 jdjiIZFGBqLKc/RGuGzHUVnm1gbmeXOaR9vAaXuAb1+mmgawGKSjL0rTuoHuePBbu5qG piJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561192; x=1721165992; 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=Gd6/SC1Kr2RQl3l4c13ae8aa/HTk0fUFNuJ+Ax+4u+M=; b=oeJ+c/13YnFUr/TFKK1T4awUyKltPiFkmYozAaL06XZ9hKvP0PWqRuh3SNgVeP21gI 0E4ViijF2bYNARjnWfE94G3xY4DHW5PxA4hibp/+Ktne11e3uNu6oXyzxaUwZS97TZ4J xgh+NIMftT0WhpF8DTcJ5crppJBueio5801SDWWTZoMp+08II91RmnOlCB0CMblNuKRv lJJ6RRr6IbDcTbRqoCSwbXnlXOAzgAoZuN6p58pAQZAxaWAiceC8QqZj0FsaRuJSOVYM u6V6XSoIqhKt6o/pXAimhgaZE7G5LsykXXhFpZHlwWg1d0RJQKBmxl+gfAqIPrcfUmKT pwcA== X-Gm-Message-State: AOJu0YxGKSzHS5wDfM2ZZpHSv1HweZKk9fFGRo3AM25hYRXR/TPBSilS DptllR0OmbPknCVxS5C8HRyK9gYDx6RqE9i+UBeD9E2XF8X+rgkcWGVKCsOUkrmxr6jb4wEwkCo I X-Google-Smtp-Source: AGHT+IEbmwb7DmBKdIMl59dlucVZkZmzXtvaBoWVaK/5hXgHYtyEFepUYAYsgVlipuD9v1D80M5pJA== X-Received: by 2002:a17:906:1787:b0:a75:23bb:6087 with SMTP id a640c23a62f3a-a780b6b1baemr221660466b.29.1720561191273; Tue, 09 Jul 2024 14:39:51 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a854368sm106989866b.155.2024.07.09.14.39.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:51 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 06/44] kpartx.rules: use @BINDIR@ to locate kpartx Date: Tue, 9 Jul 2024 23:38:57 +0200 Message-ID: <20240709213935.177028-7-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The path for kpartx should match the installed binary. Signed-off-by: Martin Wilck --- .gitignore | 1 + kpartx/Makefile | 4 ++-- kpartx/{kpartx.rules => kpartx.rules.in} | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) rename kpartx/{kpartx.rules => kpartx.rules.in} (96%) diff --git a/.gitignore b/.gitignore index 049ffe8..355ddbb 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ config.mk cscope.files cscope.out kpartx/kpartx +kpartx/kpartx.rules multipath/multipath multipath/multipath.8 multipath/multipath.conf.5 diff --git a/kpartx/Makefile b/kpartx/Makefile index 7720a74..0d4c798 100644 --- a/kpartx/Makefile +++ b/kpartx/Makefile @@ -19,7 +19,7 @@ $(EXEC): $(OBJS) @echo building $@ because of $? $(Q)$(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS) -install: $(EXEC) $(EXEC).8 +install: $(EXEC) $(EXEC).8 kpartx.rules $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir) $(Q)$(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir) $(Q)$(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir) @@ -41,7 +41,7 @@ uninstall: $(Q)$(RM) $(DESTDIR)$(libudevdir)/rules.d/68-del-part-nodes.rules clean: dep_clean - $(Q)$(RM) core *.o $(EXEC) + $(Q)$(RM) core *.o $(EXEC) kpartx.rules include $(wildcard $(OBJS:.o=.d)) diff --git a/kpartx/kpartx.rules b/kpartx/kpartx.rules.in similarity index 96% rename from kpartx/kpartx.rules rename to kpartx/kpartx.rules.in index 8dd3369..9d87960 100644 --- a/kpartx/kpartx.rules +++ b/kpartx/kpartx.rules.in @@ -39,6 +39,6 @@ LABEL="mpath_kpartx_end" GOTO="kpartx_end" LABEL="run_kpartx" -RUN+="/sbin/kpartx -un -p -part /dev/$name" +RUN+="@BINDIR@/kpartx -un -p -part /dev/$name" LABEL="kpartx_end" From patchwork Tue Jul 9 21:38:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728540 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.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 3E788182A6D for ; Tue, 9 Jul 2024 21:39:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561196; cv=none; b=VXGb2ZLv/g2SGdPMZXju+AHltzfz0/yQcNGhSYXeq/LM7e8ACfkO3eYp8UKGhl+Z3qd9tEugNoT87c9iz+xdmUSDfgBX0eKVTSYRGwvBmMf3olNyDNwoksg0LkFa+07zb0vsW+b8YPMHB+IZ7PLvIxW8Jw+krlfrP5XGOXt7sQI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561196; c=relaxed/simple; bh=T7Mq5cGilLHFMYJlP7yXIK3yW/5RLpMi4ELfKJcGt9M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=boBr/1foEd/fkJ4V+szXyIOXK8KPnHMgFDyB1mUHFSwy8P0cARrr54WTTdcc5OQgbR1QD5NTEHx4EnevR6bNfFvS24/fWE1+YP1zK+ooHEUoJlzxuz4v6hzssl+Zuw/X6rf49X9YZ1uEzDD9H8dB1dU+fGQtvaCMUc+UIdkk1Rs= 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=QuDXsOc6; arc=none smtp.client-ip=209.85.218.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="QuDXsOc6" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a77e6dd7f72so408141266b.3 for ; Tue, 09 Jul 2024 14:39:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561192; x=1721165992; 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=8z3x5Wiqhv2IfIl/eMb9I2plOqBG+uOhq9CkDfhkfBo=; b=QuDXsOc64FVljiUkKSXApvExLXT9yFL4qJfHDCFM0Kfkak6eA5jyTHsunsjnPfeWEV QG4GNc8xLGKxnnFomoPbokqj/XmY19/tP7mCvWm3rpMMgHwkQryTIsz4v2F07rb8afP2 uq6QxrwivTXGQfKZoPUfHldh0M28HL4HsAiQCxGbNEVGS1cDr6p8Wo/AZPK5Gb1euq0c LrlsScbutEc/ARCayaveEvF2EAZyvG9UR99iBZ4oSEqT+it2JcOBHhHZlVmVtOaFer4H 3FuNfxTIRT3HkSpaAqBlo5fbSN+Do3dsLjSktkUQ1UJyJgCmzPydPvkJk4Gh1iT53NcM bSUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561192; x=1721165992; 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=8z3x5Wiqhv2IfIl/eMb9I2plOqBG+uOhq9CkDfhkfBo=; b=h16xzzujuotom9KvYi6ZWrmD5wxC/CkkOwO9fCal/1BjUlgqFtqUe69pHxLKwDDYgX f85M2pyFs2zDPEP+RnKsOnk3PCvsX2Z79VDwcyfXvM5TgusrPN1ttojei+Xzh+IpM8tW PYjvpcHah9R5cUEy5OqKRsB7e/ZQZyHurPCnWVlxarLTfRBp3H3nmlSnmutXEMEp1eUj v7GJniRf4a0OoV2jU4YZ9vFV3yP1J5flAITWMyidQnO9z7z0SusuqUYgtxsrQeoNRkKg 9J8c4mEMYKn5FBeq3utLHIjL18m+My07uEehAU3IsHuUh8vPKSW6v/IBluH7Sx19AAuC 9TPw== X-Gm-Message-State: AOJu0Yzi9Ewg8QKe6kaKhtULZArX/mM3YRcHV4Bphjy+kkQZ7AoNO98r BPpWM2X+PeO2kWLqw2rR6j/Xne/tiZRG7/YgnVKe28KOpXcyFqD7Oa1DtsRIgpM= X-Google-Smtp-Source: AGHT+IGPkL0rqnbWDZoBCpMEQ8naFQGcqyxQKYx6g363YGVpMspyLq2OLi4oQwlVh9d7MyK15DAU9g== X-Received: by 2002:a17:906:c107:b0:a72:9d25:8ad3 with SMTP id a640c23a62f3a-a780b68891cmr344255266b.9.1720561192196; Tue, 09 Jul 2024 14:39:52 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bd45a1absm1497489a12.77.2024.07.09.14.39.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:52 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 07/44] multipath-tools: Remove hard-coded paths to executables Date: Tue, 9 Jul 2024 23:38:58 +0200 Message-ID: <20240709213935.177028-8-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- Makefile.inc | 17 ++++++++++++++--- kpartx/kpartx_id | 8 ++++---- multipath/11-dm-mpath.rules.in | 4 ++-- multipath/multipath.rules.in | 6 +++--- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Makefile.inc b/Makefile.inc index 28b6032..fe9f1bf 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -42,9 +42,11 @@ etc_prefix := $(prefix) # Where to install systemd-related files. systemd is usually installed under /usr # Note: systemd installations with "split-usr=true" use separate "prefixdir" and # "rootprefixdir". Our systemd_prefix corresponds to "prefixdir". -# In this case, override only unitdir and libudevdir below to use -# systemd's "rootprefixdir" instead of $(systemd_prefix) +# In this case, override only unitdir, libudevdir and sys_execprefix below +# to use systemd's "rootprefixdir" instead of $(systemd_prefix) systemd_prefix := /usr +# Prefix for binaries that are owned by other packages (including systemd) +sys_execprefix := /usr # Make sure all prefix variables end in "/" append-slash = $(1)$(if $(filter %/,$(1)),,/) @@ -53,6 +55,7 @@ override exec_prefix := $(call append-slash,$(exec_prefix)) override usr_prefix := $(call append-slash,$(usr_prefix)) override etc_prefix := $(call append-slash,$(etc_prefix)) override systemd_prefix := $(call append-slash,$(systemd_prefix)) +override sys_execprefix := $(call append-slash,$(sys_execprefix)) unitdir := $(systemd_prefix)lib/systemd/system tmpfilesdir := $(systemd_prefix)lib/tmpfiles.d @@ -74,6 +77,7 @@ runtimedir := $(if $(shell test -L /var/run -o ! -d /var/run && echo 1),/ru devmapper_incdir := $(or $(shell $(PKG_CONFIG) --variable=includedir devmapper),/usr/include) libudev_incdir := $(or $(shell $(PKG_CONFIG) --variable=includedir libudev),/usr/include) kernel_incdir := /usr/include +sysdir_bin := $(sys_execprefix)bin ifeq ($(V),) Q := @ @@ -150,4 +154,11 @@ NV_VERSION_SCRIPT = $(DEVLIB:%.so=%-nv.version) %: %.in @echo creating $@ - $(Q)sed 's:@CONFIGFILE@:'$(TGTDIR)$(configfile)':g;s:@CONFIGDIR@:'$(TGTDIR)$(configdir)':g;s:@STATE_DIR@:'$(TGTDIR)$(statedir)':g;s:@RUNTIME_DIR@:'$(runtimedir)':g;s/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g;s:@BINDIR@:'$(TGTDIR)$(bindir)':g' $< >$@ + $(Q)sed -e 's:@CONFIGFILE@:'$(TGTDIR)$(configfile)':g' \ + -e 's:@CONFIGDIR@:'$(TGTDIR)$(configdir)':g' \ + -e 's:@STATE_DIR@:'$(TGTDIR)$(statedir)':g' \ + -e 's:@BINDIR@:'$(TGTDIR)$(bindir)':g' \ + -e 's:@SYSDIR_BIN@:'$(sysdir_bin)': g' \ + -e 's:@RUNTIME_DIR@:'$(runtimedir)':g' \ + -e 's/@MODPROBE_UNIT@/'$(MODPROBE_UNIT)'/g' \ + $< >$@ diff --git a/kpartx/kpartx_id b/kpartx/kpartx_id index 4672927..f9211d2 100755 --- a/kpartx/kpartx_id +++ b/kpartx/kpartx_id @@ -21,8 +21,6 @@ # sent upstream but has not been accepted yet. # -DMSETUP=/sbin/dmsetup - MAJOR=$1 MINOR=$2 UUID=$3 @@ -32,12 +30,14 @@ if [ -z "$MAJOR" -o -z "$MINOR" ]; then exit 1; fi +DMSETUP=$(command -v dmsetup) || DMSETUP=/sbin/dmsetup + # Device-mapper not installed; not an error -if [ ! -x $DMSETUP ] ; then +if [ ! -x "$DMSETUP" ] ; then + echo "$0: dmsetup not found" >&2 exit 0 fi - # Table UUIDs are always '-'. dmuuid=${UUID#*-} dmtbl=${UUID%%-*} diff --git a/multipath/11-dm-mpath.rules.in b/multipath/11-dm-mpath.rules.in index 0562edd..30647b9 100644 --- a/multipath/11-dm-mpath.rules.in +++ b/multipath/11-dm-mpath.rules.in @@ -9,7 +9,7 @@ ENV{.DM_SUSPENDED}!="?*", ENV{.DM_SUSPENDED}="$env{DM_SUSPENDED}" # Coldplug event while device is suspended (e.g. during a reload) ACTION=="add", ENV{DM_ACTIVATION}=="1", ENV{.DM_SUSPENDED}=="1", \ - PROGRAM="/bin/logger -t 11-dm-mpath.rules -p daemon.warning \"Coldplug event for suspended device\"", \ + PROGRAM="@SYSDIR_BIN@/logger -t 11-dm-mpath.rules -p daemon.warning \"Coldplug event for suspended device\"", \ ENV{DM_COLDPLUG_SUSPENDED}="1", GOTO="scan_import" # Coldplug event. Import previously set properties. @@ -70,7 +70,7 @@ LABEL="check_mpath_unchanged" IMPORT{db}="DM_COLDPLUG_SUSPENDED" ENV{DM_COLDPLUG_SUSPENDED}=="1", ENV{.DM_SUSPENDED}!="1", \ ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0", \ - PROGRAM="/bin/logger -t 11-dm-mpath.rules -p daemon.notice \"Forcing activation of previously suspended device\"", \ + PROGRAM="@SYSDIR_BIN@/logger -t 11-dm-mpath.rules -p daemon.notice \"Forcing activation of previously suspended device\"", \ GOTO="check_mpath_ready" # DM_SUBSYSTEM_UDEV_FLAG0 is the "RELOAD" flag for multipath subsystem. diff --git a/multipath/multipath.rules.in b/multipath/multipath.rules.in index 780bf85..2ac1972 100644 --- a/multipath/multipath.rules.in +++ b/multipath/multipath.rules.in @@ -2,7 +2,7 @@ SUBSYSTEM!="block", GOTO="end_mpath" KERNEL!="sd*|dasd*|nvme*", GOTO="end_mpath" ACTION=="remove", TEST=="@RUNTIME_DIR@/multipath/find_multipaths/$major:$minor", \ - RUN+="/usr/bin/rm -f @RUNTIME_DIR@/multipath/find_multipaths/$major:$minor" + RUN+="@SYSDIR_BIN@/rm -f @RUNTIME_DIR@/multipath/find_multipaths/$major:$minor" ACTION!="add|change", GOTO="end_mpath" IMPORT{cmdline}="nompath" @@ -69,7 +69,7 @@ ENV{.SAVED_FM_WAIT_UNTIL}=="?*", GOTO="pretend_mpath" # # We must trigger an "add" event because LVM2 will only act on those. -RUN+="/usr/bin/systemd-run --unit=cancel-multipath-wait-$kernel --description 'cancel waiting for multipath siblings of $kernel' --no-block --timer-property DefaultDependencies=no --timer-property Conflicts=shutdown.target --timer-property Before=shutdown.target --timer-property Conflicts=initrd-cleanup.service --timer-property Before=initrd-cleanup.service --timer-property AccuracySec=500ms --property DefaultDependencies=no --property Conflicts=shutdown.target --property Before=shutdown.target --property Conflicts=initrd-cleanup.service --property Before=initrd-cleanup.service --on-active=$env{FIND_MULTIPATHS_WAIT_UNTIL} /usr/bin/udevadm trigger --action=add $sys$devpath" +RUN+="@SYSDIR_BIN@/systemd-run --unit=cancel-multipath-wait-$kernel --description 'cancel waiting for multipath siblings of $kernel' --no-block --timer-property DefaultDependencies=no --timer-property Conflicts=shutdown.target --timer-property Before=shutdown.target --timer-property Conflicts=initrd-cleanup.service --timer-property Before=initrd-cleanup.service --timer-property AccuracySec=500ms --property DefaultDependencies=no --property Conflicts=shutdown.target --property Before=shutdown.target --property Conflicts=initrd-cleanup.service --property Before=initrd-cleanup.service --on-active=$env{FIND_MULTIPATHS_WAIT_UNTIL} @SYSDIR_BIN@/udevadm trigger --action=add $sys$devpath" LABEL="pretend_mpath" ENV{DM_MULTIPATH_DEVICE_PATH}="1" @@ -85,7 +85,7 @@ ENV{FIND_MULTIPATHS_WAIT_UNTIL}!="?*", GOTO="end_mpath" ENV{FIND_MULTIPATHS_WAIT_UNTIL}=="0", GOTO="end_mpath" ENV{FIND_MULTIPATHS_WAIT_CANCELLED}="1" -RUN+="/usr/bin/systemctl stop cancel-multipath-wait-$kernel.timer" +RUN+="@SYSDIR_BIN@/systemctl stop cancel-multipath-wait-$kernel.timer" # If "multipath -u" failed, no values are imported from the program, # and we are still using the values for DM_MULTIPATH_DEVICE_PATH and From patchwork Tue Jul 9 21:38:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728541 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) (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 0ED4A187857 for ; Tue, 9 Jul 2024 21:39:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561197; cv=none; b=QAcjq4ExiJxentwW7PxhfhrGwOi2c3cVw9J8u0m200HPp+lVON8Lkqykzho9kIzPz4s/XL3slZqNUCZn1ZaBX6NuXZfmV2dYwaTYmknCEw960nvw5mLVi6AoXTwUWx3gVdorfecczFSXD714DfAT56UYSN9k7k5TJ8QuQRDfOwI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561197; c=relaxed/simple; bh=tcNzrRNlaL2DEGA/gpw8jkTEWG7AliTexPjJD5eYzwQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uN8KJCH7tDcfQrVyYsIS35Q3rjEyXmnrHxIYOZ4hX0w9+z8PNJYNy+ZJnAOegO/XK9eFW2hR/lGe7/vkX2mYkURAcCx4Eiu/EWsF1RfnDcsnpqc3pnSdLJGqAbrWAZAqYyG0JDtmiLXbgIuI9Fs+YX2aSpIp7XJmhYbvqmZRC6E= 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=ZNWImxcn; arc=none smtp.client-ip=209.85.208.171 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="ZNWImxcn" Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-2ee91d9cb71so53641701fa.0 for ; Tue, 09 Jul 2024 14:39:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561193; x=1721165993; 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=e+FoWuXRkK1Fi+XENGyVS9biQJSdbGu2TEIS0VxDKyc=; b=ZNWImxcnt6chltm/ec5OCOVdE9pitBdBhlhy/vc8BPKwag7UsJFz/Dbjeyg2kSuRKI 670fLY6lSW8BaEzKmL5zqqkk4K3zc/JwSi21dRaUko5vyVrWkVyJ9+yq3RZ0ln1GTxKZ 9ncxu5BD22JI6xyALdAKhMXGN3fR5Xhf/86vow6QMe9pQu2l3iB8TjGfKCTNj1rkL3xJ j8Jl1RDTbMW5rfLm0qsvf7xhtFY+NkhjQrTOIHXgUgX17C7T9lD5yx0KRKqW7SUm78JY JFPtz5gGCaEAzXieV1ZEmdaaF7x26LlVM2pWceFxRQUThUle5ChZGXat3PF0JDQ+dClG WWiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561193; x=1721165993; 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=e+FoWuXRkK1Fi+XENGyVS9biQJSdbGu2TEIS0VxDKyc=; b=SuqODFMYMPVU3UzuS0whaZpo+UK5IpMEftwewNZPu9jMKvwjR/rMBiffgnq+2lbEcg HyMfsao3q+i6rbU5ec4p2dOnW93Rt9ZMIZRgMyPYGBDUyGfgu+zQaGmhIPq0RT2wFpz0 JBNmEtGs2G1s+6nhXyXL5BYmK1Mtb8uLObHPY11krqEvjjiZGFOhLvQRh4bl/uElxfeI jmkuFuwTOhIgWzaRCsomTI8UlbeKPlAHZdspoej3TBk1C3GySoA5Pe3VJCLD5vdhrYqd kujVO/tTEC7H+rwVEP/FtWPoBd2YUN5JItlCtnIDvtwZUF/dZsFZlifO+tOO3eYBIy95 SOgQ== X-Gm-Message-State: AOJu0YyoV1xZUZGB9wpC6FyzJ3RPX7Y9zj4ErV+6foJoLzuLKaa0DqJx 3dY1XY87cHJDIs2Ys+tLsQZYdS4J5ZIoZwoo4M7XoUatR/1ITU/HjtK9IR+rsFA= X-Google-Smtp-Source: AGHT+IETW4QnMlFmbZSXXlowoWgEEj/z+GhCBX0kqHCgC8xAsnE66SawoBlbpIiPtenfndEQJ1qNGA== X-Received: by 2002:a2e:b0f2:0:b0:2ee:6254:f9ee with SMTP id 38308e7fff4ca-2eeb3171857mr26136471fa.42.1720561192974; Tue, 09 Jul 2024 14:39:52 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bbe2d0e7sm1475833a12.37.2024.07.09.14.39.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:52 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 08/44] multipath-tools: compile_commands.json fixes Date: Tue, 9 Jul 2024 23:38:59 +0200 Message-ID: <20240709213935.177028-9-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 compile_commands.json serves as input for clangd, while working with lsp under emacs. It's normal for functions and parameters to be unused while writing code. Therefore suppress -Werror for this use case. clangd will display the warnings. Use "make testprogs" to generate compile_commands.json, in order to be able to use clangd for the CI code, too. Finally, don't remove compile_commands.json with "make clean". Normally the compile commands remain the same, even if a clean rebuild of the binaries is necessary. Put the file into .gitignore instead. Signed-off-by: Martin Wilck --- .gitignore | 1 + Makefile | 4 ++-- Makefile.inc | 12 +++++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 355ddbb..efdbd8a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ *.gz *.d \#* +compile_commands.json config.mk cscope.files cscope.out diff --git a/Makefile b/Makefile index 4df5f16..14bbac2 100644 --- a/Makefile +++ b/Makefile @@ -83,7 +83,7 @@ abi-test: abi reference-abi $(wildcard abi/*.abi) # Requires bear (https://github.com/rizsotto/Bear) compile_commands.json: Makefile Makefile.inc $(BUILDDIRS:=/Makefile) $(Q)$(MAKE) clean - $(Q)bear -- $(MAKE) + $(Q)bear -- $(MAKE) WARN_ONLY=1 test-progs || rm $@ libmpathutil libdmmp: libmpathcmd libmultipath: libmpathutil @@ -109,7 +109,7 @@ $(BUILDDIRS:=.uninstall): clean: @touch config.mk $(Q)$(MAKE) $(BUILDDIRS:=.clean) tests.clean || true - $(Q)$(RM) -r abi abi.tar.gz abi-test compile_commands.json config.mk + $(Q)$(RM) -r abi abi.tar.gz abi-test config.mk install: $(BUILDDIRS:=.install) uninstall: $(BUILDDIRS:=.uninstall) diff --git a/Makefile.inc b/Makefile.inc index fe9f1bf..729618b 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -100,9 +100,15 @@ MODPROBE_UNIT := $(shell test "0$(SYSTEMD)" -lt 245 2>/dev/null || \ echo "modprobe@dm_multipath.service") OPTFLAGS := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4 -WARNFLAGS := -Werror -Wall -Wextra -Wformat=2 $(WFORMATOVERFLOW) -Werror=implicit-int \ - -Werror=implicit-function-declaration -Werror=format-security \ - $(WNOCLOBBERED) -Werror=cast-qual $(ERROR_DISCARDED_QUALIFIERS) $(W_URCU_TYPE_LIMITS) + +# Set WARN_ONLY=1 to avoid compilation erroring out due to warnings. Useful during development. +WARN_ONLY := +ERROR := $(if $(WARN_ONLY),,error=) +WERROR := $(if $(WARN_ONLY),,-Werror) +WARNFLAGS := $(WERROR) -Wall -Wextra -Wformat=2 $(WFORMATOVERFLOW) -W$(ERROR)implicit-int \ + -W$(ERROR)implicit-function-declaration -W$(ERROR)format-security \ + $(WNOCLOBBERED) -W$(ERROR)cast-qual $(ERROR_DISCARDED_QUALIFIERS) $(W_URCU_TYPE_LIMITS) + CPPFLAGS := $(FORTIFY_OPT) $(CPPFLAGS) $(D_URCU_VERSION) \ -D_FILE_OFFSET_BITS=64 \ -DBIN_DIR=\"$(bindir)\" -DMULTIPATH_DIR=\"$(TGTDIR)$(plugindir)\" \ From patchwork Tue Jul 9 21:39:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728542 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.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 9CF8718785C for ; Tue, 9 Jul 2024 21:39:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561197; cv=none; b=uvMkWM4SxI05qxok+RCjEprg1ttNvTTaR9kBapt5hnA+k51+nZ5uhnni81zms9XEpPiXbq9aURQn9zFLuUy4QiO1ERBy3n7RLYyRol0hS2xLR/PGlyNcVDMpCFdEUwNTgDQgppwQk998ttxnEEMbcF9OhsTpJQqJJiB2iO7zu3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561197; c=relaxed/simple; bh=bZWRm9ba+0PfCGLRAJ8oD3GqVYO9+LyBpLpBjVBaGQg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lLmZdbao3pMkN3QPnMA8MnSouNhUaTNF9orWTnGUa7pQ8OjaqZydHFgLf1U0IxcJ0e3hGqD6FUnuaUBP57McIV5fuZNgUebBNofVoRyx5NegQm2Rfghdo4py/Jn4wMZ081cxmlf6HQETVdADrdzhtvQclmJ2DCxi7aJ/QVu+Rds= 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=F8aF8HVK; arc=none smtp.client-ip=209.85.208.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="F8aF8HVK" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-58ba3e38028so7195744a12.0 for ; Tue, 09 Jul 2024 14:39:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561194; x=1721165994; 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=q3AzsR6ratvA9Qi0X/GRrLKtSe5ajtWe3GLHdoy2TjQ=; b=F8aF8HVKM7+fFhcA2LktjaX2MELX9LCCQ9R3/GkRdG1Y1cqjjfml55XjoVjMfBc31u 1SfR0aJAraqS0Cxq9w/JS5AUdF/mG/wEqkaL2SM1W60qpwjbV46UAb5jtq0IkVVpBf0/ /j3+OZTaLxCJskm8YM+y+smuhuGLWWt6LnBquT/hbIVZ1XUeHCnLY0c4LQMrNdz2aK45 NHzLeU3FbOK6VsWbiwL9YCkQxvxMTQ8FH1wknH94/XV7lblEJqrjqfd9Qpo2EDwWhtd8 m6Aswtr1Yx+GNTuPJddmx+U9tzo8/Zf5zb8yTE1KYLr/Iw3gpGmo5kV6ftSAZP119DxO JlXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561194; x=1721165994; 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=q3AzsR6ratvA9Qi0X/GRrLKtSe5ajtWe3GLHdoy2TjQ=; b=YvVtK1+9BCaXTli0r6X1v0fqXPWxiOA9l9a3Uhe224obV+h6N+zqJ+OFMfHr2jAmwI o359Km4ZgproKR+tNfpp2lEbqCRgRXiitwmoDGUZNrpTVb3mlpjyG41sLnMcbU/qIU9P t6/tzztA7Z7vLptx8nGfnFkR8ml66o7WYqauRMhd10biah59f+866P/UwbTmnLYGz/Fu zUvRmjm+KoBJDkpJ8y0UNKHoPsvZ1fT3/RpYyHpvF4Ov7L+iOL9Buh3bwqCdzZGRrGH8 wI2kO3SnAesumlmD3+I8QabjsEcFb+vqtzgH7X91cjl/o7QR0pyXoZdsrVaJkLJZbRRJ Anew== X-Gm-Message-State: AOJu0Ywg6nJlyFoAmyP2RKuqDjt7YbRKUpzB6IRIwbWhsEbZYwA6XGhD r0O8cvqE2BcEJVGszW/CqcUrBT15WxU0m9ltwCnnpUDc9vGznJO8sWTbmxZD8yU= X-Google-Smtp-Source: AGHT+IH0u5IXP9HcnXOz2QeM8fcmIZ2YIrn4B6EtqJxc/pwfBAlJhC1EbIO/UanMKGj1Wui/5iD64Q== X-Received: by 2002:a17:906:8412:b0:a69:13a2:4f6e with SMTP id a640c23a62f3a-a780b89f6a9mr199145566b.74.1720561193862; Tue, 09 Jul 2024 14:39:53 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6bc57csm107555066b.1.2024.07.09.14.39.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:53 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 09/44] multipath-tools: .gitignore: ignore o.wrap files for CI helpers Date: Tue, 9 Jul 2024 23:39:00 +0200 Message-ID: <20240709213935.177028-10-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Unlike the .o.wrap files for the CI tests themselves, these are not automatically deleted by "make" as intermediate files. Ignore them. Signed-off-by: Martin Wilck --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index efdbd8a..4548cfb 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,8 @@ libdmmp/test/libdmmp_speed_test tests/*-test tests/*.out tests/*.vgr +tests/test-lib.o.wrap +tests/test-log.o.wrap libmultipath/nvme-ioctl.c libmultipath/nvme-ioctl.h libmultipath/autoconfig.h From patchwork Tue Jul 9 21:39:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728543 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 6C903185602 for ; Tue, 9 Jul 2024 21:39:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561198; cv=none; b=uR1tOfZy6QqV32zHv69e23pXabuCooFJi1j8EmZn2pJY6Tl3/OiuXifXLQtnNoLdoevbsTGuM4YBMGS8somyJec3XzAn1lq0Gojq6IfykPXpdPwQuDFod+18W7/26FqkXKGZ82wvmaek0QojVNfMYNCu5IJQ8QDvxNMJSCfKEPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561198; c=relaxed/simple; bh=JAc0biAF9LTjSAlXott8GK13sue8V6PGDVu4iYlP8vI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nSKx/aiH/Dwz+qTUDB0ibb55vzKvvhu+U6cNMOyLw9k23wEhHKlp/MiKo6+Mg1vBPfpRCkjymYRmBuCg/RW+znfQEH9CdoxRSJI6kHdnj9HrZKnmvLF+pVivty1HaMpguLUzft0by/1CrkwOpyQhb8F2nDLSu6mfcGdeqrFuMKo= 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=UJrLX3Ix; arc=none smtp.client-ip=209.85.208.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="UJrLX3Ix" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-58ba3e37feeso7702839a12.3 for ; Tue, 09 Jul 2024 14:39:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561195; x=1721165995; 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=H0gf8uygD3ffsEF/m2JAHHct7i+UMVrRQsMGkq7PUao=; b=UJrLX3IxMcm6bckMrp6W9RNYDEFQA8PlFlJ/J5VtVni/+Yzu29eshfSm3Yg+wy5591 r9OOaMq+Hx5YfVkl6pV8/2md4H/NaUj0L6kOWP/Ts6l5UYNmvdQ5XeGkW0KTd3UshVmS +LRPZKqHydhcGNa5BH7c37PFc7XC810e+6tjpPW1RXpuapiHYB/ZXoZLiqPrxU9XpeU9 8Fiu5Yrw1IHlINa/H56n4xkywqhhKnXG0bmKqD0Pa78ZI2zjNsf1R2pfmJytdejJBD4N Rg8664NdJ49XliItoablhXBbWhfPe+rdL9YlTfZUTZ6qNunOmQ9JYegwd8F6PVps4muG qYnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561195; x=1721165995; 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=H0gf8uygD3ffsEF/m2JAHHct7i+UMVrRQsMGkq7PUao=; b=lnB/vSrPcoQ0W/9/qFhEcQX0wwTjkHuYUJ5KUeaIsI57Ii1bu6bZSOb6MK+RnVnD3N RInZINlkO4I/sQPL/g5zT0LsKMoMBTLuBtOCoXxQhyib76JTnwirpIqBH0Cwo/5ErK/x b1a4n7AYwzfvx9JzAr+3QK8bjkPFtoLbAcY2kAzSEMyCtcCh6VkYHveVXPM9LJZfnvq1 PXFH4/feUTTjbFQVZWUxu/r3LV3eR4aVeqiny6rEGMAGQcNv7V5eAUkhdSHHDuVizjyq rtXwvlIA7FCCq94itA6IuUlav2/HIOuQ4BKAa0aDeO0r0mX08Fl2npns7H741FJx3Pfo 2W8w== X-Gm-Message-State: AOJu0Yw7njluDC+ilOfgr6CpnPOpL2mrOp9YUNxEPjrtjwcng70SzaJs HQzsmtvR86WuKNJteP3ZIs9huItOywT1GWeTznLimtytEK9JW7vK1WgSJoUjNXk= X-Google-Smtp-Source: AGHT+IHYqH9nMh1BaXJEXdixHUmmWI0n9OuQGKMVq3/VckVawRWxyOkkfqjOLDvTKVk+Oh///YT9Gg== X-Received: by 2002:a17:907:1c1a:b0:a72:6375:5fa7 with SMTP id a640c23a62f3a-a780b89a039mr308911866b.64.1720561194740; Tue, 09 Jul 2024 14:39:54 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bd459abbsm1477846a12.71.2024.07.09.14.39.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:54 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 10/44] libmultipath: remove unused includes in devmapper.h Date: Tue, 9 Jul 2024 23:39:01 +0200 Message-ID: <20240709213935.177028-11-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 08bb3c5..3ee8555 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -17,13 +17,11 @@ #include #include "util.h" -#include "checkers.h" #include "vector.h" #include "structs.h" #include "debug.h" #include "devmapper.h" #include "sysfs.h" -#include "config.h" #include "wwids.h" #include "version.h" #include "time-util.h" From patchwork Tue Jul 9 21:39:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728544 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 6D2BA185625 for ; Tue, 9 Jul 2024 21:39:57 +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=1720561199; cv=none; b=pfaBtXmfpIJ5MmEcitRCbMUQz8rGzAZh0k8ZR3hACQ13HgkOVFsrvL1DbN5J5S/KzSOdSru4TZwWI2XfL8KZnjgR3tXgZI80HshjtQr0wopPcoMjPRa/Yr/sXBec29ZKhNREwCLYJsoEvkg/zyOOZ2QggYxrB1E9e+vQSrEPdUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561199; c=relaxed/simple; bh=SHqlJ5WSzP43XD6YM1YWqlBehTLA47/mfT853x+3xrU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J2/EAFW8qWztPhBxWkpKn2mxURMwv4mophsttiuNrgw0Pekpp8tq3ua0tSVx1KZComVJ+CQZqcgOVAddYIMPt4AwT9nIleOmQTPN0AaFUc551Jv0KsTWHiiQVByvc+0cJK7ypsaozzV89Z93Wlj0VrE1c8Gg3q0cdusdoKIgasY= 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=JsO2Va+X; 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="JsO2Va+X" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-59559ea9cfdso1260812a12.0 for ; Tue, 09 Jul 2024 14:39:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561196; x=1721165996; 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=IHooILQuod33vDj5ZAUeTvyJUCxAlLWug7TS+dkLMMg=; b=JsO2Va+X33dNS7C0GtSLDyjkVFOem4+KjkTnTrDmjpXe2itMYhYtDpOKSQPb5v4ezt zpw+T99dGQXc7Wcbl5hCbcaGhIBC7VQGdzRnp2Jwm9QiZMGvHWvx28APZZXa8glH0xVv O5HwAaNoT9RGc58XQb6MUS5HPz/3EcKEkJTPQt587DMMNUyEoCVGAXxiH5udxl7EtgMT BHVjlnHXAjBo2kEDtYg07kmjtIB4vB9kLrzvWoMpwgjtnwbZp75gYHY0NhcLCl7HXX9p OT0pFYdN4csDk5vALaPSiYKlNuPxlvu0GqPwbilWOISaBYcVU2Nowhq2fJ586QzsjF6Z gmWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561196; x=1721165996; 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=IHooILQuod33vDj5ZAUeTvyJUCxAlLWug7TS+dkLMMg=; b=RwFNkVSUOOhfXDM7xz2Ya/cifC0HYFCrZzF5ZUUfg8AaaG60SViUFFaDyDi0Hm56uK sAF97n7+GUazCjGZFIQ9hIT4duP2fAB2lNLoWiq4ZhbRGLVBBLjxav2wVyY08FBL26LY by0yNPBx0o03cMeTjDz7lGjkQmrYZZerz/F1yN8uU8HyI3dBBbp9Obux/2BnHm4aZfv9 GjDZAeFPUicYs7N9dGrTwisKZeii+ZAHkje8tYjOn5/j+8VFzMkrHMsaXmg9mg0d/7+L b2+sse/2qoe1ojkdT8sx5SpnSSkZ9EKjhkEDHhcflHJsZ+boKM57Inud1zCIMIjwRztB Jhjw== X-Gm-Message-State: AOJu0YzwS8OeM5fI1ZUn5yRGscNl0hr0N+jrnsVjWWrtZlWcKxwxBdBu g/AOpSMPb0nGKyfxvgc5LGhVQ/8XKnOpQQVyf9NT2X9glPSO0gMXk4DMc/YSwJM= X-Google-Smtp-Source: AGHT+IGmEGJry+nbREPMF0MUqO9n7sn8Xlbx2gaZelwHlapgm9c2xDtOXAgyydjLhcTrSCs8Qplh4w== X-Received: by 2002:a05:6402:274b:b0:58f:2087:7986 with SMTP id 4fb4d7f45d1cf-594bcba77cbmr2605698a12.41.1720561195645; Tue, 09 Jul 2024 14:39:55 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bd45a16esm1481783a12.75.2024.07.09.14.39.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:55 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 11/44] libmultipath: use DM_DEVICE_INFO in dm_mapname() Date: Tue, 9 Jul 2024 23:39:02 +0200 Message-ID: <20240709213935.177028-12-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DM_DEVICE_INFO aka the kernel's DM_DEV_STATUS ioctl, is sufficient to fetch the map name, and more lightweight than DM_DEVICE_STATUS, which maps to the kernel's DM_TABLE_STATUS ioctl. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 3ee8555..baa1ead 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1412,7 +1412,7 @@ dm_mapname(int major, int minor) struct dm_task *dmt; int r; - if (!(dmt = libmp_dm_task_create(DM_DEVICE_STATUS))) + if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) return NULL; if (!dm_task_set_major(dmt, major) || @@ -1422,7 +1422,7 @@ dm_mapname(int major, int minor) dm_task_no_open_count(dmt); r = libmp_dm_task_run(dmt); if (!r) { - dm_log_error(2, DM_DEVICE_STATUS, dmt); + dm_log_error(2, DM_DEVICE_INFO, dmt); goto bad; } From patchwork Tue Jul 9 21:39:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728545 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 6037D18785C for ; Tue, 9 Jul 2024 21:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561200; cv=none; b=AzLOgTCd7NfXrfXZBXPThC3FnxwpMe+1qh/Jcgj5DCNel2SQ2IsN+8xazHaEcynX5pomin00glA+aISZFHOu7NmdSR9WPf/C6rjaSdVopZErGHfuvkcOiCK4TbWYrulmfqmmQL7h2fr/JmJ9j4j7Sz7/lezbUFEv4PcYEGvds40= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561200; c=relaxed/simple; bh=bDYDRN/D8Xo+k0wT/YuLcg4LMyzeZpfxPQRRTvn9BL0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OL7trqP7LBHzxYuLJwSfy0a8rP1HUdYkhXc2dXDVL+jLbGKgaw5W8Ma+PqAYwbPA9rSkI6rM7Cw9n1dOvAE416bDM5TdDadORVLKmzsPW3Ptcj8OPAu06btIBoqNN6u23rjzgpgZ0tam+e7VbHCrK3sVb2kP8ZZruAwNqjGK8Qs= 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=Nv4SbeEY; arc=none smtp.client-ip=209.85.208.41 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="Nv4SbeEY" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-58bac81f40bso7514019a12.1 for ; Tue, 09 Jul 2024 14:39:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561197; x=1721165997; 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=EPVx26GVW4NPvGvPuX5l81GMdUPQzDeIAhO2nHsQav8=; b=Nv4SbeEYORXJGI0VExA5HOOkA7ySU6tZXBIPxbZ2gJTMN3jW/yUeviOC4HXctpXqhR MjPT4LQz7JAXOw68P1xgCKaZHO6LZJrAZ5G4yeOPwmO+HN7YNvcx15JFmewsrjpXmeCR qPiyrWuz2I7zz5YMwGLXH0mQDE+AXcW+31ITXiaPbU3aqWH2ndMgB87iNEMlAKrU0vdV 2JMZBgH30WjzsLcFAggX7NcscLYgfXXz/8ead4R1pQuQ6BIz3betERnN3ogYKx4v4AUV IYYRjVsST4xGWjvD5xwtlxIyyLMhJssdQVuD8v/B7vac6mVu/U46FWrj+e59qap7U5Ig Datg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561197; x=1721165997; 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=EPVx26GVW4NPvGvPuX5l81GMdUPQzDeIAhO2nHsQav8=; b=azadnwlOkI9aOf26aoBHr/+lH+lWgNNDjFZpkdcBJ4x4V9KpuSUz4WoJM1lkD8gHqj EB1LV0h8ZtvsO99yBYJ6dLRm2TYuMlI9dL6K06PomB9uUMBIsRWCypBvwKAyYFgKTHuS m37kzIWrq50fBYQBYgPVEdwDv20FeKZw8x+CviEo6TEjP5AFFLupoGRx8tgGA5yytKXK FMGUcIAR4dlYcaQqJvsP4xb9wDimsn5H1sWtnJdz1Tt6aL6E9EdNxMeQ6Wgs2ceinZn7 CkzD5VwcoAEcR2R5W2wI4Z7NSMkcdb4kWr2JR55lCc+8pJ5333MJ/qpwDKfwrnwrgX7A XaZw== X-Gm-Message-State: AOJu0YxXPiT+BSSZ4wPwiFqNhGVPakNQ8q4YOnJY0ZazYSZegjmPBQwT DQNCBiiUkhjymMLhC1Poim3KsMJXQV7zpOFRHvEC3nM2/X4S6H9D7FD0+1Bubr27RICCUAldI2k 9 X-Google-Smtp-Source: AGHT+IEI1En732rbFn0matw/C39ai/sS5PzGt6PKoqTCbm1NG3Ak7CFriFIIo3UnoQYUrxyaGc1QMw== X-Received: by 2002:a17:907:94c7:b0:a72:8a75:6559 with SMTP id a640c23a62f3a-a780b884495mr316197166b.47.1720561196566; Tue, 09 Jul 2024 14:39:56 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7ff213sm107923766b.107.2024.07.09.14.39.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:56 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 12/44] multipath-tools: don't call dm_task_no_open_count() Date: Tue, 9 Jul 2024 23:39:03 +0200 Message-ID: <20240709213935.177028-13-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 dm_task_no_open_count() only sets DM_SKIP_BDGET_FLAG in the dm task, which has been ignored by the kernel since 5c6bd75d06db ("[PATCH] dm: prevent removal if open") (v2.6.18 / 2006). Even for older kernels, not setting this flag has only a minor, performance-related effect (skipping one call to bdget_disk()). Don't use this dead API any more. Signed-off-by: Martin Wilck --- kpartx/devmapper.c | 15 --------------- libmultipath/devmapper.c | 36 ------------------------------------ multipathd/dmevents.c | 2 -- multipathd/waiter.c | 2 -- tests/dmevents.c | 13 ------------- 5 files changed, 68 deletions(-) diff --git a/kpartx/devmapper.c b/kpartx/devmapper.c index f12762c..bf07838 100644 --- a/kpartx/devmapper.c +++ b/kpartx/devmapper.c @@ -35,8 +35,6 @@ int dm_prereq(char * str, uint32_t x, uint32_t y, uint32_t z) if (!(dmt = dm_task_create(DM_DEVICE_LIST_VERSIONS))) return 1; - dm_task_no_open_count(dmt); - if (!dm_task_run(dmt)) goto out; @@ -78,7 +76,6 @@ int dm_simplecmd(int task, const char *name, int no_flush, __DM_API_COOKIE_UNUSE if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); dm_task_skip_lockfs(dmt); if (no_flush) @@ -175,8 +172,6 @@ int dm_addmap(int task, const char *name, const char *target, if (!dm_task_set_gid(dmt, gid)) goto addout; - dm_task_no_open_count(dmt); - #ifdef LIBDM_API_COOKIE if (!udev_sync) udev_flags = DM_UDEV_DISABLE_LIBRARY_FALLBACK; @@ -212,8 +207,6 @@ static int dm_map_present(char *str, char **uuid) if (!dm_task_set_name(dmt, str)) goto out; - dm_task_no_open_count(dmt); - if (!dm_task_run(dmt)) goto out; @@ -247,7 +240,6 @@ static int dm_rename (const char *old, const char *new) if (!dm_task_set_name(dmt, old) || !dm_task_set_newname(dmt, new) || - !dm_task_no_open_count(dmt) || !dm_task_set_cookie(dmt, &cookie, udev_flags)) goto out; @@ -291,7 +283,6 @@ dm_mapname(int major, int minor) if (!(dmt = dm_task_create(DM_DEVICE_INFO))) return NULL; - dm_task_no_open_count(dmt); dm_task_set_major(dmt, major); dm_task_set_minor(dmt, minor); @@ -352,7 +343,6 @@ dm_mapuuid(const char *mapname) if (!dm_task_set_name(dmt, mapname)) goto out; - dm_task_no_open_count(dmt); if (!dm_task_run(dmt)) goto out; @@ -407,7 +397,6 @@ dm_get_map(const char *mapname, char * outparams) if (!dm_task_set_name(dmt, mapname)) goto out; - dm_task_no_open_count(dmt); if (!dm_task_run(dmt)) goto out; @@ -474,8 +463,6 @@ dm_type(const char * name, char * type) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - if (!dm_task_run(dmt)) goto out; @@ -545,8 +532,6 @@ do_foreach_partmaps (const char * mapname, const char *uuid, if (!(dmt = dm_task_create(DM_DEVICE_LIST))) return 1; - dm_task_no_open_count(dmt); - if (!dm_task_run(dmt)) goto out; diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index baa1ead..8996c1d 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -217,8 +217,6 @@ static int dm_tgt_version (unsigned int *version, char *str) if (!(dmt = dm_task_create(DM_DEVICE_LIST_VERSIONS))) return 1; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(2, DM_DEVICE_LIST_VERSIONS, dmt); condlog(0, "Cannot communicate with kernel DM"); @@ -398,7 +396,6 @@ dm_simplecmd (int task, const char *name, int flags, uint16_t udev_flags) { if (!dm_task_set_name (dmt, name)) goto out; - dm_task_no_open_count(dmt); dm_task_skip_lockfs(dmt); /* for DM_DEVICE_RESUME */ #ifdef LIBDM_API_FLUSH if (flags & DMFL_NO_FLUSH) @@ -495,8 +492,6 @@ dm_addmap (int task, const char *target, struct multipath *mpp, task == DM_DEVICE_RELOAD ? "reload" : "addmap", mpp->size, target, params); - dm_task_no_open_count(dmt); - if (task == DM_DEVICE_CREATE && !dm_task_set_cookie(dmt, &cookie, udev_flags)) goto freeout; @@ -627,8 +622,6 @@ dm_get_info(const char *name, struct dm_info *info) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_INFO, dmt); goto out; @@ -667,8 +660,6 @@ int dm_get_map(const char *name, unsigned long long *size, char **outparams) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - errno = 0; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); @@ -787,8 +778,6 @@ int dm_get_status(const char *name, char **outstatus) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - errno = 0; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_STATUS, dmt); @@ -845,8 +834,6 @@ int dm_type(const char *name, char *type) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); goto out; @@ -889,8 +876,6 @@ int dm_is_mpath(const char *name) if (!dm_task_set_name(dmt, name)) goto out_task; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); goto out_task; @@ -950,8 +935,6 @@ dm_map_present_by_uuid(const char *uuid) if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) goto out; - dm_task_no_open_count(dmt); - if (!dm_task_set_uuid(dmt, prefixed_uuid)) goto out_task; @@ -1158,8 +1141,6 @@ int dm_flush_maps (int retries) if (!(dmt = libmp_dm_task_create (DM_DEVICE_LIST))) return r; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run (dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); goto out; @@ -1205,8 +1186,6 @@ dm_message(const char * mapname, char * message) if (!dm_task_set_message(dmt, message)) goto out; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(2, DM_DEVICE_TARGET_MSG, dmt); goto out; @@ -1341,8 +1320,6 @@ dm_get_maps (vector mp) if (!(dmt = libmp_dm_task_create(DM_DEVICE_LIST))) return 1; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); goto out; @@ -1419,7 +1396,6 @@ dm_mapname(int major, int minor) !dm_task_set_minor(dmt, minor)) goto bad; - dm_task_no_open_count(dmt); r = libmp_dm_task_run(dmt); if (!r) { dm_log_error(2, DM_DEVICE_INFO, dmt); @@ -1455,8 +1431,6 @@ do_foreach_partmaps (const char * mapname, if (!(dmt = libmp_dm_task_create(DM_DEVICE_LIST))) return 1; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); goto out; @@ -1665,8 +1639,6 @@ dm_rename (const char * old, char * new, char *delim, int skip_kpartx) if (!dm_task_set_newname(dmt, new)) goto out; - dm_task_no_open_count(dmt); - if (!dm_task_set_cookie(dmt, &cookie, udev_flags)) goto out; r = libmp_dm_task_run(dmt); @@ -1713,8 +1685,6 @@ int dm_reassign_table(const char *name, char *old, char *new) if (!dm_task_set_name(dmt, name)) goto out; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); goto out; @@ -1756,8 +1726,6 @@ int dm_reassign_table(const char *name, char *old, char *new) } while (next); if (modified) { - dm_task_no_open_count(reload_dmt); - if (!libmp_dm_task_run(reload_dmt)) { dm_log_error(3, DM_DEVICE_RELOAD, reload_dmt); condlog(3, "%s: failed to reassign targets", name); @@ -1803,8 +1771,6 @@ int dm_reassign(const char *mapname) if (!dm_task_set_name(dmt, mapname)) goto out; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_DEPS, dmt); goto out; @@ -1861,8 +1827,6 @@ int dm_setgeometry(struct multipath *mpp) if (!dm_task_set_name(dmt, mpp->alias)) goto out; - dm_task_no_open_count(dmt); - /* What a sick interface ... */ snprintf(heads, 4, "%u", pp->geom.heads); snprintf(sectors, 4, "%u", pp->geom.sectors); diff --git a/multipathd/dmevents.c b/multipathd/dmevents.c index 5657000..3fbdc55 100644 --- a/multipathd/dmevents.c +++ b/multipathd/dmevents.c @@ -154,8 +154,6 @@ static int dm_get_events(void) if (!(dmt = libmp_dm_task_create(DM_DEVICE_LIST))) return -1; - dm_task_no_open_count(dmt); - if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); goto fail; diff --git a/multipathd/waiter.c b/multipathd/waiter.c index d1f344b..1dd93c5 100644 --- a/multipathd/waiter.c +++ b/multipathd/waiter.c @@ -108,8 +108,6 @@ static int waiteventloop (struct event_thread *waiter) return 1; } - dm_task_no_open_count(waiter->dmt); - /* wait */ sigemptyset(&set); sigaddset(&set, SIGUSR2); diff --git a/tests/dmevents.c b/tests/dmevents.c index 668e6d2..2f98173 100644 --- a/tests/dmevents.c +++ b/tests/dmevents.c @@ -267,15 +267,6 @@ struct dm_task *__wrap_libmp_dm_task_create(int task) return mock_type(struct dm_task *); } -int __real_dm_task_no_open_count(struct dm_task *dmt); -int __wrap_dm_task_no_open_count(struct dm_task *dmt) -{ - if (!setup_done) - return __real_dm_task_no_open_count(dmt); - assert_ptr_equal((struct test_data *)dmt, &data); - return mock_type(int); -} - int __real_dm_task_run(struct dm_task *dmt); int __wrap_dm_task_run(struct dm_task *dmt) { @@ -554,7 +545,6 @@ static void test_get_events_bad1(void **state) skip(); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 0); assert_int_equal(dm_get_events(), -1); } @@ -567,7 +557,6 @@ static void test_get_events_bad2(void **state) skip(); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 0); assert_int_equal(dm_get_events(), -1); @@ -582,7 +571,6 @@ static void test_get_events_good0(void **state) assert_int_equal(add_dm_device_event("foo", 1, 5), 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); assert_int_equal(dm_get_events(), 0); @@ -617,7 +605,6 @@ static void test_get_events_good1(void **state) assert_int_equal(add_dm_device_event("foo", 1, 6), 0); assert_int_equal(remove_dm_device_event("xyzzy"), 0); will_return(__wrap_libmp_dm_task_create, &data); - will_return(__wrap_dm_task_no_open_count, 1); will_return(__wrap_dm_task_run, 1); will_return(__wrap_dm_task_get_names, 1); assert_int_equal(dm_get_events(), 0); From patchwork Tue Jul 9 21:39:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728546 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 339FA185602 for ; Tue, 9 Jul 2024 21:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561201; cv=none; b=VmQCaqyLeUR7rvcWT3mks7THgWia+GTSXaF4kKbMwd3IUFWuYmcbsILbsdBrhA3Jmcfl4/r+IE6LneNR9/bvGL33+37qDO4dnhjlcnSoXDhlJSDIcxMlXrRW9xL5H4FzCYWPY7+ystlw8L/HKG6COTy0Zoo1Uv5R9lA1t31MQ1A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561201; c=relaxed/simple; bh=VGlYTCKrCqco/vCM5HtDVjkHJwmoigh/CImyzs21U9U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=st1SAmrX8KKb1pIZwBxPvq8HwGwcrgO3pZipas2KiQSLmt9vJwwsfPrZ8QKVIK7qp3xZNfLPDzB8uv9XfdhiMNVvR/MjX7zTWbjXtAF9IXfiI9AkV8t7VeWZEPC8XH5h74L1/yxGU09401Aj1OLtDoHMC1PJO7SBPrXDkNtlwnc= 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=IJge4Edf; arc=none smtp.client-ip=209.85.218.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="IJge4Edf" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a77d85f7fa3so27642266b.0 for ; Tue, 09 Jul 2024 14:39:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561197; x=1721165997; 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=pkuSh099XPosLb+KkONbyidSZ7ibozcji4aNB9K1PtI=; b=IJge4Edfe4FTRmNLuZFhLMmhEFdOE3Zn5xQkMJywxqsX6nTvR6XP1oc+Pgd8AYuAEJ q6hEWFtiNIWVh+WTjF9EEwPV1X9KL8Ud8C8JtAEyOpuR5meOo8T+23ERGlbnSK34DE2M Agl/92w1nxzSvZi9ty4O5T+7RT48DGirYq4hfb5cN4h5M2jp2YrjapexgPKUYqqQbwSv a3ano0NlPzjc4SAUFiPSPcWMaBc1NOWLwzBGKo8rhtw+FGXYYrIMLIMIq2D98yOpb+0P x0p0lp4tT/HAlJS1A4mTFaT2wSKw8JEFZW+rCgGlLrEzfStQu1BnA3CCsjF1FTCZ2wEy N3ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561197; x=1721165997; 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=pkuSh099XPosLb+KkONbyidSZ7ibozcji4aNB9K1PtI=; b=Cf0qNOXLm/Zn/Jh2npFmHTMcbOp+JqN/ELgWh2FfFyavI915UEF3Wh+LlEcZtzQVBK LMuGRIVFeOxRIksluzmyruVFJ6PAWYkiobyEjhxRd1BsxedLiWnYwZ+3IS+rpEeNZe5q wxNOqAZijOEeGlB0cHtX/6MGXE974J/VCVMHBzy5GTQisxWzbPQHLZYVOUH9KKNdzIsh /eFikBWWbeyjYsSuEfcb5Jkyd+OgFFOzWSygftU3pRU2RMx7AdKyzYgtTBG5NG73Yl4c zoWUrHBkI2alZTCIZLNk/H9HXfBec/pzTMN+a/GxcdaSFmSsIaitWzm2OYl53DXYvXCr m9FA== X-Gm-Message-State: AOJu0YwazEGJJjT4uTf96jWwINml5AK750mnBMaSUxP3SC7TZqSy0Xmu a5hLib0Q67B1WCKmNFH4m01Stsc02Iy+CeDuWYawbjUYpQgW0ad6XQAxaw1Y938= X-Google-Smtp-Source: AGHT+IGYd/uUsfxWmjQWTTC88BCKbMc+aokoz/hfjdiMz13bEkfYmaoM+bbIZfj2kcTcytKJcS2d5g== X-Received: by 2002:a17:907:76cf:b0:a72:5967:b34 with SMTP id a640c23a62f3a-a780d267c19mr257472366b.22.1720561197450; Tue, 09 Jul 2024 14:39:57 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6bc57csm107556766b.1.2024.07.09.14.39.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:57 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 13/44] libmpathutil: export cleanup_udev_device() Date: Tue, 9 Jul 2024 23:39:04 +0200 Message-ID: <20240709213935.177028-14-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-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 function is useful in multiple callers. Signed-off-by: Martin Wilck --- libmpathutil/libmpathutil.version | 4 ++++ libmpathutil/util.c | 6 ++++++ libmpathutil/util.h | 3 +++ libmultipath/print.c | 6 ------ tests/Makefile | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libmpathutil/libmpathutil.version b/libmpathutil/libmpathutil.version index fee74a3..86450f4 100644 --- a/libmpathutil/libmpathutil.version +++ b/libmpathutil/libmpathutil.version @@ -133,3 +133,7 @@ LIBMPATHUTIL_2.0 { LIBMPATHUTIL_2.1 { libmp_basename; }; + +LIBMPATHUTIL_2.2 { + cleanup_udev_device; +}; diff --git a/libmpathutil/util.c b/libmpathutil/util.c index 23d303f..67db3c8 100644 --- a/libmpathutil/util.c +++ b/libmpathutil/util.c @@ -373,3 +373,9 @@ void cleanup_ucharp(unsigned char **p) { free(*p); } + +void cleanup_udev_device(struct udev_device **udd) +{ + if (*udd) + udev_device_unref(*udd); +} diff --git a/libmpathutil/util.h b/libmpathutil/util.h index 4997fed..c19f749 100644 --- a/libmpathutil/util.h +++ b/libmpathutil/util.h @@ -10,6 +10,7 @@ #include #include #include +#include size_t strchop(char *); @@ -139,4 +140,6 @@ static inline void clear_bit_in_bitfield(unsigned int bit, struct bitfield *bf) void cleanup_charp(char **p); void cleanup_ucharp(unsigned char **p); +void cleanup_udev_device(struct udev_device **udd); + #endif /* _UTIL_H */ diff --git a/libmultipath/print.c b/libmultipath/print.c index d592001..b7af913 100644 --- a/libmultipath/print.c +++ b/libmultipath/print.c @@ -436,12 +436,6 @@ snprint_multipath_vpd_data(struct strbuf *buff, return append_strbuf_str(buff, "[undef]"); } -static void cleanup_udev_device(struct udev_device **udd) -{ - if (*udd) - udev_device_unref(*udd); -} - static int snprint_multipath_max_sectors_kb(struct strbuf *buff, const struct multipath *mpp) { diff --git a/tests/Makefile b/tests/Makefile index 4005204..8afa8c6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -53,7 +53,7 @@ vpd-test_OBJDEPS := $(multipathdir)/discovery.o vpd-test_LIBDEPS := -ludev -lpthread -ldl alias-test_TESTDEPS := test-log.o alias-test_OBJDEPS := $(mpathutildir)/util.o -alias-test_LIBDEPS := -lpthread -ldl +alias-test_LIBDEPS := -ludev -lpthread -ldl valid-test_OBJDEPS := $(multipathdir)/valid.o $(multipathdir)/discovery.o valid-test_LIBDEPS := -lmount -ludev -lpthread -ldl devt-test_LIBDEPS := -ludev From patchwork Tue Jul 9 21:39:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728547 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (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 0BB1F187867 for ; Tue, 9 Jul 2024 21:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561202; cv=none; b=qCQVcv3DvXNfKtiJHvn90Cm7Wpygt6Y4qIzH/O5siXTYpg3Faqwuqt5MXVbiavGu1LxHc6cdPGNbrKeUEL4TlWGagyXzqX2pBNzFNFRueKdnVbPY5hqMuhrjDEbyBUakM3pYp7XvOyRsCjwVDpoAFBORVlSisFDuoWGq9y+jOzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561202; c=relaxed/simple; bh=GDldV01uGTNRaexJfgKczXb9VyPOzdWvLzZt6Z62E5Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=g0zwrixNO/9ZF97V4CgpGihvS13z66koT65bNYeYoFFfp+Ms+J2j0bZ37bNnlgXYjCm676oxYW6o22IR/6F862F/+DESKL+xpdFG0+GRCAZGVoELOCtVKQx32rxMZirgbag3xQZOcGy8HOnxZ3ZlIFLrZMEC79CqLON5bswRNXM= 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=gXRLQ6E9; arc=none smtp.client-ip=209.85.218.41 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="gXRLQ6E9" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a77c9d3e593so506269066b.0 for ; Tue, 09 Jul 2024 14:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561198; x=1721165998; 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=AiwVbARJ+bNfKHdGZqEy7QI5EKPnlZNS0bFBF3MmDmc=; b=gXRLQ6E9bs2j3cXhSjBxS1ZiIJL/o50u89wofc3lL6W6P91ttfQJE5ee8Xzd0ueBtg LJKeXDzuJXfDwp8lN11eNVRFWGy1n3LPNUNeNkf36SStjRg+YjjL6yfCnxoNB/i4xk4L 9hJjPvLAqO0d9VZBBdkovjj7ZbSCSWa7GReNRn/d8ViR6trJa+jRX/R+NoxClzFnxDso x9ewpIF/1tz+3IGzYP4IXMgq7XrNqxe312xV03Fo7ZJUsWV5JMmAXTQ4+DCNw324ykaG xiiRdhkquoBTrYfs7q5hjpsGMbaonx/lKAWS1oNW03/nz9Fet71Dmb13fOc1K0+XfW4A LNeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561198; x=1721165998; 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=AiwVbARJ+bNfKHdGZqEy7QI5EKPnlZNS0bFBF3MmDmc=; b=ea98lTKJWvJcG1D0wvI4o/4iiDmpMQc+Wnl9vx7aSpKIStVYHdXg83YBCYpltb1V1c idbvPniV5YDNrGaxQO4J92td/2r2/Hq5/CWmKRCr/J1iK5AxJURQk3rYicK3jiFUaEX5 icIgzuFhm3XmxVnQExFm9nR/gaCowpSUq560ZPFql1vHejD4SH8jp8ytckeqcFVCVybn 33xkQmbiZE3Z9icniw9YS8FcTFZ381D3K9wDen4/xgvDG9QFn7BF6bNbI/jOLY+r2BPJ MhqG9bbLcBmkyCFw9r1Yp2loYKUdjqBlZj2ZsAUscpotSwxG+y0OBiVoH7sU8bwHuJpp zSaQ== X-Gm-Message-State: AOJu0Yy+r83mTqJDMWPec55peZsgpVTenSTldSAOOUB3gOKNLAU/EuZT TGtfiPv/Bb1d8GqN2FGfsZIqf1iA1WGyZRsiqlRF5c8mJCYjqfAkMw4bsSBK+nU= X-Google-Smtp-Source: AGHT+IGA83X5RXxUi1cJCmoJWJYU32YLO5zSjQN1JS5TgOECo1LjqzXbOVJfgrHIFGVsw5E0leqFIg== X-Received: by 2002:a17:906:2b57:b0:a77:cca9:b212 with SMTP id a640c23a62f3a-a780b7050dfmr269056366b.45.1720561198234; Tue, 09 Jul 2024 14:39:58 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7fef9dsm108968766b.99.2024.07.09.14.39.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:58 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 14/44] libmpathutil: add cleanup_vector() Date: Tue, 9 Jul 2024 23:39:05 +0200 Message-ID: <20240709213935.177028-15-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmpathutil/libmpathutil.version | 1 + libmpathutil/vector.c | 6 ++++++ libmpathutil/vector.h | 1 + 3 files changed, 8 insertions(+) diff --git a/libmpathutil/libmpathutil.version b/libmpathutil/libmpathutil.version index 86450f4..cb05231 100644 --- a/libmpathutil/libmpathutil.version +++ b/libmpathutil/libmpathutil.version @@ -136,4 +136,5 @@ LIBMPATHUTIL_2.1 { LIBMPATHUTIL_2.2 { cleanup_udev_device; + cleanup_vector; }; diff --git a/libmpathutil/vector.c b/libmpathutil/vector.c index df59db5..7c3ce43 100644 --- a/libmpathutil/vector.c +++ b/libmpathutil/vector.c @@ -169,6 +169,12 @@ vector_free(vector v) free(v); } +void cleanup_vector(vector *pv) +{ + if (*pv) + vector_free(*pv); +} + void free_strvec(vector strvec) { diff --git a/libmpathutil/vector.h b/libmpathutil/vector.h index c0b09cb..a41f157 100644 --- a/libmpathutil/vector.h +++ b/libmpathutil/vector.h @@ -78,6 +78,7 @@ extern vector vector_alloc(void); extern bool vector_alloc_slot(vector v); vector vector_reset(vector v); extern void vector_free(vector v); +void cleanup_vector(vector *pv); #define vector_free_const(x) vector_free((vector)(long)(x)) extern void free_strvec(vector strvec); extern void vector_set_slot(vector v, void *value); From patchwork Tue Jul 9 21:39:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728548 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 D1E7A18563A for ; Tue, 9 Jul 2024 21:40:00 +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=1720561202; cv=none; b=uSR11WuEwantMj5Lb6pGeNLRAr3cwjv2YzkmJ2XExgnqMIULW6agI+SMkl5Ot1osotRJA7CSqU+VTsOsCTQ/NsE3S3gQKBJU3cOjDZWAMhLNgQ7q/S0rDAoR97zG4901sjfRZtZxXVG5SUpPI5jOdu8bSehFUS466ld7o1T1X30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561202; c=relaxed/simple; bh=sQdAw0xxdD/dYSGRmoFAhjuoeDlxRKWsgz86WfbT1jk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B0VlzmfBqQnzZfZZLDyBPK5DqF5j4xPGdwSUjVoUpXgGiImlBD9wWfk5LZpL+XIwsnXKRv8BaX5K6ah8o/UVl0lY00Eb/TrnArZE7bVgUJF0EdZI60VGf4eVGgmmGeFSG/sDLyt/dIn/0pQti5MXpWpCXIFBmnr+ws+3PgBgXGg= 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=ZZ78TiSD; 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="ZZ78TiSD" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a77af4cd570so348224066b.1 for ; Tue, 09 Jul 2024 14:40:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561199; x=1721165999; 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=KDDTtRB9z63U6xarE5NrfqAT5oi/GgcgQVpupJMU9rQ=; b=ZZ78TiSD+PlY/oOQzhRanpkLm4j/gSl7HI6kwAnCMNmwtmgLxNbRmZlJ2fDpUg8s0z RhpWVyH/pTKFwhRcWBWSoJT3wfthusqjyOwkrk56yQoPBwinREDt3Ino3sP3gL2J4hdB KV7BBk/UQcjwwjdpBNN3O9XPfxRBZEJwP2nR2G0Cn/8vhi4n0zvgjCnZe3xRMd+luMhc Q08H+dKlhTaBXey0pMC069rmidkYiFROaq2WZE/Gkz0x2S5X1Ox4H0MddOYOQe5km2E5 gsO95p4Jndt1SX/DbIRcKNI9NCMV5zDj44c3SuH3xwr1nM3v0/tPUUOPnnJLAPZpBkTY uFhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561199; x=1721165999; 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=KDDTtRB9z63U6xarE5NrfqAT5oi/GgcgQVpupJMU9rQ=; b=CkdWrgydi46LDq6CrQQ74RLNsTMhpCY5MR52MxnRxYvWjPZ2MPZk+J4Nnl9xVnJSje 5Elx+txFVHJfMzQZt3DFb2Duqvf4Kd8SdOXbZRpRGfIaQOUI/RZSeXOF4t6WKta5A5XI wruxu4cjb3cBu+72VWmrgHYKf4riVVOUYuMDoK2ePxsVLRdJ5vKnpOxG3rjXaYWXZ5dO CTqvrN5uYsIIh/kpgCz4j8wok/e2kmmaVXNz3HL7mqx6DAmXWJjpA14HDcrYu0bOlaO6 XdKqsHll2FOSD+HSjT8UPtRLMjUGEkq1D+4bOUdC1LJQ3HTD7GU4wxFtXEUDnl0Ri0sM se7w== X-Gm-Message-State: AOJu0YzwAjQJpBkz49TDP6o31SP5qc0U7Q3WtIL6cADXyC5kxh+MkP/a TOkjiEeZAWd9QADhsNxUfI+hp9fe7h0pvvJWTEtYS95spoGrJhr+2HKEvQ2Utuz8Y681X1a+nhF V X-Google-Smtp-Source: AGHT+IHzP4roL/jzYnOr2/rHAw55rkKZA4G/g7qVq40shUeac+6LfEwb/O8ba87nt6RSdnBg0CUSjg== X-Received: by 2002:a05:6402:885:b0:58b:f46f:ae45 with SMTP id 4fb4d7f45d1cf-594bb773fb7mr2820728a12.23.1720561199113; Tue, 09 Jul 2024 14:39:59 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bd459e08sm1471859a12.69.2024.07.09.14.39.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:58 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 15/44] libmultipath: add cleanup helpers for struct multipath Date: Tue, 9 Jul 2024 23:39:06 +0200 Message-ID: <20240709213935.177028-16-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Export cleanup_multipath_and_paths(), which will be used by multipath. Signed-off-by: Martin Wilck --- libmultipath/libmultipath.version | 1 + libmultipath/structs.c | 12 ++++++++++++ libmultipath/structs.h | 2 ++ 3 files changed, 15 insertions(+) diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index eb51174..f58cb1d 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -66,6 +66,7 @@ global: check_foreign; cleanup_bindings; cleanup_lock; + cleanup_multipath_and_paths; coalesce_paths; count_active_paths; delete_all_foreign; diff --git a/libmultipath/structs.c b/libmultipath/structs.c index be3125e..1583e00 100644 --- a/libmultipath/structs.c +++ b/libmultipath/structs.c @@ -329,6 +329,18 @@ free_multipath (struct multipath * mpp, enum free_path_mode free_paths) free(mpp); } +void cleanup_multipath(struct multipath **pmpp) +{ + if (*pmpp) + free_multipath(*pmpp, KEEP_PATHS); +} + +void cleanup_multipath_and_paths(struct multipath **pmpp) +{ + if (*pmpp) + free_multipath(*pmpp, FREE_PATHS); +} + void drop_multipath (vector mpvec, char * wwid, enum free_path_mode free_paths) { diff --git a/libmultipath/structs.h b/libmultipath/structs.h index dbaf4d4..3b91e39 100644 --- a/libmultipath/structs.h +++ b/libmultipath/structs.h @@ -544,6 +544,8 @@ void free_pathvec (vector vec, enum free_path_mode free_paths); void free_pathgroup (struct pathgroup * pgp, enum free_path_mode free_paths); void free_pgvec (vector pgvec, enum free_path_mode free_paths); void free_multipath (struct multipath *, enum free_path_mode free_paths); +void cleanup_multipath(struct multipath **pmpp); +void cleanup_multipath_and_paths(struct multipath **pmpp); void free_multipath_attributes (struct multipath *); void drop_multipath (vector mpvec, char * wwid, enum free_path_mode free_paths); void free_multipathvec (vector mpvec, enum free_path_mode free_paths); From patchwork Tue Jul 9 21:39:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728549 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 27553185602 for ; Tue, 9 Jul 2024 21:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561205; cv=none; b=M7XVfH9YAO8RtwXuArGoaO7ix4MMDhGCPetYmL52NYPJJ2zwalHZyFtAvNdZrF6ZjCekF07TaTsQyyc9pslYM79PtNGyftsfFY771Q+7K9YKTf6OX4hegHxsSLngxSOXorCPov8e+10mjxh04n+nHY9WbCesYSdOGQckv9VcQg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561205; c=relaxed/simple; bh=abYD7k/hphhsBt0hmt16d31cF2HJN6EndnDQjh1NVXM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iy+ij1HteWiLj5gZw4+U1mhtOrTH6rd1cp+sCYoe9zwUxoJrwLuhMkN/ID/DlipFRWaHxnvXzdly1Rg73TIcwoJD0i5eCptznbE9yj8FCbxwHfMbPkaiXiwQD6zTFPveCErTN4CManNrcj6nk1Q3osYRzX3va/DjZMahSOfdV5Y= 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=ZlNeQnCt; arc=none smtp.client-ip=209.85.208.41 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="ZlNeQnCt" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-58ef19aa6c4so6083954a12.2 for ; Tue, 09 Jul 2024 14:40:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561200; x=1721166000; 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=Ri/Bzz3gSkKtt1pC1l8Tr5Cek4REYDNL4bmTIyFMAz8=; b=ZlNeQnCtrpSBOYtutGlP4X9uCyfzNXkhS6T+u1KtM2tNFr9btcOnJlfkfppZql6HZN ztZQ4JkS9I3k2dJcdG8QW8MLDFpb5xRwwelVumCSsieb07zwD7il/jM/sDkyy4eOGBam K2e8oQ8zCe9VzkBNY2PJE5ZDJ7SzOwAytldADxOWJcG2VgRrIx4Z4hUKy3fW1I5n7GqX +SUtG3JFpSC729lOiHso1mWLNvup+TcK7kVjeY1qaIfz/CtBeSZNFEpoGau6Rw+m8Ydc Js4Fb58sj2hPa5d3EOdpQgnaq3uTZWRmPv8IIEdZwDchI4UYguBAvnx14Yhh8jey1do4 ysng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561200; x=1721166000; 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=Ri/Bzz3gSkKtt1pC1l8Tr5Cek4REYDNL4bmTIyFMAz8=; b=tzIFil0Ao7IX7T6yTPJAznbjYyCSSCo8CDeGRJMIsEc++n+M3SZfVfXTbDguNdnuD+ aHakEaCkAoddm8j4yKdQyEOORbsalRErDes7yLtsXliDuTFuzfFab11DN3/YkT6RCy17 tBzdnS7FkkblUMHkmdAgoa6hONxKjvEnpVH7pHLZFVVdGj66kR7RjjH0frKJOAyzGhy0 xcgJN1hhTWhlMDc7Gb1KSD2V+dm+2nwAo80TSVf3n4tt7adhsWn2CxNBoTrVq5PMOnNc ulUMpkSIr6VtU2QUw2P26i2G/PCfJWsH9hiu6rNKot3qZlKssoHPDer/nYj84xwyrgZj cagA== X-Gm-Message-State: AOJu0Yz4qS1LMiyYV4Cts8UjeZf5teOnS7U40vybRqHhJOLh3d3rainQ Jamv0B+ulKfXDAdfCvNTlDFqh6ybGUGEEG3L2tK3sG6OjkCdY6GD4m8aDUYBtnhtL4QG1wyacWc G X-Google-Smtp-Source: AGHT+IFBezBy/qdVPSmqftU1fzbEkUIkS4EskYHAMMdS6x46EBnvBSGwiGBETHB8j4hoJNvyqvYe8A== X-Received: by 2002:a17:906:50c:b0:a72:8296:ca1f with SMTP id a640c23a62f3a-a780b881d0amr253271366b.50.1720561200134; Tue, 09 Jul 2024 14:40:00 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6dc5e4sm108523566b.48.2024.07.09.14.39.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:39:59 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 16/44] libmultipath: add cleanup_dm_task(), and use it in devmapper.c Date: Tue, 9 Jul 2024 23:39:07 +0200 Message-ID: <20240709213935.177028-17-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-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 allows us to get rid of a lot of goto statements, and generally obtain cleaner code. Additional small changes: - simplify the logic of dm_tgt_version(); the only caller isn't interested in the nature of the error if the version couldn't be obtained. - libmultipath: rename dm_type() to the more fitting dm_type_match() - use symbolic return values in dm_is_mpath() Signed-off-by: Martin Wilck --- libmpathpersist/mpath_persist_int.c | 2 +- libmultipath/devmapper.c | 315 ++++++++++++---------------- libmultipath/devmapper.h | 7 +- multipath/main.c | 4 +- multipathd/dmevents.c | 4 +- multipathd/main.c | 2 +- 6 files changed, 145 insertions(+), 189 deletions(-) diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c index 178c2f5..6da0401 100644 --- a/libmpathpersist/mpath_persist_int.c +++ b/libmpathpersist/mpath_persist_int.c @@ -185,7 +185,7 @@ static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, condlog(3, "alias = %s", alias); - if (dm_map_present(alias) && dm_is_mpath(alias) != 1){ + if (dm_map_present(alias) && dm_is_mpath(alias) != DM_IS_MPATH_YES) { condlog(3, "%s: not a multipath device.", alias); goto out; } diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 8996c1d..3685ef7 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -91,6 +91,12 @@ int libmp_dm_task_run(struct dm_task *dmt) return r; } +static void cleanup_dm_task(struct dm_task **pdmt) +{ + if (*pdmt) + dm_task_destroy(*pdmt); +} + __attribute__((format(printf, 4, 5))) static void dm_write_log (int level, const char *file, int line, const char *f, ...) { @@ -203,8 +209,8 @@ static void init_dm_drv_version(void) static int dm_tgt_version (unsigned int *version, char *str) { - int r = 2; - struct dm_task *dmt; + bool found = false; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_versions *target; struct dm_versions *last_target; unsigned int *v; @@ -220,31 +226,28 @@ static int dm_tgt_version (unsigned int *version, char *str) if (!libmp_dm_task_run(dmt)) { dm_log_error(2, DM_DEVICE_LIST_VERSIONS, dmt); condlog(0, "Cannot communicate with kernel DM"); - goto out; + return 1; } target = dm_task_get_versions(dmt); do { last_target = target; if (!strncmp(str, target->name, strlen(str))) { - r = 1; + found = true; break; } target = (void *) target + target->next; } while (last_target != target); - if (r == 2) { + if (!found) { condlog(0, "DM %s kernel driver not loaded", str); - goto out; + return 1; } v = target->version; version[0] = v[0]; version[1] = v[1]; version[2] = v[2]; - r = 0; -out: - dm_task_destroy(dmt); - return r; + return 0; } static void init_dm_mpath_version(void) @@ -383,18 +386,18 @@ libmp_dm_task_create(int task) static int dm_simplecmd (int task, const char *name, int flags, uint16_t udev_flags) { - int r = 0; + int r; int udev_wait_flag = (((flags & DMFL_NEED_SYNC) || udev_flags) && (task == DM_DEVICE_RESUME || task == DM_DEVICE_REMOVE)); uint32_t cookie = 0; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; if (!(dmt = libmp_dm_task_create (task))) return 0; if (!dm_task_set_name (dmt, name)) - goto out; + return 0; dm_task_skip_lockfs(dmt); /* for DM_DEVICE_RESUME */ #ifdef LIBDM_API_FLUSH @@ -408,7 +411,7 @@ dm_simplecmd (int task, const char *name, int flags, uint16_t udev_flags) { if (udev_wait_flag && !dm_task_set_cookie(dmt, &cookie, DM_UDEV_DISABLE_LIBRARY_FALLBACK | udev_flags)) - goto out; + return 0; r = libmp_dm_task_run (dmt); if (!r) @@ -416,8 +419,6 @@ dm_simplecmd (int task, const char *name, int flags, uint16_t udev_flags) { if (udev_wait_flag) libmp_udev_wait(cookie); -out: - dm_task_destroy (dmt); return r; } @@ -440,8 +441,9 @@ static int dm_addmap (int task, const char *target, struct multipath *mpp, char * params, int ro, uint16_t udev_flags) { int r = 0; - struct dm_task *dmt; - char *prefixed_uuid = NULL; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; + char __attribute__((cleanup(cleanup_charp))) *prefixed_uuid = NULL; + uint32_t cookie = 0; if (task == DM_DEVICE_CREATE && strlen(mpp->wwid) == 0) { @@ -457,10 +459,10 @@ dm_addmap (int task, const char *target, struct multipath *mpp, return 0; if (!dm_task_set_name (dmt, mpp->alias)) - goto addout; + return 0; if (!dm_task_add_target (dmt, 0, mpp->size, target, params)) - goto addout; + return 0; if (ro) dm_task_set_ro(dmt); @@ -469,10 +471,10 @@ dm_addmap (int task, const char *target, struct multipath *mpp, if (asprintf(&prefixed_uuid, UUID_PREFIX "%s", mpp->wwid) < 0) { condlog(0, "cannot create prefixed uuid : %s", strerror(errno)); - goto addout; + return 0; } if (!dm_task_set_uuid(dmt, prefixed_uuid)) - goto freeout; + return 0; dm_task_skip_lockfs(dmt); #ifdef LIBDM_API_FLUSH dm_task_no_flush(dmt); @@ -481,33 +483,28 @@ dm_addmap (int task, const char *target, struct multipath *mpp, if (mpp->attribute_flags & (1 << ATTR_MODE) && !dm_task_set_mode(dmt, mpp->mode)) - goto freeout; + return 0; if (mpp->attribute_flags & (1 << ATTR_UID) && !dm_task_set_uid(dmt, mpp->uid)) - goto freeout; + return 0; if (mpp->attribute_flags & (1 << ATTR_GID) && !dm_task_set_gid(dmt, mpp->gid)) - goto freeout; + return 0; + condlog(2, "%s: %s [0 %llu %s %s]", mpp->alias, task == DM_DEVICE_RELOAD ? "reload" : "addmap", mpp->size, target, params); if (task == DM_DEVICE_CREATE && !dm_task_set_cookie(dmt, &cookie, udev_flags)) - goto freeout; + return 0; r = libmp_dm_task_run (dmt); if (!r) dm_log_error(2, task, dmt); if (task == DM_DEVICE_CREATE) - libmp_udev_wait(cookie); -freeout: - if (prefixed_uuid) - free(prefixed_uuid); - -addout: - dm_task_destroy (dmt); + libmp_udev_wait(cookie); if (r) mpp->need_reload = false; @@ -648,46 +645,41 @@ int dm_map_present(const char * str) int dm_get_map(const char *name, unsigned long long *size, char **outparams) { - int r = DMP_ERR; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; uint64_t start, length; char *target_type = NULL; char *params = NULL; if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) - return r; + return DMP_ERR; if (!dm_task_set_name(dmt, name)) - goto out; + return DMP_ERR; errno = 0; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); if (dm_task_get_errno(dmt) == ENXIO) - r = DMP_NOT_FOUND; - goto out; + return DMP_NOT_FOUND; + else + return DMP_ERR; } - r = DMP_NOT_FOUND; /* Fetch 1st target */ if (dm_get_next_target(dmt, NULL, &start, &length, &target_type, ¶ms) != NULL || !params) /* more than one target or not found target */ - goto out; + return DMP_NOT_FOUND; if (size) *size = length; if (!outparams) - r = DMP_OK; + return DMP_OK; else { *outparams = strdup(params); - r = *outparams ? DMP_OK : DMP_ERR; + return *outparams ? DMP_OK : DMP_ERR; } - -out: - dm_task_destroy(dmt); - return r; } static int @@ -767,7 +759,7 @@ is_mpath_part(const char *part_name, const char *map_name) int dm_get_status(const char *name, char **outstatus) { int r = DMP_ERR; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; uint64_t start, length; char *target_type = NULL; char *status = NULL; @@ -796,7 +788,7 @@ int dm_get_status(const char *name, char **outstatus) goto out; if (!status) { - condlog(2, "get null status."); + condlog(2, "got null status."); goto out; } @@ -808,62 +800,56 @@ int dm_get_status(const char *name, char **outstatus) } out: if (r != DMP_OK) - condlog(0, "%s: error getting map status string", name); + condlog(0, "%s: %s: error getting map status string: %d", + __func__, name, r); - dm_task_destroy(dmt); return r; } -/* - * returns: - * 1 : match - * 0 : no match - * -1 : empty map, or more than 1 target - */ -int dm_type(const char *name, char *type) +enum { + DM_TYPE_NOMATCH = 0, + DM_TYPE_MATCH, + /* more than 1 target */ + DM_TYPE_MULTI, + /* empty map */ + DM_TYPE_EMPTY, + DM_TYPE_ERR, +}; +static int dm_type_match(const char *name, char *type) { - int r = 0; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; uint64_t start, length; char *target_type = NULL; char *params; if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) - return 0; + return DM_TYPE_ERR; if (!dm_task_set_name(dmt, name)) - goto out; + return DM_TYPE_ERR; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); - goto out; + return DM_TYPE_ERR; } /* Fetch 1st target */ if (dm_get_next_target(dmt, NULL, &start, &length, &target_type, ¶ms) != NULL) /* multiple targets */ - r = -1; + return DM_TYPE_MULTI; else if (!target_type) - r = -1; + return DM_TYPE_EMPTY; else if (!strcmp(target_type, type)) - r = 1; - -out: - dm_task_destroy(dmt); - return r; + return DM_TYPE_MATCH; + else + return DM_TYPE_NOMATCH; } -/* - * returns: - * 1 : is multipath device - * 0 : is not multipath device - * -1 : error - */ int dm_is_mpath(const char *name) { - int r = -1; - struct dm_task *dmt; + int r = DM_IS_MPATH_ERR; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_info info; uint64_t start, length; char *target_type = NULL; @@ -874,41 +860,39 @@ int dm_is_mpath(const char *name) goto out; if (!dm_task_set_name(dmt, name)) - goto out_task; + goto out; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); - goto out_task; + goto out; } if (!dm_task_get_info(dmt, &info)) - goto out_task; + goto out; - r = 0; + r = DM_IS_MPATH_NO; if (!info.exists) - goto out_task; + goto out; uuid = dm_task_get_uuid(dmt); if (!uuid || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN) != 0) - goto out_task; + goto out; /* Fetch 1st target */ if (dm_get_next_target(dmt, NULL, &start, &length, &target_type, ¶ms) != NULL) /* multiple targets */ - goto out_task; + goto out; if (!target_type || strcmp(target_type, TGT_MPATH) != 0) - goto out_task; + goto out; - r = 1; -out_task: - dm_task_destroy(dmt); + r = DM_IS_MPATH_YES; out: if (r < 0) - condlog(3, "%s: dm command failed in %s: %s", name, __FUNCTION__, strerror(errno)); + condlog(3, "%s: dm command failed in %s: %s", name, __func__, strerror(errno)); return r; } @@ -1049,7 +1033,7 @@ int _dm_flush_map (const char *mapname, int flags, int retries) unsigned long long mapsize; char *params = NULL; - if (dm_is_mpath(mapname) != 1) + if (dm_is_mpath(mapname) != DM_IS_MPATH_YES) return DM_FLUSH_OK; /* nothing to do */ /* if the device currently has no partitions, do not @@ -1096,7 +1080,7 @@ int _dm_flush_map (const char *mapname, int flags, int retries) } condlog(4, "multipath map %s removed", mapname); return DM_FLUSH_OK; - } else if (dm_is_mpath(mapname) != 1) { + } else if (dm_is_mpath(mapname) != DM_IS_MPATH_YES) { condlog(4, "multipath map %s removed externally", mapname); return DM_FLUSH_OK; /* raced. someone else removed it */ @@ -1131,10 +1115,10 @@ dm_flush_map_nopaths(const char *mapname, int deferred_remove __DR_UNUSED__) return _dm_flush_map(mapname, flags, 0); } -int dm_flush_maps (int retries) +int dm_flush_maps(int retries) { int r = DM_FLUSH_FAIL; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_names *names; unsigned next = 0; @@ -1143,15 +1127,15 @@ int dm_flush_maps (int retries) if (!libmp_dm_task_run (dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); - goto out; + return r; } if (!(names = dm_task_get_names (dmt))) - goto out; + return r; r = DM_FLUSH_OK; if (!names->dev) - goto out; + return r; do { int ret; @@ -1163,16 +1147,13 @@ int dm_flush_maps (int retries) names = (void *) names + next; } while (next); -out: - dm_task_destroy (dmt); return r; } int dm_message(const char * mapname, char * message) { - int r = 1; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; if (!(dmt = libmp_dm_task_create(DM_DEVICE_TARGET_MSG))) return 1; @@ -1191,13 +1172,10 @@ dm_message(const char * mapname, char * message) goto out; } - r = 0; + return 0; out: - if (r) - condlog(0, "DM message failed [%s]", message); - - dm_task_destroy(dmt); - return r; + condlog(0, "DM message failed [%s]", message); + return 1; } int @@ -1305,12 +1283,10 @@ out: return NULL; } -int -dm_get_maps (vector mp) +int dm_get_maps(vector mp) { struct multipath * mpp; - int r = 1; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_names *names; unsigned next = 0; @@ -1322,28 +1298,28 @@ dm_get_maps (vector mp) if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_LIST, dmt); - goto out; + return 1; } if (!(names = dm_task_get_names(dmt))) - goto out; + return 1; if (!names->dev) { - r = 0; /* this is perfectly valid */ - goto out; + /* this is perfectly valid */ + return 0; } do { - if (dm_is_mpath(names->name) != 1) + if (dm_is_mpath(names->name) != DM_IS_MPATH_YES) goto next; mpp = dm_get_multipath(names->name); if (!mpp) - goto out; + return 1; if (!vector_alloc_slot(mp)) { free_multipath(mpp, KEEP_PATHS); - goto out; + return 1; } vector_set_slot(mp, mpp); @@ -1352,11 +1328,7 @@ next: names = (void *) names + next; } while (next); - r = 0; - goto out; -out: - dm_task_destroy (dmt); - return r; + return 0; } int @@ -1419,10 +1391,10 @@ do_foreach_partmaps (const char * mapname, int (*partmap_func)(const char *, void *), void *data) { - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; + char __attribute__((cleanup(cleanup_charp))) *params = NULL; struct dm_names *names; unsigned next = 0; - char *params = NULL; unsigned long long size; char dev_t[32]; int r = 1; @@ -1431,28 +1403,25 @@ do_foreach_partmaps (const char * mapname, if (!(dmt = libmp_dm_task_create(DM_DEVICE_LIST))) return 1; - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_LIST, dmt); - goto out; - } + if (!libmp_dm_task_run(dmt)) + return 1; if (!(names = dm_task_get_names(dmt))) - goto out; + return 1; - if (!names->dev) { - r = 0; /* this is perfectly valid */ - goto out; - } + if (!names->dev) + /* this is perfectly valid */ + return 0; if (dm_dev_t(mapname, &dev_t[0], 32)) - goto out; + return 1; do { if ( /* * if there is only a single "linear" target */ - (dm_type(names->name, TGT_PART) == 1) && + (dm_type_match(names->name, TGT_PART) == DM_TYPE_MATCH) && /* * and the uuid of the target is a partition of the @@ -1472,7 +1441,7 @@ do_foreach_partmaps (const char * mapname, !isdigit(*(p + strlen(dev_t))) ) { if ((r = partmap_func(names->name, data)) != 0) - goto out; + return 1; } free(params); @@ -1481,11 +1450,7 @@ do_foreach_partmaps (const char * mapname, names = (void *) names + next; } while (next); - r = 0; -out: - free(params); - dm_task_destroy (dmt); - return r; + return 0; } struct remove_data { @@ -1623,7 +1588,7 @@ int dm_rename (const char * old, char * new, char *delim, int skip_kpartx) { int r = 0; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; uint32_t cookie = 0; uint16_t udev_flags = DM_UDEV_DISABLE_LIBRARY_FALLBACK | ((skip_kpartx == SKIP_KPARTX_ON)? MPATH_UDEV_NO_KPARTX_FLAG : 0); @@ -1634,22 +1599,19 @@ dm_rename (const char * old, char * new, char *delim, int skip_kpartx) return r; if (!dm_task_set_name(dmt, old)) - goto out; + return r; if (!dm_task_set_newname(dmt, new)) - goto out; + return r; if (!dm_task_set_cookie(dmt, &cookie, udev_flags)) - goto out; + return r; + r = libmp_dm_task_run(dmt); if (!r) dm_log_error(2, DM_DEVICE_RENAME, dmt); libmp_udev_wait(cookie); - -out: - dm_task_destroy(dmt); - return r; } @@ -1672,9 +1634,10 @@ void dm_reassign_deps(char *table, const char *dep, const char *newdep) int dm_reassign_table(const char *name, char *old, char *new) { - int r = 0, modified = 0; + int modified = 0; uint64_t start, length; - struct dm_task *dmt, *reload_dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *reload_dmt = NULL; char *target, *params = NULL; char *buff; void *next = NULL; @@ -1683,16 +1646,16 @@ int dm_reassign_table(const char *name, char *old, char *new) return 0; if (!dm_task_set_name(dmt, name)) - goto out; + return 0; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_TABLE, dmt); - goto out; + return 0; } if (!(reload_dmt = libmp_dm_task_create(DM_DEVICE_RELOAD))) - goto out; + return 0; if (!dm_task_set_name(reload_dmt, name)) - goto out_reload; + return 0; do { next = dm_get_next_target(dmt, next, &start, &length, @@ -1705,13 +1668,13 @@ int dm_reassign_table(const char *name, char *old, char *new) */ condlog(1, "%s: invalid target found in map %s", __func__, name); - goto out_reload; + return 0; } buff = strdup(params); if (!buff) { condlog(3, "%s: failed to replace target %s, " "out of memory", name, target); - goto out_reload; + return 0; } if (strcmp(target, TGT_MPATH) && strstr(params, old)) { condlog(3, "%s: replace target %s %s", @@ -1729,18 +1692,12 @@ int dm_reassign_table(const char *name, char *old, char *new) if (!libmp_dm_task_run(reload_dmt)) { dm_log_error(3, DM_DEVICE_RELOAD, reload_dmt); condlog(3, "%s: failed to reassign targets", name); - goto out_reload; + return 0; } dm_simplecmd_noflush(DM_DEVICE_RESUME, name, MPATH_UDEV_RELOAD_FLAG); } - r = 1; - -out_reload: - dm_task_destroy(reload_dmt); -out: - dm_task_destroy(dmt); - return r; + return 1; } @@ -1752,10 +1709,9 @@ out: int dm_reassign(const char *mapname) { struct dm_deps *deps; - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_info info; char dev_t[32], dm_dep[32]; - int r = 0; unsigned int i; if (dm_dev_t(mapname, &dev_t[0], 32)) { @@ -1769,21 +1725,21 @@ int dm_reassign(const char *mapname) } if (!dm_task_set_name(dmt, mapname)) - goto out; + return 0; if (!libmp_dm_task_run(dmt)) { dm_log_error(3, DM_DEVICE_DEPS, dmt); - goto out; + return 0; } if (!dm_task_get_info(dmt, &info)) - goto out; + return 0; if (!(deps = dm_task_get_deps(dmt))) - goto out; + return 0; if (!info.exists) - goto out; + return 0; for (i = 0; i < deps->count; i++) { sprintf(dm_dep, "%d:%d", @@ -1792,15 +1748,12 @@ int dm_reassign(const char *mapname) sysfs_check_holders(dm_dep, dev_t); } - r = 1; -out: - dm_task_destroy (dmt); - return r; + return 1; } int dm_setgeometry(struct multipath *mpp) { - struct dm_task *dmt; + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct path *pp; char heads[4], sectors[4]; char cylinders[10], start[32]; @@ -1825,7 +1778,7 @@ int dm_setgeometry(struct multipath *mpp) return 0; if (!dm_task_set_name(dmt, mpp->alias)) - goto out; + return 0; /* What a sick interface ... */ snprintf(heads, 4, "%u", pp->geom.heads); @@ -1834,14 +1787,12 @@ int dm_setgeometry(struct multipath *mpp) snprintf(start, 32, "%lu", pp->geom.start); if (!dm_task_set_geometry(dmt, cylinders, heads, sectors, start)) { condlog(3, "%s: Failed to set geometry", mpp->alias); - goto out; + return 0; } r = libmp_dm_task_run(dmt); if (!r) dm_log_error(3, DM_DEVICE_SET_GEOMETRY, dmt); -out: - dm_task_destroy(dmt); return r; } diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index 19b79c5..9438c2d 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -46,7 +46,12 @@ int dm_map_present (const char *name); int dm_map_present_by_uuid(const char *uuid); int dm_get_map(const char *name, unsigned long long *size, char **outparams); int dm_get_status(const char *name, char **outstatus); -int dm_type(const char *name, char *type); + +enum { + DM_IS_MPATH_NO, + DM_IS_MPATH_YES, + DM_IS_MPATH_ERR, +}; int dm_is_mpath(const char *name); enum { diff --git a/multipath/main.c b/multipath/main.c index ce702e7..c82bc86 100644 --- a/multipath/main.c +++ b/multipath/main.c @@ -247,7 +247,7 @@ static int check_usable_paths(struct config *conf, goto out; } - if (dm_is_mpath(mapname) != 1) { + if (dm_is_mpath(mapname) != DM_IS_MPATH_YES) { condlog(1, "%s is not a multipath map", devpath); goto free; } @@ -1080,7 +1080,7 @@ main (int argc, char *argv[]) goto out; } if (cmd == CMD_FLUSH_ONE) { - if (dm_is_mpath(dev) != 1) { + if (dm_is_mpath(dev) != DM_IS_MPATH_YES) { condlog(0, "%s is not a multipath device", dev); r = RTVL_FAIL; goto out; diff --git a/multipathd/dmevents.c b/multipathd/dmevents.c index 3fbdc55..605219e 100644 --- a/multipathd/dmevents.c +++ b/multipathd/dmevents.c @@ -170,7 +170,7 @@ static int dm_get_events(void) /* Don't delete device if dm_is_mpath() fails without * checking the device type */ - if (dm_is_mpath(names->name) == 0) + if (dm_is_mpath(names->name) != DM_IS_MPATH_YES) goto next; event_nr = dm_event_nr(names); @@ -208,7 +208,7 @@ int watch_dmevents(char *name) /* We know that this is a multipath device, so only fail if * device-mapper tells us that we're wrong */ - if (dm_is_mpath(name) == 0) { + if (dm_is_mpath(name) != DM_IS_MPATH_YES) { condlog(0, "%s: not a multipath device. can't watch events", name); return -1; diff --git a/multipathd/main.c b/multipathd/main.c index 58afe14..132bb2e 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -865,7 +865,7 @@ ev_add_map (char * dev, const char * alias, struct vectors * vecs) int reassign_maps; struct config *conf; - if (dm_is_mpath(alias) != 1) { + if (dm_is_mpath(alias) != DM_IS_MPATH_YES) { condlog(4, "%s: not a multipath map", alias); return 0; } From patchwork Tue Jul 9 21:39:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728550 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 C71C4187867 for ; Tue, 9 Jul 2024 21:40:02 +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=1720561205; cv=none; b=PhdElxO0O0TOT6jwahdF4UiMniX8VSkfXkVsAyCCiw71E0KzzzN/duwGMuxSXMqRIxBC00vkRIwPU4fKnNzeBCewb1le7/JmO4535mrtBHqRoHCasE6wWa3nZhjbLfm24Vs3BPXxq3ZeWxgQvCvGpZLGr1CraAYeXETsxnxErGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561205; c=relaxed/simple; bh=lv7X91vB/g3zoouvV+zEy6KpbpmNclGkjnQDY50nNjQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PyhjIL9L+QWgzgx59rxtKTaFqSX8Ny3PzC+ZdTd5EVqM2n78twTf96f4adxKr6cdGpVC5F8MMnFWMjhLkN4GL9Eqssk3z+GNImN9WgJreaBeuSrRWufNlqVnKSFdgcXsWtWp23PwZ6kMoq8wJ4qPOVV9/J6EXogL352vYcgg4Mg= 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=AjMLb93j; 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="AjMLb93j" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a77d9217e6fso484803666b.2 for ; Tue, 09 Jul 2024 14:40:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561201; x=1721166001; 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=4gart813SrB6C4gBDtgwOalqto2PTBfsZC2HLpdYR9M=; b=AjMLb93jAF1DYYBPiCv9Rh8EvfqnazJNGCW9qk9T/Ljh/166jf87PoiCRER7dYoHhf kdsJJBWPjafyhkvG9OKFpZMn7KoLvpeKMJ4vnqUQk6Ah3BvlCZMQe9t0HBByr+x/KrZ0 VwjbRWs7DmIeoX6lA34/OOw4MwAMVZsODqu1Tt9+t8IK3BiMd0S9+hoi3JG3XGjOLB7L RuoFQAjOA6yufFBJ6LiOrfMPEoHefxh4mKTxits29DiXvSQ+BJt46I5ZksykENRpPUei T9gHelfX3Yp63Pnt9buESB5+O1liec/Zkqg/aqkBItUBH7xK4Qrfglg6hMEkDP7s28dl D8eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561201; x=1721166001; 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=4gart813SrB6C4gBDtgwOalqto2PTBfsZC2HLpdYR9M=; b=NxqHNdhdWVSxvA+Kaa1srBT0x81cCLjYpBRG0j1RI8iVllXxyuTY4R3ESLkFqXmL+k IC2jNOzJRgHfpgX3OQKZ1HrLpgvJ3NnZnWSM5+PJt0JsQ/6dDtgjVFzggWwCxZoYAl+8 jLc/LTI5r4EGV+gNLvV2AQCx1oYnomcoFthbQId7qvGG6/K+iWH0cSwoxZo2mmaJHu9x m6Y/xsQe+YdsPdjkLlaJoX0BKU9bk2aiSMZ/q4OA3NekHJRjrPxUZRAiIK3qJHw7wva2 OmSTgseKeUtsuMiDy9uUasVjf+e4zatBa1J0mmXSADTyF7eGLD7IY8LZeLPq8jy2Ocy5 Ru0w== X-Gm-Message-State: AOJu0YwrZrsxiZp9sHgqa1hD2Ez3DxnWfZBU8n7YNNk//3VHG3bra1Fm yqEcTg8u4u/wQJ78KRQpEs7ZL+ZDywPq81iyGbKzDiUGZGPUQMFGVruPMjkAcfY= X-Google-Smtp-Source: AGHT+IF9t7ItbB9ZZGQQ3WerxBXBE7AMjQ1ZAbZkKKfZiXigTo07oLJQv8ZgYEMxXSomJv4bJKE7Nw== X-Received: by 2002:a17:906:d29b:b0:a6f:f1bc:21ce with SMTP id a640c23a62f3a-a780b885e92mr255193366b.47.1720561200993; Tue, 09 Jul 2024 14:40:00 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bba548ddsm1479295a12.16.2024.07.09.14.40.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:00 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 17/44] libmultipath: add libmp_mapinfo() Date: Tue, 9 Jul 2024 23:39:08 +0200 Message-ID: <20240709213935.177028-18-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 libmp_mapinfo() is intended as a generic abstraction for retrieving information from the kernel device-mapper driver. It retrieves the information that the caller needs, with a minimal set of DM ioctls, and never more then 2 ioctl calls. libdm's DM_DEVICE_TABLE and DM_DEVICE_STATUS calls map to the kernel's DM_TABLE_STATUS ioctl, with or without the DM_STATUS_TABLE_FLAG set, respectively. DM_TABLE_STATUS always retrieves the basic map status (struct dm_info) and the map UUID and name, too. Note: I'd prefer to use an unnamed struct instead of _u in union libmp_map_identifer. But doing using an unnamed struct and and initializing the union like this in a function argument: func((mapid_t) { .major = major, .minor = minor }) is not part of C99, and not supported in gcc 4.8, which we still support. Likewise, the following syntax for initializing an empty struct: (mapinfo_t) { 0 } is not supported on all architectures we support (notably clang 3.5 under Debian Jessie). Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 181 +++++++++++++++++++++++++++++- libmultipath/devmapper.h | 66 +++++++++++ libmultipath/libmultipath.version | 3 +- 3 files changed, 248 insertions(+), 2 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 3685ef7..5c9f9d8 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -14,7 +14,6 @@ #include #include #include -#include #include "util.h" #include "vector.h" @@ -604,6 +603,186 @@ has_dm_info(const struct multipath *mpp) return (mpp && mpp->dmi.exists != 0); } +static int libmp_set_map_identifier(int flags, mapid_t id, struct dm_task *dmt) +{ + switch (flags & __DM_MAP_BY_MASK) { + case DM_MAP_BY_UUID: + if (!id.str || !(*id.str)) + return 0; + return dm_task_set_uuid(dmt, id.str); + case DM_MAP_BY_NAME: + if (!id.str || !(*id.str)) + return 0; + return dm_task_set_name(dmt, id.str); + case DM_MAP_BY_DEV: + if (!dm_task_set_major(dmt, id._u.major)) + return 0; + return dm_task_set_minor(dmt, id._u.minor); + default: + condlog(0, "%s: invalid by_id", __func__); + return 0; + } +} + +static int libmp_mapinfo__(int flags, mapid_t id, mapinfo_t info, const char *map_id) +{ + struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; + struct dm_info dmi; + int rc, ioctl_nr; + uint64_t start, length = 0; + char *target_type = NULL, *params = NULL; + const char *name = NULL, *uuid = NULL; + char __attribute__((cleanup(cleanup_charp))) *tmp_target = NULL; + char __attribute__((cleanup(cleanup_charp))) *tmp_status = NULL; + bool tgt_set = false; + + /* + * If both info.target and info.status are set, we need two + * ioctls. Call this function recursively. + * If successful, tmp_target will be non-NULL. + */ + if (info.target && info.status) { + rc = libmp_mapinfo__(flags, id, + (mapinfo_t) { + .target = &tmp_target, + .tgt_type = info.tgt_type, + }, + map_id); + if (rc != DMP_OK) + return rc; + tgt_set = true; + } + + /* + * The DM_DEVICE_TABLE and DM_DEVICE_STATUS ioctls both fetch the basic + * information from DM_DEVICE_INFO, too. + * Choose the most lightweight ioctl to fetch all requested info. + */ + if (info.target && !info.status) + ioctl_nr = DM_DEVICE_TABLE; + else if (info.status || info.size || info.tgt_type) + ioctl_nr = DM_DEVICE_STATUS; + else + ioctl_nr = DM_DEVICE_INFO; + + if (!(dmt = libmp_dm_task_create(ioctl_nr))) + return DMP_ERR; + + if (!libmp_set_map_identifier(flags, id, dmt)) { + condlog(2, "%s: failed to set map identifier to %s", __func__, map_id); + return DMP_ERR; + } + + if (!libmp_dm_task_run(dmt)) { + dm_log_error(3, ioctl_nr, dmt); + if (dm_task_get_errno(dmt) == ENXIO) { + condlog(2, "%s: map %s not found", __func__, map_id); + return DMP_NOT_FOUND; + } else + return DMP_ERR; + } + + condlog(4, "%s: DM ioctl %d succeeded for %s", + __func__, ioctl_nr, map_id); + + if (!dm_task_get_info(dmt, &dmi) || !dmi.exists) { + condlog(2, "%s: map %s doesn't exist", __func__, map_id); + return DMP_NOT_FOUND; + } + + if (info.target || info.status || info.size || info.tgt_type) { + if (dm_get_next_target(dmt, NULL, &start, &length, + &target_type, ¶ms) != NULL) { + condlog(2, "%s: map %s has multiple targets", __func__, map_id); + return DMP_NOT_FOUND; + } + if (!params) { + condlog(2, "%s: map %s has no targets", __func__, map_id); + return DMP_NOT_FOUND; + } + if (info.tgt_type && strcmp(info.tgt_type, target_type)) { + condlog(3, "%s: target type mismatch: \"%s\" != \"%s\"", + __func__, info.tgt_type, target_type); + return DMP_NO_MATCH; + } + } + + /* + * Check possible error conditions. + * If error is returned, don't touch any output parameters. + */ + if ((info.name && !(name = dm_task_get_name(dmt))) + || (info.uuid && !(uuid = dm_task_get_uuid(dmt))) + || (info.status && !(tmp_status = strdup(params))) + || (info.target && !tmp_target && !(tmp_target = strdup(params)))) + return DMP_ERR; + + if (info.name) { + strlcpy(info.name, name, WWID_SIZE); + condlog(4, "%s: %s: name: \"%s\"", __func__, map_id, info.name); + } + if (info.uuid) { + strlcpy(info.uuid, uuid, DM_UUID_LEN); + condlog(4, "%s: %s: uuid: \"%s\"", __func__, map_id, info.uuid); + } + + if (info.size) { + *info.size = length; + condlog(4, "%s: %s: size: %lld", __func__, map_id, *info.size); + } + + if (info.dmi) { + memcpy(info.dmi, &dmi, sizeof(*info.dmi)); + condlog(4, "%s: %s %d:%d, %d targets, %s table, %s, %s, %d opened, %u events", + __func__, map_id, + info.dmi->major, info.dmi->minor, + info.dmi->target_count, + info.dmi->live_table ? "live" : + info.dmi->inactive_table ? "inactive" : "no", + info.dmi->suspended ? "suspended" : "active", + info.dmi->read_only ? "ro" : "rw", + info.dmi->open_count, + info.dmi->event_nr); + } + + if (info.target) { + *info.target = steal_ptr(tmp_target); + if (!tgt_set) + condlog(4, "%s: %s: target: \"%s\"", __func__, map_id, *info.target); + } + + if (info.status) { + *info.status = steal_ptr(tmp_status); + condlog(4, "%s: %s: status: \"%s\"", __func__, map_id, *info.status); + } + + return DMP_OK; +} + +/* Helper: format a string describing the map for log messages */ +static const char* libmp_map_identifier(int flags, mapid_t id, char buf[BLK_DEV_SIZE]) +{ + switch (flags & __DM_MAP_BY_MASK) { + case DM_MAP_BY_NAME: + case DM_MAP_BY_UUID: + return id.str; + case DM_MAP_BY_DEV: + safe_snprintf(buf, BLK_DEV_SIZE, "%d:%d", id._u.major, id._u.minor); + return buf; + default: + safe_snprintf(buf, BLK_DEV_SIZE, "*invalid*"); + return buf; + } +} + +int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info) +{ + char idbuf[BLK_DEV_SIZE]; + + return libmp_mapinfo__(flags, id, info, + libmp_map_identifier(flags, id, idbuf)); +} + int dm_get_info(const char *name, struct dm_info *info) { diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index 9438c2d..269389b 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -1,5 +1,6 @@ #ifndef _DEVMAPPER_H #define _DEVMAPPER_H +#include #include "autoconfig.h" #include "structs.h" @@ -31,8 +32,73 @@ enum { DMP_ERR, DMP_OK, DMP_NOT_FOUND, + DMP_NO_MATCH, }; +/** + * enum mapinfo_flags: input flags for libmp_mapinfo() + */ +enum __mapinfo_flags { + /** DM_MAP_BY_NAME: identify map by device-mapper name from @name */ + DM_MAP_BY_NAME = 0, + /** DM_MAP_BY_UUID: identify map by device-mapper UUID from @uuid */ + DM_MAP_BY_UUID, + /** DM_MAP_BY_DEV: identify map by major/minor number from @dmi */ + DM_MAP_BY_DEV, + __DM_MAP_BY_MASK = (1 << 3) - 1, +}; + +typedef union libmp_map_identifier { + const char *str; + struct { + int major; + int minor; + } _u; +} mapid_t; + +typedef struct libmp_map_info { + /** @name: name of the map. + * If non-NULL, it must point to an array of WWID_SIZE bytes + */ + char *name; + /** @uuid: UUID of the map. + * If non-NULL it must point to an array of DM_UUID_LEN bytes + */ + char *uuid; + /** @dmi: Basic info, must point to a valid dm_info buffer if non-NULL */ + struct dm_info *dmi; + /** @target: target params, *@target will be allocated if @target is non-NULL*/ + char **target; + /** @size: target size. Will be ignored if @target is NULL */ + unsigned long long *size; + /** @status: target status, *@status will be allocated if @status is non-NULL */ + char **status; + /** @tgt_type: (input) set to a target type, e.g. "multipath" to limit + * successful return to just this target type in libmp_mapinfo(). + */ + const char *tgt_type; +} mapinfo_t; + +/** + * libmp_mapinfo(): obtain information about a map from the kernel + * @param flags: see __mapinfo_flags above. + * Exactly one of DM_MAP_BY_NAME, DM_MAP_BY_UUID, and DM_MAP_BY_DEV must be set. + * @param id: string or major/minor to identify the map to query + * @param info: output parameters, see above. Non-NULL elements will be filled in. + * @returns: + * DMP_OK if successful. + * DMP_NOT_FOUND if the map wasn't found, or has no or multiple targets. + * DMP_NO_MATCH if the map didn't match @tgt_type (see above). + * DMP_ERR if some other error occurred. + * + * This function obtains the requested information for the device-mapper map + * identified by the input parameters. + * Output parameters are only filled in if the return value is DMP_OK. + * For target / status / size information, the map's table should contain + * only one target (usually multipath or linear). + */ +int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info); + int dm_prereq(unsigned int *v); void skip_libmp_dm_init(void); void libmp_dm_exit(void); diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index f58cb1d..48c2b67 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -43,7 +43,7 @@ LIBMPATHCOMMON_1.0.0 { put_multipath_config; }; -LIBMULTIPATH_24.0.0 { +LIBMULTIPATH_25.0.0 { global: /* symbols referenced by multipath and multipathd */ add_foreign; @@ -134,6 +134,7 @@ global: libmp_get_version; libmp_get_multipath_config; libmp_dm_task_run; + libmp_mapinfo; libmp_put_multipath_config; libmp_udev_set_sync_support; libmultipath_exit; From patchwork Tue Jul 9 21:39:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728553 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 7BD71185623 for ; Tue, 9 Jul 2024 21:40:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561207; cv=none; b=Pdn2aG+bxhYURNmTvI6zaY3G+oonXW1l8OUMG+IjoaL5ItZauDPEQrW2PHRnGYhldG2NYSoG95ZOuSRBdKAeL31PzQcFiIoskKtZfY1n+rhdlDjLc1+ONR+v590D0v5FLoaubnZ1lCOD1434IjTqSToh5TBHgHTlURIOGiACJYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561207; c=relaxed/simple; bh=XwT9CQ19kN99k3NVN5PJYx1RHPJ+gJ4CfFiWDud4oQ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cqgbZYKg8vX8zLTJvpHdkVQD5OFrog36xKEFGPfy0WRS2RTrhaPRuWpb++13kt+3E7Zpco1gxiVIdI3KpgeCr97sMXz8rQLGgHlD5bcaeUZ2j/04Jvg1fIeC/5qyl+tR2Xcccl/FqTF0X6UdBhjSImvEjvw0iUlcqt0GX0ojkMg= 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=ds3vnkqV; arc=none smtp.client-ip=209.85.218.47 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="ds3vnkqV" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a6fd513f18bso581942866b.3 for ; Tue, 09 Jul 2024 14:40:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561203; x=1721166003; 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=4zh484gl7+Jve+BnBtRphOKtaVgS5g6hD8IQgm37XmI=; b=ds3vnkqVRUClpSZa74EvgZpc8Fs5cfucOOPhjKFZS9hzZdbrlWh7LSXwvkG6kIZu19 gxzEu0T13mubW2nOnwICrq7YpcNaUcVq78X6Sot1whZpfQ7c/ktySW51Ky4hvrQ5mu47 3KHLGU/qMRUWIGbs4jhyD88hgN4Nbhs8JRyVGncsx5KlHQ99xncP3iz2GvP78TPnDaAi vI5SW5LGoskC8/g4+qLVvbeZvjK0N900dDB+mhISLowXsZxNXwPGclRXTcn/7dgxxUr7 Rqh2m/efa87jU8K08ogvEfHPAdNtV3SxUt9eGUBeTTRa2bJ5+/vsPa8nnN4iV6sfEreG PdkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561203; x=1721166003; 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=4zh484gl7+Jve+BnBtRphOKtaVgS5g6hD8IQgm37XmI=; b=pqLoNGa9n0zFEZ+WdVs/3m4slRqazAxOKn2lzqYn+9LUdrcN3ww+L/asuPO+taWGoT Q3K2U0gROuhW+wdLvePxlc31YqbX2OwMMLyFj0Zejho3oCFXTKrta31fGjTZXbaXcT2N i7+/laaKHjOU1YaXBX56VTs+J50FAm/3ZK1m0Tmtt1lvVx51aZTGKaDwPoYh0d0+nVrK XU8w9gztFhTfWBs7Mtv/V/SztjKpISRoM/Dc9Wk8uvtUOqYv2fEtYoDRgSFEbVxDdEnI Y7H+TYdCXndP1p6nBV3ngIfIaYJN4xYIYXYpbTZJ6fG0wFZxCwQnpyH8W5ct3VJlRXRN QWiA== X-Gm-Message-State: AOJu0YzWH6Yvn0I+j+g+kXUEGo7jVO+8CVmp/1M0TLlel5fjrxq5FhK5 wWygUR2wXji7FFGr5QeFgPNCKbjLNnK7hVdMZ/sYNR1fhPunYs7kR1JRWMxGss8NN0WvnO9G4sL W X-Google-Smtp-Source: AGHT+IGbLPlP6rdB0WlnD8+TFKi1TbIntrpafeWipRHJgPdH48rl8xPwi6odGHtKEvoOPq9fUnt9OA== X-Received: by 2002:a17:907:60d4:b0:a77:e0ed:8bc with SMTP id a640c23a62f3a-a780b68a411mr329123366b.4.1720561201962; Tue, 09 Jul 2024 14:40:01 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7fef4esm108104166b.121.2024.07.09.14.40.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:01 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 18/44] libmultipath tests: add tests for libmp_mapinfo() Date: Tue, 9 Jul 2024 23:39:09 +0200 Message-ID: <20240709213935.177028-19-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Unfortunately, we need several ugly compatibility macros again in order to make these tests work with the entire set of compilers and libraries supported by multipath-tools. Details are found in comments in the code. Signed-off-by: Martin Wilck --- tests/Makefile | 3 +- tests/mapinfo.c | 1121 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1123 insertions(+), 1 deletion(-) create mode 100644 tests/mapinfo.c diff --git a/tests/Makefile b/tests/Makefile index 8afa8c6..55fbf0f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -9,7 +9,7 @@ CFLAGS += $(BIN_CFLAGS) -Wno-unused-parameter $(W_MISSING_INITIALIZERS) LIBDEPS += -L. -L $(mpathutildir) -L$(mpathcmddir) -lmultipath -lmpathutil -lmpathcmd -lcmocka TESTS := uevent parser util dmevents hwtable blacklist unaligned vpd pgpolicy \ - alias directio valid devt mpathvalid strbuf sysfs features cli + alias directio valid devt mpathvalid strbuf sysfs features cli mapinfo HELPERS := test-lib.o test-log.o .PRECIOUS: $(TESTS:%=%-test) @@ -68,6 +68,7 @@ sysfs-test_OBJDEPS := $(multipathdir)/sysfs.o $(mpathutildir)/util.o sysfs-test_LIBDEPS := -ludev -lpthread -ldl features-test_LIBDEPS := -ludev -lpthread cli-test_OBJDEPS := $(daemondir)/cli.o +mapinfo-test_LIBDEPS = -lpthread -ldevmapper %.o: %.c @echo building $@ because of $? diff --git a/tests/mapinfo.c b/tests/mapinfo.c new file mode 100644 index 0000000..eb61d2e --- /dev/null +++ b/tests/mapinfo.c @@ -0,0 +1,1121 @@ +/* + * Copyright (c) 2024 Martin Wilck, SUSE + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +/* + * glibc <= 2.19 (Ubuntu Trusty, Debian Jessie) uses macros to inline strdup(), + * which makes our strdup wrapper fail. + */ +#define _GNU_SOURCE 1 +#include +#include +#ifndef __GLIBC_PREREQ +#define __GLIBC_PREREQ(x, y) 0 +#endif +#if defined(__GLIBC__) && !(__GLIBC_PREREQ(2, 20)) +#define __NO_STRING_INLINES 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "util.h" +#include "devmapper.h" +#include "globals.c" +/* + * We can't just use mapinfo-test_OBJDEPS because + */ +#include "../libmultipath/devmapper.c" + +static const struct dm_info __attribute__((unused)) MPATH_DMI_01 = { + .exists = 1, + .live_table = 1, + .open_count = 1, + .target_count = 1, + .major = 254, + .minor = 123, +}; + +static const char __attribute__((unused)) MPATH_NAME_01[] = "mpathx"; +static const char __attribute__((unused)) MPATH_UUID_01[] = + "mpath-3600a098038302d414b2b4d4453474f62"; +static const char __attribute__((unused)) MPATH_TARGET_01[] = + "2 pg_init_retries 50 1 alua 2 1 " + "service-time 0 3 2 65:32 1 1 67:64 1 1 69:96 1 1 " + "service-time 0 3 2 8:16 1 1 66:48 1 1 68:80 1 1 "; +static const char __attribute__((unused)) MPATH_STATUS_01[] = + "2 0 1 0 2 1 " + "A 0 3 2 65:32 A 0 0 1 67:64 A 0 0 1 69:96 A 0 0 1 " + "E 0 3 2 8:16 A 0 0 1 66:48 A 0 0 1 68:80 A 0 0 1 "; + +char *__real_strdup(const char *str); +char *__wrap_strdup(const char *str) +{ + if (mock_type(int)) + return __real_strdup(str); + return NULL; +} + +void __wrap_dm_task_destroy(struct dm_task *t) +{ +} + +struct dm_task *__wrap_dm_task_create(int task) +{ + check_expected(task); + return mock_ptr_type(void *); +} + +int __wrap_dm_task_run(struct dm_task *t) +{ + return mock_type(int); +} + +/* + * Hack for older versions of libdevmapper, where dm_task_get_errno() + * is not available. + */ +#ifndef LIBDM_API_GET_ERRNO +#define WILL_RETURN_GET_ERRNO(y) do { errno = y; } while (0) +#else +int __wrap_dm_task_get_errno(struct dm_task *t) +{ + return mock_type(int); +} +#define WILL_RETURN_GET_ERRNO(y) will_return(__wrap_dm_task_get_errno, y) +#endif + +int __wrap_dm_task_set_name(struct dm_task *t, const char *name) +{ + check_expected(name); + return mock_type(int); +} + +int __wrap_dm_task_set_uuid(struct dm_task *t, const char *uuid) +{ + check_expected(uuid); + return mock_type(int); +} + +int __wrap_dm_task_set_major(struct dm_task *t, int val) +{ + check_expected(val); + return mock_type(int); +} + +int __wrap_dm_task_set_minor(struct dm_task *t, int val) +{ + check_expected(val); + return mock_type(int); +} + +/* between LVM2 2.02.110 and 2.02.112, dm_task_get_info was a macro */ +#ifdef dm_task_get_info +#define WRAP_DM_TASK_GET_INFO(x) \ + will_return(__wrap_dm_task_get_info_with_deferred_remove, x) +int __wrap_dm_task_get_info_with_deferred_remove(struct dm_task *t, struct dm_info *dmi) +#else +#define WRAP_DM_TASK_GET_INFO(x) \ + will_return(__wrap_dm_task_get_info, x) +int __wrap_dm_task_get_info(struct dm_task *t, struct dm_info *dmi) +#endif +{ + int rc = mock_type(int); + + assert_non_null(dmi); + if (rc) { + struct dm_info *info = mock_ptr_type(struct dm_info *); + + memcpy(dmi, info, sizeof(*dmi)); + } + return rc; +} + +void * __wrap_dm_get_next_target(struct dm_task *dmt, void *next, + uint64_t *start, uint64_t *length, + char **target_type, char **params) +{ + *start = 0; + *length = mock_type(uint64_t); + *target_type = mock_ptr_type(char *); + *params = mock_ptr_type(char *); + return mock_ptr_type(void *); +} + +static void mock_dm_get_next_target(uint64_t len, const char *target_type, + const char *params, void *next) +{ + will_return(__wrap_dm_get_next_target, len); + will_return(__wrap_dm_get_next_target, target_type); + will_return(__wrap_dm_get_next_target, params); + will_return(__wrap_dm_get_next_target, next); +} + +const char *__wrap_dm_task_get_name(struct dm_task *t) +{ + return mock_ptr_type(const char *); +} + +const char *__wrap_dm_task_get_uuid(struct dm_task *t) +{ + return mock_ptr_type(const char *); +} + +static void mock_mapinfo_name_1(int ioctl_nr, int create_rc, const char *name, + int name_rc, int run_rc, int err) +{ + expect_value(__wrap_dm_task_create, task, ioctl_nr); + will_return(__wrap_dm_task_create, create_rc); + if (create_rc == 0) + return; + expect_value(__wrap_dm_task_set_name, name, name); + will_return(__wrap_dm_task_set_name, name_rc); + if (name_rc == 0) + return; + will_return(__wrap_dm_task_run, run_rc); + if (run_rc == 0) { + WILL_RETURN_GET_ERRNO(err); + /* for dm_log_error() */ + WILL_RETURN_GET_ERRNO(err); + } +} + +static void test_mapinfo_bad_task_create_01(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 0, NULL, 0, 0, 0); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_mapid(void **state) +{ + int rc; + + /* can't use mock_mapinfo_name() here because of invalid id type */ + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + rc = libmp_mapinfo(DM_MAP_BY_NAME + 100, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_set_name(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 0, 0, 0); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_task_run_01(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_task_run_02(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 0, ENXIO); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +/* If tgt_type is set, libmp_mapinfo must choose DM_DEVICE_STATUS */ +static void test_mapinfo_bad_task_run_03(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_task_run_04(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 0, ENXIO); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +/* If target is set, libmp_mapinfo must choose DM_DEVICE_TABLE */ +static void test_mapinfo_bad_task_run_05(void **state) +{ + int rc; + char *params = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = ¶ms }); + assert_int_equal(rc, DMP_ERR); + assert_ptr_equal(params, NULL); +} + +static void test_mapinfo_bad_task_run_06(void **state) +{ + int rc; + char *params = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 0, ENXIO); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = ¶ms }); + assert_int_equal(rc, DMP_NOT_FOUND); + assert_ptr_equal(params, NULL); +} + +/* If status is set, libmp_mapinfo must choose DM_DEVICE_STATUS */ +static void test_mapinfo_bad_task_run_07(void **state) +{ + int rc; + char *params = NULL; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = ¶ms }); + assert_int_equal(rc, DMP_ERR); + assert_ptr_equal(params, NULL); +} + +static void test_mapinfo_bad_task_run_08(void **state) +{ + int rc; + char *params = NULL; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 0, ENXIO); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = ¶ms }); + assert_int_equal(rc, DMP_NOT_FOUND); + assert_ptr_equal(params, NULL); +} + +static void test_mapinfo_bad_task_run_09(void **state) +{ + int rc; + char *params = NULL, *status = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = ¶ms, .status = &status }); + assert_int_equal(rc, DMP_ERR); + assert_ptr_equal(params, NULL); + assert_ptr_equal(status, NULL); +} + +static void test_mapinfo_bad_task_run_10(void **state) +{ + int rc; + char *params = NULL, *status = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 0, ENXIO); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = ¶ms, .status = &status }); + assert_int_equal(rc, DMP_NOT_FOUND); + assert_ptr_equal(params, NULL); + assert_ptr_equal(status, NULL); +} + +static void test_mapinfo_bad_get_info_01(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(0); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +static void test_mapinfo_bad_get_info_02(void **state) +{ + int rc; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&dmi); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +static void test_mapinfo_bad_get_info_03(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(0); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +static void test_mapinfo_bad_get_info_04(void **state) +{ + int rc; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&dmi); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +static void test_mapinfo_good_exists(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_OK); +} + +static void test_mapinfo_bad_set_uuid(void **state) +{ + int rc; + + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + expect_value(__wrap_dm_task_set_uuid, uuid, "foo"); + will_return(__wrap_dm_task_set_uuid, 0); + rc = libmp_mapinfo(DM_MAP_BY_UUID, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_set_dev_01(void **state) +{ + int rc; + + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + expect_value(__wrap_dm_task_set_major, val, 254); + will_return(__wrap_dm_task_set_major, 0); + rc = libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { 254, 123 } }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_bad_set_dev_02(void **state) +{ + int rc; + + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + expect_value(__wrap_dm_task_set_major, val, 254); + will_return(__wrap_dm_task_set_major, 1); + expect_value(__wrap_dm_task_set_minor, val, 123); + will_return(__wrap_dm_task_set_minor, 0); + rc = libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { 254, 123 } }, + (mapinfo_t) { .name = NULL }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_good_info(void **state) +{ + int rc; + struct dm_info dmi; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .dmi = &dmi }); + assert_int_equal(rc, DMP_OK); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); +} + +static void test_mapinfo_good_by_uuid_info(void **state) +{ + int rc; + struct dm_info dmi; + + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + expect_value(__wrap_dm_task_set_uuid, uuid, "foo"); + will_return(__wrap_dm_task_set_uuid, 1); + will_return(__wrap_dm_task_run, 1); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + rc = libmp_mapinfo(DM_MAP_BY_UUID, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .dmi = &dmi }); + assert_int_equal(rc, DMP_OK); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); +} + +static void test_mapinfo_good_by_dev_info(void **state) +{ + int rc; + struct dm_info dmi; + + expect_value(__wrap_dm_task_create, task, DM_DEVICE_INFO); + will_return(__wrap_dm_task_create, 1); + expect_value(__wrap_dm_task_set_major, val, 254); + will_return(__wrap_dm_task_set_major, 1); + expect_value(__wrap_dm_task_set_minor, val, 123); + will_return(__wrap_dm_task_set_minor, 1); + will_return(__wrap_dm_task_run, 1); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + rc = libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { 254, 123 } }, + (mapinfo_t) { .dmi = &dmi }); + assert_int_equal(rc, DMP_OK); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); +} + +static void test_mapinfo_bad_name(void **state) +{ + int rc; + char name[WWID_SIZE] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + will_return(__wrap_dm_task_get_name, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = name }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_good_name(void **state) +{ + int rc; + char name[WWID_SIZE] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .name = name }); + assert_int_equal(rc, DMP_OK); + assert_true(!strcmp(name, MPATH_NAME_01)); +} + +static void test_mapinfo_bad_uuid(void **state) +{ + int rc; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + will_return(__wrap_dm_task_get_uuid, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .uuid = uuid }); + assert_int_equal(rc, DMP_ERR); +} + +static void test_mapinfo_good_uuid(void **state) +{ + int rc; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_INFO, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + will_return(__wrap_dm_task_get_uuid, MPATH_UUID_01); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .uuid = uuid }); + assert_int_equal(rc, DMP_OK); + assert_true(!strcmp(uuid, MPATH_UUID_01)); +} + +/* If size is set, libmp_mapinfo needs to do a DM_DEVICE_STATUS ioctl */ +static void test_mapinfo_good_size(void **state) +{ + int rc; + unsigned long long size; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, NULL, MPATH_TARGET_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .size = &size }); + assert_int_equal(rc, DMP_OK); + assert_int_equal(size, 12345); +} + +static void test_mapinfo_bad_next_target_01(void **state) +{ + int rc; + unsigned long long size; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + /* multiple targets */ + mock_dm_get_next_target(12345, NULL, MPATH_STATUS_01, (void *)1); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .size = &size }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +static void test_mapinfo_bad_next_target_02(void **state) +{ + int rc; + unsigned long long size; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + /* no targets */ + mock_dm_get_next_target(12345, NULL, NULL, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .size = &size }); + assert_int_equal(rc, DMP_NOT_FOUND); +} + +/* If tgt_type is set, libmp_mapinfo needs to do a DM_DEVICE_STATUS ioctl */ +static void test_mapinfo_bad_target_type_01(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, "linear", MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH }); + assert_int_equal(rc, DMP_NO_MATCH); +} + +static void test_mapinfo_bad_target_type_02(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_NO_MATCH); +} + +static void test_mapinfo_bad_target_type_03(void **state) +{ + int rc; + struct dm_info dmi = { .suspended = 0 }; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_PART, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH, .dmi = &dmi, + .name = name, .uuid = uuid }); + assert_int_equal(rc, DMP_NO_MATCH); + /* make sure memory content is not changed */ + assert_memory_equal(&dmi, &((struct dm_info) { .exists = 0 }), sizeof(dmi)); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); +} + +static void test_mapinfo_bad_target_type_04(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = &status, .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_NO_MATCH); + assert_null(status); +} + +static void test_mapinfo_bad_target_type_05(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *target = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = &target, .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_NO_MATCH); + assert_null(target); +} + +static void test_mapinfo_good_target_type_01(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH }); + assert_int_equal(rc, DMP_OK); +} + +static void test_mapinfo_good_target_type_02(void **state) +{ + int rc; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_PART, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_PART }); + assert_int_equal(rc, DMP_OK); +} + +static void test_mapinfo_good_target_type_03(void **state) +{ + int rc; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH, .dmi = &dmi }); + assert_int_equal(rc, DMP_OK); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); +} + +/* test for returning multiple parameters */ +static void test_mapinfo_good_target_type_04(void **state) +{ + int rc; + struct dm_info dmi = { .suspended = 0 }; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, MPATH_UUID_01); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .tgt_type = TGT_MPATH, .dmi = &dmi, + .name = name, .uuid = uuid }); + assert_int_equal(rc, DMP_OK); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); + assert_true(!strcmp(name, MPATH_NAME_01)); + assert_true(!strcmp(uuid, MPATH_UUID_01)); +} + +static void test_mapinfo_good_status_01(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_strdup, 1); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = &status }); + assert_int_equal(rc, DMP_OK); + assert_non_null(status); + assert_true(!strcmp(status, MPATH_STATUS_01)); +} + +static void test_mapinfo_bad_strdup_01(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, MPATH_UUID_01); + will_return(__wrap_strdup, 0); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = &status, .uuid = uuid, .name = name }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); + +} + +static void test_mapinfo_bad_get_name_01(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = &status, .uuid = uuid, .name = name }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); + +} + +static void test_mapinfo_bad_get_uuid_01(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, NULL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .status = &status, .uuid = uuid, .name = name }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); + +} + +static void test_mapinfo_bad_task_run_11(void **state) +{ + int rc; + char *params = NULL, *status = NULL; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, NULL, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 1); + /* error in 2nd dm_task_run */ + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 0, EINVAL); + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { .target = ¶ms, .status = &status }); + assert_int_equal(rc, DMP_ERR); + assert_ptr_equal(params, NULL); + assert_ptr_equal(status, NULL); +} + +static void test_mapinfo_bad_get_name_02(void **state) +{ + int rc; + char *target = NULL, *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 1); + /* 2nd ioctl */ + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, NULL); + + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { + .target = &target, .status = &status, + .uuid = uuid, .name = name, .dmi = &dmi }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_null(target); + assert_memory_equal(&dmi, &((struct dm_info) { .suspended = 0 }), sizeof(dmi)); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); +} + +static void test_mapinfo_bad_get_uuid_02(void **state) +{ + int rc; + char *target = NULL, *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 1); + /* 2nd ioctl */ + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, NULL); + + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { + .target = &target, .status = &status, + .uuid = uuid, .name = name, .dmi = &dmi }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_null(target); + assert_memory_equal(&dmi, &((struct dm_info) { .suspended = 0 }), sizeof(dmi)); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); +} + +static void test_mapinfo_bad_strdup_02(void **state) +{ + int rc; + char *target = NULL, *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 1); + /* 2nd ioctl */ + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, MPATH_UUID_01); + will_return(__wrap_strdup, 0); + + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { + .target = &target, .status = &status, + .uuid = uuid, .name = name, .dmi = &dmi }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_null(target); + assert_memory_equal(&dmi, &((struct dm_info) { .suspended = 0 }), sizeof(dmi)); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); +} + +static void test_mapinfo_bad_strdup_03(void **state) +{ + int rc; + char *target = NULL, *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + struct dm_info dmi = { .suspended = 0 }; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 0); + /* No 2nd ioctl, as there was an error in the 1st */ + + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { + .target = &target, .status = &status, + .uuid = uuid, .name = name, .dmi = &dmi }); + assert_int_equal(rc, DMP_ERR); + assert_null(status); + assert_null(target); + assert_memory_equal(&dmi, &((struct dm_info) { .suspended = 0 }), sizeof(dmi)); + assert_memory_equal(&name, &((char[WWID_SIZE]) { 0 }), WWID_SIZE); + assert_memory_equal(&uuid, &((char[DM_UUID_LEN]) { 0 }), DM_UUID_LEN); +} + +static void test_mapinfo_good_all_01(void **state) +{ + int rc; + char __attribute__((cleanup(cleanup_charp))) *target = NULL; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + char name[WWID_SIZE] = { 0 }; + char uuid[DM_UUID_LEN] = { 0 }; + struct dm_info dmi = { .suspended = 0 }; + unsigned long long size; + + mock_mapinfo_name_1(DM_DEVICE_TABLE, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_TARGET_01, NULL); + will_return(__wrap_strdup, 1); + /* 2nd ioctl */ + mock_mapinfo_name_1(DM_DEVICE_STATUS, 1, "foo", 1, 1, 0); + WRAP_DM_TASK_GET_INFO(1); + WRAP_DM_TASK_GET_INFO(&MPATH_DMI_01); + mock_dm_get_next_target(12345, TGT_MPATH, MPATH_STATUS_01, NULL); + will_return(__wrap_dm_task_get_name, MPATH_NAME_01); + will_return(__wrap_dm_task_get_uuid, MPATH_UUID_01); + will_return(__wrap_strdup, 1); + + rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = "foo", }, + (mapinfo_t) { + .target = &target, .status = &status, + .uuid = uuid, .name = name, + .dmi = &dmi, .size = &size }); + assert_int_equal(rc, DMP_OK); + assert_non_null(status); + assert_non_null(target); + assert_int_equal(size, 12345); + assert_memory_equal(&dmi, &MPATH_DMI_01, sizeof(dmi)); + assert_true(!strcmp(target, MPATH_TARGET_01)); + assert_true(!strcmp(status, MPATH_STATUS_01)); + assert_true(!strcmp(name, MPATH_NAME_01)); + assert_true(!strcmp(uuid, MPATH_UUID_01)); +} + +static int test_mapinfo(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_mapinfo_bad_task_create_01), + cmocka_unit_test(test_mapinfo_bad_mapid), + cmocka_unit_test(test_mapinfo_bad_set_name), + cmocka_unit_test(test_mapinfo_bad_task_run_01), + cmocka_unit_test(test_mapinfo_bad_task_run_02), + cmocka_unit_test(test_mapinfo_bad_task_run_03), + cmocka_unit_test(test_mapinfo_bad_task_run_04), + cmocka_unit_test(test_mapinfo_bad_task_run_05), + cmocka_unit_test(test_mapinfo_bad_task_run_06), + cmocka_unit_test(test_mapinfo_bad_task_run_07), + cmocka_unit_test(test_mapinfo_bad_task_run_08), + cmocka_unit_test(test_mapinfo_bad_task_run_09), + cmocka_unit_test(test_mapinfo_bad_task_run_10), + cmocka_unit_test(test_mapinfo_bad_task_run_11), + cmocka_unit_test(test_mapinfo_bad_get_info_01), + cmocka_unit_test(test_mapinfo_bad_get_info_02), + cmocka_unit_test(test_mapinfo_bad_get_info_03), + cmocka_unit_test(test_mapinfo_bad_get_info_04), + cmocka_unit_test(test_mapinfo_good_exists), + cmocka_unit_test(test_mapinfo_bad_set_uuid), + cmocka_unit_test(test_mapinfo_bad_set_dev_01), + cmocka_unit_test(test_mapinfo_bad_set_dev_02), + cmocka_unit_test(test_mapinfo_good_info), + cmocka_unit_test(test_mapinfo_good_by_uuid_info), + cmocka_unit_test(test_mapinfo_good_by_dev_info), + cmocka_unit_test(test_mapinfo_bad_name), + cmocka_unit_test(test_mapinfo_good_name), + cmocka_unit_test(test_mapinfo_bad_uuid), + cmocka_unit_test(test_mapinfo_good_uuid), + cmocka_unit_test(test_mapinfo_good_size), + cmocka_unit_test(test_mapinfo_bad_next_target_01), + cmocka_unit_test(test_mapinfo_bad_next_target_02), + cmocka_unit_test(test_mapinfo_bad_target_type_01), + cmocka_unit_test(test_mapinfo_bad_target_type_02), + cmocka_unit_test(test_mapinfo_bad_target_type_03), + cmocka_unit_test(test_mapinfo_bad_target_type_04), + cmocka_unit_test(test_mapinfo_bad_target_type_05), + cmocka_unit_test(test_mapinfo_good_target_type_01), + cmocka_unit_test(test_mapinfo_good_target_type_02), + cmocka_unit_test(test_mapinfo_good_target_type_03), + cmocka_unit_test(test_mapinfo_good_target_type_04), + cmocka_unit_test(test_mapinfo_good_status_01), + cmocka_unit_test(test_mapinfo_bad_get_name_01), + cmocka_unit_test(test_mapinfo_bad_get_uuid_01), + cmocka_unit_test(test_mapinfo_bad_strdup_01), + cmocka_unit_test(test_mapinfo_bad_get_name_02), + cmocka_unit_test(test_mapinfo_bad_get_uuid_02), + cmocka_unit_test(test_mapinfo_bad_strdup_02), + cmocka_unit_test(test_mapinfo_bad_strdup_03), + cmocka_unit_test(test_mapinfo_good_all_01), + }; + return cmocka_run_group_tests(tests, NULL, NULL); +} + +int main(void) +{ + int ret = 0; + + init_test_verbosity(4); + skip_libmp_dm_init(); + ret += test_mapinfo(); + return ret; +} From patchwork Tue Jul 9 21:39:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728551 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 D6F4F18562D for ; Tue, 9 Jul 2024 21:40:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561206; cv=none; b=HIWszUN4h4dWBHr6lsbM1FkNj16Vy05dk7UoBT2dyvnMUQ8oIAnpxopDsayLtcNivoJprHXQ+XiNxE43ajp/J/gwvEzPaQwpGhjYPZ3KoJzc6fx3lvvE6CRbxnuH3LjZe7D3J5APrOMU7C17jbN8599wk7XJSPf/nhRyIuRDoRE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561206; c=relaxed/simple; bh=BWzWrn4DF/tj9PUIMIV2uMHgfBFCDjQeUhVmLC9BLVc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HOnSnexkt6zdjtjKlzG5wSZoHopxFt8H7Mmfu1yTy+twT5EcoLqdTOSZKVSXgk7KOuduS/0ty1bRFia1MltzLLhtbR4OGJK5bbxpbNosgUTKPlDo0n4nrBRRMeZXltODuamU1t8TnvzdVOER4NpN2BpOOfckGfhy3CdTaO7tMRw= 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=eYkM0BDY; arc=none smtp.client-ip=209.85.218.44 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="eYkM0BDY" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a77abe5c709so702747566b.2 for ; Tue, 09 Jul 2024 14:40:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561203; x=1721166003; 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=XTYJDngICXIr2ezVvKYXSchmRJKnzoEJnmixHkgAzLQ=; b=eYkM0BDYJk/NzFKBlZnET57sB56mFYCMgc6Q8s7HRzd4z3UBfmo9BPVMC7QMxJHFZb r3mPZP2bnCdxgq8FBnvsLrywzXY3nLZTNG8ro2pZLrs1dvDMUl68EiHYxQb+no0Sm24h SUu1w+uksWzfgzyLJnQgEMY6GIgWIiwst+Jn4y+pgjPgIg4MH8nJavxVILXYaII5D3Ri wokk+biS9QbgfK9THDxwOlW/wHhwMfk0WUbejJbOIFQu/HSXp8X2LJQsF/cl4wohtFFa KkCHjG0J4oP69t1GYMSHQew/oOAqqHAZ0BIcdQWVaSOcCYuiQe1MT0V3IAhLrqTltkBC w/Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561203; x=1721166003; 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=XTYJDngICXIr2ezVvKYXSchmRJKnzoEJnmixHkgAzLQ=; b=Dwn1mVxVby8uzyz1kwrkxj9xRftk0rPU2BWz/oO9IoqH541RoZUotZ4o496ZNJV3Cg BfoXs2rTCKv5BmX+MT11byD7IXZqpeO+71o8AQeKp/FXzxagfKF9T0xBBffqFiR1nTkR EHBc/ZNAspaQR8OGYwS63VZSBxjjj0oJ41USRAYP0hIV1SI26DCoVTadij9C6ulXWr3k SRBLr56kqRqzj9X7hKJeQMP8njW2I3PPgWOqRjbo1CYA9T/WWRAupOOrOm2xd6jsWWbK 2XStvOsAGObnAKaXTyT6cxyF2yaKNTdMGf6vpAyE4zgm6G+TBZvo8gV5HV1FjpC/A/on f/zA== X-Gm-Message-State: AOJu0YyjpbPAoAAotfDhH+CxdTE9fLfvcAV3aSzn4icd5tjCOINlOG57 F4NP7IdiFcVJseNozJVctOk2vofaGfg0tI4egGIc++70TD7G4z6ZSmEiP2z2C5u6L+ua12UIdJ2 Y X-Google-Smtp-Source: AGHT+IFxES/60hFWtY5qojyjjecmMbxln5vJT2kdhHWAFMgbvg5v25zxqbHyV7ZCaJQCAl3ThKRfOg== X-Received: by 2002:a17:906:3989:b0:a77:cd4f:e4f5 with SMTP id a640c23a62f3a-a780b89ca7dmr212765266b.68.1720561203082; Tue, 09 Jul 2024 14:40:03 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a871ec9sm106868866b.200.2024.07.09.14.40.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:02 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 19/44] libmultipath: implement dm_get_info() and dm_map_present() with new API Date: Tue, 9 Jul 2024 23:39:10 +0200 Message-ID: <20240709213935.177028-20-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 54 ++++--------------------------- libmultipath/devmapper.h | 16 +++++++-- libmultipath/libmultipath.version | 2 -- multipathd/main.c | 4 +-- 4 files changed, 23 insertions(+), 53 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 5c9f9d8..bdeba48 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -783,45 +783,6 @@ int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info) libmp_map_identifier(flags, id, idbuf)); } -int -dm_get_info(const char *name, struct dm_info *info) -{ - int r = -1; - struct dm_task *dmt; - - if (!name || !info) - return r; - - if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) - return r; - - if (!dm_task_set_name(dmt, name)) - goto out; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_INFO, dmt); - goto out; - } - - if (!dm_task_get_info(dmt, info)) - goto out; - - if (!info->exists) - goto out; - - r = 0; -out: - dm_task_destroy(dmt); - return r; -} - -int dm_map_present(const char * str) -{ - struct dm_info info; - - return (dm_get_info(str, &info) == 0); -} - int dm_get_map(const char *name, unsigned long long *size, char **outparams) { struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; @@ -1120,15 +1081,14 @@ out: return r; } -static int -dm_dev_t (const char * mapname, char * dev_t, int len) +static int dm_dev_t (const char *mapname, char *dev_t, int len) { struct dm_info info; - if (dm_get_info(mapname, &info) != 0) + if (dm_get_info(mapname, &info) != DMP_OK) return 1; - if (snprintf(dev_t, len, "%i:%i", info.major, info.minor) > len) + if (safe_snprintf(dev_t, len, "%i:%i", info.major, info.minor)) return 1; return 0; @@ -1169,7 +1129,7 @@ dm_get_major_minor(const char *name, int *major, int *minor) { struct dm_info info; - if (dm_get_info(name, &info) != 0) + if (dm_get_info(name, &info) != DMP_OK) return -1; *major = info.major; @@ -1515,7 +1475,7 @@ dm_geteventnr (const char *name) { struct dm_info info; - if (dm_get_info(name, &info) != 0) + if (dm_get_info(name, &info) != DMP_OK) return -1; return info.event_nr; @@ -1526,7 +1486,7 @@ dm_is_suspended(const char *name) { struct dm_info info; - if (dm_get_info(name, &info) != 0) + if (dm_get_info(name, &info) != DMP_OK) return -1; return info.suspended; @@ -1678,7 +1638,7 @@ dm_get_deferred_remove (const char * mapname) { struct dm_info info; - if (dm_get_info(mapname, &info) != 0) + if (dm_get_info(mapname, &info) != DMP_OK) return -1; return info.deferred_remove; diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index 269389b..0cdd757 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -99,6 +99,20 @@ typedef struct libmp_map_info { */ int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info); +static inline int dm_get_info(const char *mapname, struct dm_info *info) +{ + return libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mapname }, + (mapinfo_t) { .dmi = info }); +} + +static inline int dm_map_present(const char *mapname) +{ + return libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mapname }, + (mapinfo_t) { .name = NULL }) == DMP_OK; +} + int dm_prereq(unsigned int *v); void skip_libmp_dm_init(void); void libmp_dm_exit(void); @@ -108,7 +122,6 @@ int dm_simplecmd_flush (int task, const char *name, uint16_t udev_flags); int dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags); int dm_addmap_create (struct multipath *mpp, char *params); int dm_addmap_reload (struct multipath *mpp, char *params, int flush); -int dm_map_present (const char *name); int dm_map_present_by_uuid(const char *uuid); int dm_get_map(const char *name, unsigned long long *size, char **outparams); int dm_get_status(const char *name, char **outstatus); @@ -159,7 +172,6 @@ int dm_get_major_minor (const char *name, int *major, int *minor); char * dm_mapname(int major, int minor); int dm_get_uuid(const char *name, char *uuid, int uuid_len); bool has_dm_info(const struct multipath *mpp); -int dm_get_info (const char * mapname, struct dm_info *dmi); int dm_rename (const char * old, char * new, char * delim, int skip_kpartx); int dm_reassign(const char * mapname); int dm_reassign_table(const char *name, char *old, char *new); diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index 48c2b67..7a50349 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -78,14 +78,12 @@ global: dm_flush_map_nopaths; dm_flush_maps; dm_geteventnr; - dm_get_info; dm_get_major_minor; dm_get_maps; dm_get_multipath; dm_get_uuid; dm_is_mpath; dm_mapname; - dm_map_present; dm_prereq; dm_queue_if_no_path; dm_reassign; diff --git a/multipathd/main.c b/multipathd/main.c index 132bb2e..394ca7d 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -502,7 +502,7 @@ remove_maps_and_stop_waiters(struct vectors *vecs) int refresh_multipath(struct vectors *vecs, struct multipath *mpp) { - if (dm_get_info(mpp->alias, &mpp->dmi)) { + if (dm_get_info(mpp->alias, &mpp->dmi) != DMP_OK) { /* Error accessing table */ condlog(2, "%s: cannot access table", mpp->alias); goto out; @@ -722,7 +722,7 @@ add_map_without_path (struct vectors *vecs, const char *alias) mpp->alias = strdup(alias); - if (dm_get_info(mpp->alias, &mpp->dmi)) { + if (dm_get_info(mpp->alias, &mpp->dmi) != DMP_OK) { condlog(3, "%s: cannot access table", mpp->alias); goto out; } From patchwork Tue Jul 9 21:39:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728552 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 94C0B187878 for ; Tue, 9 Jul 2024 21:40:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561207; cv=none; b=dXAm84vd6gldz9XbqYnTNeEcTRvH54t8VqYmkYwr+TBOwO41EEWGtNwqwc9Isn+pegww7/MgesN1l4fY2eJflJTqcx5MAiRcEOMoEVHrNZRDJoNYkB5Iy20z1yaB1qRfxN7WbXaUOCGb/lP62DJr7Loev+w1Jd3gPzh39d7ZJuc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561207; c=relaxed/simple; bh=5azA+96xjxAf/3cdlZ8QO4L0n3Xyk9ehEouToGEdoxA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qjlsioiHphatMH+W1aKR/De5Y1cmDWiI0SrtB2wy6CeDbVcZqbNCGfaQ095M5gaNmLpShuwUczilrcj6E0Lp0L3+EtJFw8EKAmXCQgPleea11cR0VuTItJVPGmX8mJs2P5IwX6bYoRQK4wPiP2h8peE2PF6NiMKykVhSoxSzTN8= 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=ZHLwGel8; arc=none smtp.client-ip=209.85.218.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="ZHLwGel8" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a77cc73d35fso35431566b.0 for ; Tue, 09 Jul 2024 14:40:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561204; x=1721166004; 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=dNOLoa86oCDwoFhLeNdxj1vxeRQCeNWt1xwXJCqeQbk=; b=ZHLwGel8EMJb4pJMuGoLJGuSCsGbl/lb9Nxc6NuyuyeSl3ghWmhqBD5UcuC2utY4z6 g4NZDjkew/brGj9O9ZOy5RH4YtGQYIcp+BX1vAMF8cGkrlSbxv+U3FTCXRZE84YiZhNj yYDCRFEgEbICavsy9xlntCZxvfmcNse5NL0qLyZT7Q/TcfxXmfNrOw9cGc2fp79di/ut CxLjaQheSTDsFetgEVhX6Eo+8Rx2wF2di161wEqCgONsLQGJUi/wbE3o7z9hXbTL6coc HrLrGyEtPNyQz2GiWboq4QnPAMRIzG2oCsWoGkpAD5BOt+b9e8MJpiF70UcPX5sGTGXk T69A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561204; x=1721166004; 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=dNOLoa86oCDwoFhLeNdxj1vxeRQCeNWt1xwXJCqeQbk=; b=l6PEwO9QKNEMcLmBaQXxzBSt4ACutkXQ110MH2eBJ+2uyBq39+OFOC0hYlrA4Ql1za sFq+Dtxq1ZT9JG1l4JLSXNew7WctMv+4B/t4369vPoir25GlHvPFnaXS2E/ZHBpSC5uo ODbvgTJT/5sA64gpEt+IRTIy5LV2NdaunsHHBn3XgMpVZwsGSmDJggCPengYKCNRTWnX N9m87qfXrdCJaCHWuCHQcKeK+66lcvKdY6YPQyn15WNR022pXJzl0nbbX8JTNPKcNmqJ aV5zfJxWILBuSjoE5MHf/BhO3KIJOQtj7Y8fSKtIMeyWtTpEYBDjXcaz35hqcAKb8xUx iJBg== X-Gm-Message-State: AOJu0YySVlkrXU636O3wCA9ow8pPC6Ez0A1L1bLa7qVZ6EBsq7fK1LJF 9Rncr0BzKueFLR1ewOaR0C7ndFPq7X1Vw1yGUOyM60b/5RCrlfd3LORYiXMyvjG8dL/SpOr4dEu s X-Google-Smtp-Source: AGHT+IFruyo7+OYMYddabwvtX28lgVNPW5/kA15d+vmK6MpN02J1Yy34wGFJMYhNbysV3RCmEt7LiQ== X-Received: by 2002:a17:906:c151:b0:a77:a1f1:cfa0 with SMTP id a640c23a62f3a-a780d30b945mr287928066b.36.1720561203883; Tue, 09 Jul 2024 14:40:03 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6e04fesm107717966b.68.2024.07.09.14.40.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:03 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 20/44] libmultipath: remove dm_get_prefixed_uuid() Date: Tue, 9 Jul 2024 23:39:11 +0200 Message-ID: <20240709213935.177028-21-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ... and replace it by calls to the new API. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 53 +++++++++------------------------------- 1 file changed, 11 insertions(+), 42 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index bdeba48..56157af 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -783,6 +783,13 @@ int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info) libmp_map_identifier(flags, id, idbuf)); } +static int dm_get_dm_uuid(const char *mapname, char uuid[DM_UUID_LEN]) +{ + return libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mapname }, + (mapinfo_t) { .uuid = uuid }); +} + int dm_get_map(const char *name, unsigned long long *size, char **outparams) { struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; @@ -822,48 +829,11 @@ int dm_get_map(const char *name, unsigned long long *size, char **outparams) } } -static int -dm_get_prefixed_uuid(const char *name, char *uuid, int uuid_len) -{ - struct dm_task *dmt; - const char *uuidtmp; - struct dm_info info; - int r = 1; - - dmt = libmp_dm_task_create(DM_DEVICE_INFO); - if (!dmt) - return 1; - - if (uuid_len > 0) - uuid[0] = '\0'; - - if (!dm_task_set_name (dmt, name)) - goto uuidout; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_INFO, dmt); - goto uuidout; - } - - if (!dm_task_get_info(dmt, &info) || - !info.exists) - goto uuidout; - - uuidtmp = dm_task_get_uuid(dmt); - if (uuidtmp) - strlcpy(uuid, uuidtmp, uuid_len); - - r = 0; -uuidout: - dm_task_destroy(dmt); - return r; -} - int dm_get_uuid(const char *name, char *uuid, int uuid_len) { char tmp[DM_UUID_LEN]; - if (dm_get_prefixed_uuid(name, tmp, sizeof(tmp))) + if (dm_get_dm_uuid(name, tmp) != DMP_OK) return 1; if (!strncmp(tmp, UUID_PREFIX, UUID_PREFIX_LEN)) @@ -874,16 +844,15 @@ int dm_get_uuid(const char *name, char *uuid, int uuid_len) return 0; } -static int -is_mpath_part(const char *part_name, const char *map_name) +static int is_mpath_part(const char *part_name, const char *map_name) { char *p; char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN]; - if (dm_get_prefixed_uuid(part_name, part_uuid, sizeof(part_uuid))) + if (dm_get_dm_uuid(part_name, part_uuid) != DMP_OK) return 0; - if (dm_get_prefixed_uuid(map_name, map_uuid, sizeof(map_uuid))) + if (dm_get_dm_uuid(map_name, map_uuid) != DMP_OK) return 0; if (strncmp(part_uuid, "part", 4) != 0) From patchwork Tue Jul 9 21:39:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728554 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.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 E1209185606 for ; Tue, 9 Jul 2024 21:40:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561212; cv=none; b=eLb71ARyzSDqLqzrZSLA00jB1uCQLr620galqOs5qc6vCldqFLVrM+y6hWXT7ycek6YwyjuuSiJj6zWMZKSLZcILyeRz1jyKJlBk1ra9AaWCiuIZgkOQ7ypGOSeLpUzBnBV0Hq48H6LrZoLFn0NAKkd6uKgTgN8FCb7tCGlq4y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561212; c=relaxed/simple; bh=0Arq6FobvC/yg1NMVzOqfs+p/A5SaARA9LMGqdwpy3w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mI0EpYqXrpXjED10VeNssdWdHHPc8v/oHIlmABJt3QMayKgNOwIdiYwxcmRAbu2l5KMLzbtZwt6d7ifVlO5yd0AevJI0Q3FFBXKxZqnSTxFAzCwhid6m0jdbCEiykZ8L5vBz0kZm3OIrkRlAokcb8jJLhYY88FxxrWPAEKpwtoI= 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=Im1u7hvW; arc=none smtp.client-ip=209.85.208.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="Im1u7hvW" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-58be2b8b6b2so7087226a12.3 for ; Tue, 09 Jul 2024 14:40:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561208; x=1721166008; 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=nwlUJpYb6U4EqVvswuKJvgPSc9BM580QPbusVluxCK4=; b=Im1u7hvWFuRIiiAgrNs1tdq6wZ7N1q5q+UuNhzOSOBabImLUz7tVjo0AlotjjkecDT RYM9GHWcnT04KcybedHL18lgoThbYQWbbVyAFVFYNquO8FT6cIvZ0rdjT6t2ePXDXWXB sSjF/dI5T2H29AADqAoNFxNGFp07yRx/87JJgUemd8GXAMNKdK1hcP8IyRswCszFofDn ln7dmsK4UzW+pEjLVJiTMCNgDS8d31QI3BU5YPp2pv6dzbqgi81ebDUZ/tXW5RyJVxRT kjg8yjlIEn0/nBhakOSz7zvGZDf8kvDRfH6CT2L088w7wUfJ47+hRYfkaKe0TH8bxThn oAAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561208; x=1721166008; 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=nwlUJpYb6U4EqVvswuKJvgPSc9BM580QPbusVluxCK4=; b=ojk8oAINQhRRSey9g7fKeO5kNeGl7mryaBcaG4yZP8kdrGNw1Ykk4as3WmgJjn405x K0UcHKJSfmlmmooORYTJdnTMbog1Xe1Z24HUsg32rSGtX3ATbGU6c/BKhAD919g8MW+8 ZFpZLXS3WJnTOhm59EIv1Cq10qGkUSrJyhoYXzCtwtR9CVPRvmLC5zCxu4slt7nl1I27 Dvungd7WkHWeB2m5/zmdjB9YzGixPqW8AhAeEo1L/1aFIAuH0IVBN6mOcMWw/vYYC1eL Wqd8auGbbJLAOIF05tAiX7+YdeAbwwQrZ5RXNwzJ4H6mKREqH9N5b8siHS7E2Eb6nsbP rvmA== X-Gm-Message-State: AOJu0Yy4FHiQe6r6N2aThGz2Naq3931urmIchCuTKxL0ImOgOuWwngpy TSl+P1dvFqLCwLP9fLvS0SfSB3jVYkuUxYYvCoehCmwhkAitKBDy1tgmZ+2VqX4= X-Google-Smtp-Source: AGHT+IELml/qlbbzJHhGC8gNgaJEQIhb8FW6m5EjnuL3qtFmHbxaSuWR9f2uq8eLcEHALNb1R/HPZQ== X-Received: by 2002:a05:6402:34c8:b0:58c:fec8:1fc5 with SMTP id 4fb4d7f45d1cf-594bb580499mr2579874a12.21.1720561204626; Tue, 09 Jul 2024 14:40:04 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bb9604easm1485506a12.4.2024.07.09.14.40.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:04 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 21/44] libmultipath: is_mpath_part(): improve parsing Date: Tue, 9 Jul 2024 23:39:12 +0200 Message-ID: <20240709213935.177028-22-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Use sscanf to make the parsing of the UUID more robust. Signed-off-by: Martin Wilck Reviewed-by: Benjamin Marzinski --- libmultipath/devmapper.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 56157af..d62a7dd 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -846,23 +846,20 @@ int dm_get_uuid(const char *name, char *uuid, int uuid_len) static int is_mpath_part(const char *part_name, const char *map_name) { - char *p; - char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN]; + char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN], c; + int np, nc; if (dm_get_dm_uuid(part_name, part_uuid) != DMP_OK) return 0; + if (2 != sscanf(part_uuid, "part%d-%n" UUID_PREFIX "%c", &np, &nc, &c) + || np <= 0) + return 0; + if (dm_get_dm_uuid(map_name, map_uuid) != DMP_OK) return 0; - if (strncmp(part_uuid, "part", 4) != 0) - return 0; - - p = strstr(part_uuid, UUID_PREFIX); - if (p && !strcmp(p, map_uuid)) - return 1; - - return 0; + return !strcmp(part_uuid + nc, map_uuid); } int dm_get_status(const char *name, char **outstatus) From patchwork Tue Jul 9 21:39:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728557 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 C249C182A6D for ; Tue, 9 Jul 2024 21:40:10 +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=1720561214; cv=none; b=isnKwRyjcmcz3exwSB9+zXReUmOu5JkkS1Qua1eJDlzHATyn3C3bjoScHtfXu1prtd7+lTSNh7BXlezmpQe/2Va7+DXq/MUx327ZffoTt/NqzgXyIbUt3tUSvwmNMdzY+r80f17DkiBK55eCopT8O0VSh2WsoSMYMWVCkKckzz8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561214; c=relaxed/simple; bh=csylcke6BdbmZMFhkVXwRXn4wM1P+lh6Pa36kcUXHIc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cv2vnvqJlfB85bTbuJGVYxrPaPWxtmjDQVMlx2OmWmBs7ta//M4tqPCcfc/6Ny/n/BLcgYIZH398TZY1P/PiFOaO4HzpltGV3xc/xccf48rbrg5k6pu7Hcu4HbJsEWdoziAwGDbiF+QaPmlCU9Aym0kqt96EXGiC9kQKmq0PEnM= 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=EKVC9Iv8; 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="EKVC9Iv8" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-58b966b41fbso7196438a12.1 for ; Tue, 09 Jul 2024 14:40:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561209; x=1721166009; 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=8X9T97/PY+qt0a8zabI8us2VqRqOlmOTyAGmxnVWmvs=; b=EKVC9Iv8du52CwavJNmaswwf1wMSvp6E3kDpJZb7D35sKij7M/g9T/sqQ2+OldD0qN joHYmbuLg5uWld3KCrpRzkGNsCM4fjauH+vJux+PCql4GXvjaahzBqLafp5lgAkXtKk4 kEeF6Jz6cSZQxLrTY9PjsldTxmxj4Gcyr4K/PSrKN1lCSswi4sh6oU3xM2O7j5UttKMw sbFMrzGo4iUIx2a78eEuJNmQLjwRCvEH35zQa+9kbsRV1DzZSaJiiE/NYOGmWkKD4KBr SgS3l25H8gbn/QHBWz5Vam53Mbfb0Ze+O2ieVN9quCG8uRBi6oSz0qCcSviPdr7T7CB+ 8IFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561209; x=1721166009; 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=8X9T97/PY+qt0a8zabI8us2VqRqOlmOTyAGmxnVWmvs=; b=mTlhb1Ncb5PTvxrBrFgZbtSNq3srj3KqZYIpDZDJeOBF+UbCY6MRFS4VntyVaur93J 2f5Z8ZS9wCH464lFKwcaJZYBPHjLhrc1jTMjWkg6kRUt9oNgiDOLDXpKkTpqve6zouOd RYswh9zKSsES9j+tlQ4I8VkIBglDZIS0HYvIOpS0G8qo4Gbiz60wCvyQGC/624Bccf/R GchEkFxcBBmCbqZDxCYc+3Gsrh8w/GuqXs2fFIN+pfOI0fyUnMF29ozn1WuUtgBskkZe hhzXOroPerLQTqRyq+j/r/l2BtrnrBwnrcwJ5AYlVJNvVDjlaa67gueIs6T9EeRu9oV2 gz7w== X-Gm-Message-State: AOJu0YxRJHOC3yvIGOJq2OhVX2onqjwQS7iNxkeNz8bcHS2vR/1UWqSb EtirWy53ntTG8KW8s93+YaPOaABLBrj602jIk7aEEMJh8GuIVU2ohfE4fM0iG9A= X-Google-Smtp-Source: AGHT+IGs3umQNvjc1LauFv7zmtffMML8I71RXyJj+z3y7TwihsvSyKeyib000gtX+Hgo8JPsQfImGw== X-Received: by 2002:a17:906:7147:b0:a77:dbe2:31ff with SMTP id a640c23a62f3a-a780b89a07dmr261195966b.66.1720561209066; Tue, 09 Jul 2024 14:40:09 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6dfb19sm108812866b.66.2024.07.09.14.40.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:08 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 22/44] libmultipath: rename dm_get_uuid() -> dm_get_wwid() Date: Tue, 9 Jul 2024 23:39:13 +0200 Message-ID: <20240709213935.177028-23-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ... to make the distinction between WWID (multipath) and UUID (device mapper) a little more obvious. Signed-off-by: Martin Wilck --- libmultipath/alias.c | 2 +- libmultipath/configure.c | 4 ++-- libmultipath/devmapper.c | 4 ++-- libmultipath/devmapper.h | 2 +- libmultipath/libmultipath.version | 2 +- libmultipath/wwids.c | 2 +- multipathd/main.c | 2 +- tests/alias.c | 30 +++++++++++++++--------------- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/libmultipath/alias.c b/libmultipath/alias.c index a54616c..10e58a7 100644 --- a/libmultipath/alias.c +++ b/libmultipath/alias.c @@ -410,7 +410,7 @@ static bool alias_already_taken(const char *alias, const char *map_wwid) char wwid[WWID_SIZE]; /* If the map doesn't exist, it's fine */ - if (dm_get_uuid(alias, wwid, sizeof(wwid)) != 0) + if (dm_get_wwid(alias, wwid, sizeof(wwid)) != 0) return false; /* If both the name and the wwid match, it's fine.*/ diff --git a/libmultipath/configure.c b/libmultipath/configure.c index b5c701f..666d4e8 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -846,7 +846,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) if (mpp->action == ACT_CREATE && dm_map_present(mpp->alias)) { char wwid[WWID_SIZE]; - if (dm_get_uuid(mpp->alias, wwid, sizeof(wwid)) == 0) { + if (dm_get_wwid(mpp->alias, wwid, sizeof(wwid)) == 0) { if (!strncmp(mpp->wwid, wwid, sizeof(wwid))) { condlog(3, "%s: map already present", mpp->alias); @@ -1320,7 +1320,7 @@ static int _get_refwwid(enum mpath_cmds cmd, const char *dev, break; case DEV_DEVMAP: - if (((dm_get_uuid(dev, tmpwwid, WWID_SIZE)) == 0) + if (((dm_get_wwid(dev, tmpwwid, WWID_SIZE)) == 0) && (strlen(tmpwwid))) refwwid = tmpwwid; diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index d62a7dd..94ef369 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -829,7 +829,7 @@ int dm_get_map(const char *name, unsigned long long *size, char **outparams) } } -int dm_get_uuid(const char *name, char *uuid, int uuid_len) +int dm_get_wwid(const char *name, char *uuid, int uuid_len) { char tmp[DM_UUID_LEN]; @@ -1377,7 +1377,7 @@ struct multipath *dm_get_multipath(const char *name) if (dm_get_map(name, &mpp->size, NULL) != DMP_OK) goto out; - if (dm_get_uuid(name, mpp->wwid, WWID_SIZE) != 0) + if (dm_get_wwid(name, mpp->wwid, WWID_SIZE) != 0) condlog(2, "%s: failed to get uuid for %s", __func__, name); if (dm_get_info(name, &mpp->dmi) != 0) condlog(2, "%s: failed to get info for %s", __func__, name); diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index 0cdd757..0043812 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -170,7 +170,7 @@ int dm_geteventnr (const char *name); int dm_is_suspended(const char *name); int dm_get_major_minor (const char *name, int *major, int *minor); char * dm_mapname(int major, int minor); -int dm_get_uuid(const char *name, char *uuid, int uuid_len); +int dm_get_wwid(const char *name, char *uuid, int uuid_len); bool has_dm_info(const struct multipath *mpp); int dm_rename (const char * old, char * new, char * delim, int skip_kpartx); int dm_reassign(const char * mapname); diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index 7a50349..7d3ff63 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -81,7 +81,7 @@ global: dm_get_major_minor; dm_get_maps; dm_get_multipath; - dm_get_uuid; + dm_get_wwid; dm_is_mpath; dm_mapname; dm_prereq; diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c index 591cd09..7a4cb74 100644 --- a/libmultipath/wwids.c +++ b/libmultipath/wwids.c @@ -295,7 +295,7 @@ should_multipath(struct path *pp1, vector pathvec, vector mpvec) struct multipath *mp = find_mp_by_wwid(mpvec, pp1->wwid); if (mp != NULL && - dm_get_uuid(mp->alias, tmp_wwid, WWID_SIZE) == 0 && + dm_get_wwid(mp->alias, tmp_wwid, WWID_SIZE) == 0 && !strncmp(tmp_wwid, pp1->wwid, WWID_SIZE)) { condlog(3, "wwid %s is already multipathed, keeping it", pp1->wwid); diff --git a/multipathd/main.c b/multipathd/main.c index 394ca7d..442a154 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -727,7 +727,7 @@ add_map_without_path (struct vectors *vecs, const char *alias) goto out; } if (!strlen(mpp->wwid)) - dm_get_uuid(mpp->alias, mpp->wwid, WWID_SIZE); + dm_get_wwid(mpp->alias, mpp->wwid, WWID_SIZE); if (!strlen(mpp->wwid)) condlog(1, "%s: adding map with empty WWID", mpp->alias); conf = get_multipath_config(); diff --git a/tests/alias.c b/tests/alias.c index 95ce994..1f78656 100644 --- a/tests/alias.c +++ b/tests/alias.c @@ -76,7 +76,7 @@ int WRAP_FUNC(mkstemp)(char *template) return 10; } -int __wrap_dm_get_uuid(const char *name, char *uuid, int uuid_len) +int __wrap_dm_get_wwid(const char *name, char *uuid, int uuid_len) { int ret; @@ -436,17 +436,17 @@ static int test_scan_devname(void) static void mock_unused_alias(const char *alias) { - expect_string(__wrap_dm_get_uuid, name, alias); - expect_value(__wrap_dm_get_uuid, uuid_len, WWID_SIZE); - will_return(__wrap_dm_get_uuid, 1); + expect_string(__wrap_dm_get_wwid, name, alias); + expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); + will_return(__wrap_dm_get_wwid, 1); } static void mock_self_alias(const char *alias, const char *wwid) { - expect_string(__wrap_dm_get_uuid, name, alias); - expect_value(__wrap_dm_get_uuid, uuid_len, WWID_SIZE); - will_return(__wrap_dm_get_uuid, 0); - will_return(__wrap_dm_get_uuid, wwid); + expect_string(__wrap_dm_get_wwid, name, alias); + expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); + will_return(__wrap_dm_get_wwid, 0); + will_return(__wrap_dm_get_wwid, wwid); } #define USED_STR(alias_str, wwid_str) wwid_str ": alias '" alias_str "' already taken, reselecting alias\n" @@ -469,17 +469,17 @@ static void mock_self_alias(const char *alias, const char *wwid) #define mock_failed_alias(alias, wwid) \ do { \ - expect_string(__wrap_dm_get_uuid, name, alias); \ - expect_value(__wrap_dm_get_uuid, uuid_len, WWID_SIZE); \ - will_return(__wrap_dm_get_uuid, 1); \ + expect_string(__wrap_dm_get_wwid, name, alias); \ + expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); \ + will_return(__wrap_dm_get_wwid, 1); \ } while (0) #define mock_used_alias(alias, wwid) \ do { \ - expect_string(__wrap_dm_get_uuid, name, alias); \ - expect_value(__wrap_dm_get_uuid, uuid_len, WWID_SIZE); \ - will_return(__wrap_dm_get_uuid, 0); \ - will_return(__wrap_dm_get_uuid, "WWID_USED"); \ + expect_string(__wrap_dm_get_wwid, name, alias); \ + expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); \ + will_return(__wrap_dm_get_wwid, 0); \ + will_return(__wrap_dm_get_wwid, "WWID_USED"); \ expect_condlog(3, USED_STR(alias, wwid)); \ } while(0) From patchwork Tue Jul 9 21:39:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728555 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (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 7D70A185611 for ; Tue, 9 Jul 2024 21:40:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561213; cv=none; b=WdiG9jB5CP+WLBURCAod8ZxMJ8R6/FrbmBpNM29h6yJ8xOvAEVfVZzoUDemkWlPn3b8CTYXp6pAcKHKmpzmW5ZrBLuWBj0Neji2vT3S24BWha2XdxOX73RRaX0RBHRZhjeJgkRZhKtQB1M7TlBcdEl8blQJA2U4YV5oQJBMS/Xc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561213; c=relaxed/simple; bh=YEH3XQR0KDrAuALFPMVLKa+CKSuvbvo6D56AXw5W3hY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cDi4/BiLTWvNtLDLd3MjIy+gf2ppP4Njh4dzVq4iSa9VALd04qUQF3TgSC7EZZGVTDmkg8nPNp/LOIXtzXs9UTYm8+WQabH9hfWRo94z4Hj+XYl9fpqKUWWeB9ncOyV5rpEOJ5FnUmHDmpPSXxl7tbhy3CJO2jYXx09aGrQrtVA= 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=ZM4ym6Ed; arc=none smtp.client-ip=209.85.218.41 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="ZM4ym6Ed" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a77c25beae1so607670566b.2 for ; Tue, 09 Jul 2024 14:40:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561210; x=1721166010; 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=f1kTpLELxl0LB7YFL2/B75rXHGI5oW5sgqVtvgnaTVk=; b=ZM4ym6Ed/DyKsA1pLa12uuXaYWs6Jhch3Wrx7rqGXB2eJ20N3Jx7HIMtJSzgJOYFYw 8sw16hwq24CM9BE3FAakHPQGIS2KwLUwjPLZJ/ijTlq2HuVH6checsXGizSq+RtZbu60 RSpCgBE+EfVGzdQvoL+OQfkG3fvy2VpS9CE3IjMt/1dxFqeFrbYpiI9qjPiMQlAN/iOg z2Rkwy4w2vavIQ7ToUjErOeGQ/kspJ9fm3vCrv7HtLiMvXJeKzZxTBywORbPCZ+VZdcT Y7nDEfIrFO4kN6ks/eS0deh+kDEnTL6okJ2o4KDxf6eR0HQYXCjU8keqhjnR8zV1iGXY qnmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561210; x=1721166010; 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=f1kTpLELxl0LB7YFL2/B75rXHGI5oW5sgqVtvgnaTVk=; b=ibJHYsP4DiEFwpygjhwG77igRL6uvj6n1kaRy+pTtu6cNna+w88CE0R7q7K3kMLXTW StRKZJmQRYHIP36RkssGPHsWjJ1/e3S5WAmqaL9UNqxNzV8Fr0guvevKJHOBx8J3AI23 wNc8uhZENBpijYmuXuWhlTHVBObs4hzZl52C2a7waB7cz7NkC/ba9hxNeluh4NI+ZmCO i5UmviMTL3JumAgibe2GyrEzsGvzTJN/KlCdRA8A4XlCbUXX7bvuEDdDOfnf8iHlXHWh 4+nCy/BcxcC0sKsaY2I5VHyMspOdiRQ8sRg5KLbzKrByDWxu1vc67cxWv3SFfO89Dm1m W0Jw== X-Gm-Message-State: AOJu0YztQryaV+iGAhuJCag2SQitwHvcefThu0aIDf+fcFkat3suhRyE qe1+67Co9p4bMOBviTlCn4mJv7D8R59NkePAL1h2Dq5uAqjLWFVtWbhtsJMkIq8= X-Google-Smtp-Source: AGHT+IGUwwyul7usXfS5oCkgokqLYdnbYflTSuZstdnvll6SYPKIrThbuinxADbDcjgFz/5X/Fpx+g== X-Received: by 2002:a17:906:4886:b0:a77:b5e7:ee7b with SMTP id a640c23a62f3a-a780b89cb94mr239460566b.71.1720561209849; Tue, 09 Jul 2024 14:40:09 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7ff243sm108411566b.128.2024.07.09.14.40.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:09 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 23/44] libmultipath: improve dm_get_wwid() return value logic Date: Tue, 9 Jul 2024 23:39:14 +0200 Message-ID: <20240709213935.177028-24-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Make dm_get_wwid() return different status codes for non-existing maps, maps that exists but are not multipath maps, and generic error case, and handle these return codes appropriately in callers. Signed-off-by: Martin Wilck --- libmultipath/alias.c | 5 +++-- libmultipath/configure.c | 23 +++++++++++------------ libmultipath/devmapper.c | 21 ++++++++++++++++----- libmultipath/wwids.c | 2 +- tests/alias.c | 10 +++++----- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/libmultipath/alias.c b/libmultipath/alias.c index 10e58a7..2ab9499 100644 --- a/libmultipath/alias.c +++ b/libmultipath/alias.c @@ -408,13 +408,14 @@ static bool alias_already_taken(const char *alias, const char *map_wwid) { char wwid[WWID_SIZE]; + int rc = dm_get_wwid(alias, wwid, sizeof(wwid)); /* If the map doesn't exist, it's fine */ - if (dm_get_wwid(alias, wwid, sizeof(wwid)) != 0) + if (rc == DMP_NOT_FOUND) return false; /* If both the name and the wwid match, it's fine.*/ - if (strncmp(map_wwid, wwid, sizeof(wwid)) == 0) + if (rc == DMP_OK && strncmp(map_wwid, wwid, sizeof(wwid)) == 0) return false; condlog(3, "%s: alias '%s' already taken, reselecting alias", diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 666d4e8..565ea5c 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -845,18 +845,17 @@ int domap(struct multipath *mpp, char *params, int is_daemon) if (mpp->action == ACT_CREATE && dm_map_present(mpp->alias)) { char wwid[WWID_SIZE]; + int rc = dm_get_wwid(mpp->alias, wwid, sizeof(wwid)); - if (dm_get_wwid(mpp->alias, wwid, sizeof(wwid)) == 0) { - if (!strncmp(mpp->wwid, wwid, sizeof(wwid))) { - condlog(3, "%s: map already present", - mpp->alias); - mpp->action = ACT_RELOAD; - } else { - condlog(0, "%s: map \"%s\" already present with WWID %s, skipping", - mpp->wwid, mpp->alias, wwid); - condlog(0, "please check alias settings in config and bindings file"); - mpp->action = ACT_REJECT; - } + if (rc == DMP_OK && !strncmp(mpp->wwid, wwid, sizeof(wwid))) { + condlog(3, "%s: map already present", + mpp->alias); + mpp->action = ACT_RELOAD; + } else if (rc == DMP_OK || rc == DMP_NO_MATCH) { + condlog(1, "%s: map \"%s\" already present with WWID \"%s\", skipping\n" + "please check alias settings in config and bindings file", + mpp->wwid, mpp->alias, wwid); + mpp->action = ACT_REJECT; } } @@ -1320,7 +1319,7 @@ static int _get_refwwid(enum mpath_cmds cmd, const char *dev, break; case DEV_DEVMAP: - if (((dm_get_wwid(dev, tmpwwid, WWID_SIZE)) == 0) + if (((dm_get_wwid(dev, tmpwwid, WWID_SIZE)) == DMP_OK) && (strlen(tmpwwid))) refwwid = tmpwwid; diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 94ef369..1eebcb5 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -829,19 +829,30 @@ int dm_get_map(const char *name, unsigned long long *size, char **outparams) } } +/** + * dm_get_wwid(): return WWID for a multipath map + * @returns: + * DMP_OK if successful + * DMP_NOT_FOUND if the map doesn't exist + * DMP_NO_MATCH if the map exists but is not a multipath map + * DMP_ERR for other errors + */ int dm_get_wwid(const char *name, char *uuid, int uuid_len) { char tmp[DM_UUID_LEN]; + int rc = dm_get_dm_uuid(name, tmp); - if (dm_get_dm_uuid(name, tmp) != DMP_OK) - return 1; + if (rc != DMP_OK) + return rc; if (!strncmp(tmp, UUID_PREFIX, UUID_PREFIX_LEN)) strlcpy(uuid, tmp + UUID_PREFIX_LEN, uuid_len); - else + else { uuid[0] = '\0'; + return DMP_NO_MATCH; + } - return 0; + return DMP_OK; } static int is_mpath_part(const char *part_name, const char *map_name) @@ -1377,7 +1388,7 @@ struct multipath *dm_get_multipath(const char *name) if (dm_get_map(name, &mpp->size, NULL) != DMP_OK) goto out; - if (dm_get_wwid(name, mpp->wwid, WWID_SIZE) != 0) + if (dm_get_wwid(name, mpp->wwid, WWID_SIZE) != DMP_OK) condlog(2, "%s: failed to get uuid for %s", __func__, name); if (dm_get_info(name, &mpp->dmi) != 0) condlog(2, "%s: failed to get info for %s", __func__, name); diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c index 7a4cb74..aac18c0 100644 --- a/libmultipath/wwids.c +++ b/libmultipath/wwids.c @@ -295,7 +295,7 @@ should_multipath(struct path *pp1, vector pathvec, vector mpvec) struct multipath *mp = find_mp_by_wwid(mpvec, pp1->wwid); if (mp != NULL && - dm_get_wwid(mp->alias, tmp_wwid, WWID_SIZE) == 0 && + dm_get_wwid(mp->alias, tmp_wwid, WWID_SIZE) == DMP_OK && !strncmp(tmp_wwid, pp1->wwid, WWID_SIZE)) { condlog(3, "wwid %s is already multipathed, keeping it", pp1->wwid); diff --git a/tests/alias.c b/tests/alias.c index 1f78656..a95b308 100644 --- a/tests/alias.c +++ b/tests/alias.c @@ -84,7 +84,7 @@ int __wrap_dm_get_wwid(const char *name, char *uuid, int uuid_len) check_expected(uuid_len); assert_non_null(uuid); ret = mock_type(int); - if (ret == 0) + if (ret == DMP_OK) strcpy(uuid, mock_ptr_type(char *)); return ret; } @@ -438,14 +438,14 @@ static void mock_unused_alias(const char *alias) { expect_string(__wrap_dm_get_wwid, name, alias); expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); - will_return(__wrap_dm_get_wwid, 1); + will_return(__wrap_dm_get_wwid, DMP_NOT_FOUND); } static void mock_self_alias(const char *alias, const char *wwid) { expect_string(__wrap_dm_get_wwid, name, alias); expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); - will_return(__wrap_dm_get_wwid, 0); + will_return(__wrap_dm_get_wwid, DMP_OK); will_return(__wrap_dm_get_wwid, wwid); } @@ -471,14 +471,14 @@ static void mock_self_alias(const char *alias, const char *wwid) do { \ expect_string(__wrap_dm_get_wwid, name, alias); \ expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); \ - will_return(__wrap_dm_get_wwid, 1); \ + will_return(__wrap_dm_get_wwid, DMP_NOT_FOUND); \ } while (0) #define mock_used_alias(alias, wwid) \ do { \ expect_string(__wrap_dm_get_wwid, name, alias); \ expect_value(__wrap_dm_get_wwid, uuid_len, WWID_SIZE); \ - will_return(__wrap_dm_get_wwid, 0); \ + will_return(__wrap_dm_get_wwid, DMP_OK); \ will_return(__wrap_dm_get_wwid, "WWID_USED"); \ expect_condlog(3, USED_STR(alias, wwid)); \ } while(0) From patchwork Tue Jul 9 21:39:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728556 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (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 438B5185623 for ; Tue, 9 Jul 2024 21:40:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561214; cv=none; b=JTr/RDuCLI+CPt2sfvLl6YhuvkT08cvmWMEf0qy94urhuUlb5yEtVo+YFTY+yG9fsvw3MFFYO2KtfCejVewmKVnv4gnsinLb9UuG3Pue25AALiXOLzUvpZp1QOxgY7cR56tRw3n8WQJ80C/Nhpz+WDGv+tS5B/zy5p/MQm7oVEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561214; c=relaxed/simple; bh=LtITAMouhWRQa92PIMNhmtyK49k0N36M+sl4NydPuPI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=txmPY9BWMk9O7uAn2/01IQT71wL3qk1tfqN2nnEANV5guduKDhYsqCTu7AREg5aNXT9K23+66IYymqkNKlPsMqNhsg/cJ0OTkZb+veZ7q5mpfbSIjo/dJ2xzwUkvPqM8c4hY+IF2ib0H5kOJAtYqEeckotvqWfOalg1v4Ytx4bs= 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=SxG1TMgv; arc=none smtp.client-ip=209.85.208.47 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="SxG1TMgv" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-58f9874aeb4so6200260a12.0 for ; Tue, 09 Jul 2024 14:40:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561211; x=1721166011; 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=dnWRTY943+wOFieUZpcmUssG/G6SgBmhUFJKPdk9UfE=; b=SxG1TMgv6Y1GHQ7ftqytwVAXgRaZjpV/CM/DO0ZFxxC2c06JWaPGZvCZv72qpFM9Ur BaNKqnNETGgCHQ+sGFEVkQLPbAEtWizymfl4c6s5Dwg7BaBSn1N+JZhsqQxRAhFujHOw nwfN+nMGGQPzK5yovJVp1oYHajufbOVedZ75o9RGCMAdlk6IwtwcMsmdzZhbCKbxX48u 1DCalGgoMF8OMquslVLCOCQmksjGa9DSpsGl6n/dbGDol1fsJgOPNAN7WoInet5QaPUR 1Jj22j1bFCwyIrqRUwJuzWNogO1Zfm/NHg690dQb14JBoEeD1+QivpNAHigNpBKDuzYh BkZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561211; x=1721166011; 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=dnWRTY943+wOFieUZpcmUssG/G6SgBmhUFJKPdk9UfE=; b=kskqhiconvs5B36rcb4YoLe8/no2HI04XoWI+0qwgk68eFXr8fHbMzKAU7vaGDEgd8 c5y28pFwQ3o1g7/4ijYpAeWju4R6fH05f5cBwDj6HOyMxmoYS2bv/IMVhXNFlxyfCmz6 /wKY66mdtYwslaA+T6CUm8UjM8n40i1L0cvsJdsYbMf7Q+KZZEbq2EGBewSsD6JF+IrM 6MKsif30Se0GxOd48rvDNVW5gEA+1HE0tT4Cb1prV/fKhbXyLI1uyLQUa+vD/wS/2cG0 Dp5gki6TS7MoFYFDZbL8vplxMDQQdYe+zZ9KBAPo5+x36YYSTvvw6bZk8g+Mb2pIc8LX okmg== X-Gm-Message-State: AOJu0YzVMrKdsunwlP2uzDf1b9n4hpPHVvVhZUPUNc9Ytv5MccIrM0ql eZtSErSjr+k/+gRg0v+T1WmyCIyQ/ZaTCJNGy6X48fhx/H8mxqhQefKeXEOJzDI5FzfcbeClKIJ n X-Google-Smtp-Source: AGHT+IFmz+wGPIsZwNhXhBKMh+5KcPpsJbR/8KI1asp01i/CvS5P3FVCjQF7Wv/F/qPPlm8AbCrvIQ== X-Received: by 2002:a17:906:fa8c:b0:a6e:f7bc:dcab with SMTP id a640c23a62f3a-a780b89debbmr247563966b.65.1720561210660; Tue, 09 Jul 2024 14:40:10 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a86f636sm107185966b.208.2024.07.09.14.40.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:10 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 24/44] libmultipath: reimplement dm_map_name() with new API Date: Tue, 9 Jul 2024 23:39:15 +0200 Message-ID: <20240709213935.177028-25-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 1eebcb5..caa8385 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1469,37 +1469,15 @@ dm_is_suspended(const char *name) return info.suspended; } -char * -dm_mapname(int major, int minor) +char *dm_mapname(int major, int minor) { - char * response = NULL; - const char *map; - struct dm_task *dmt; - int r; + char name[WWID_SIZE]; - if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) + if (libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { major, minor } }, + (mapinfo_t) { .name = name }) != DMP_OK) return NULL; - - if (!dm_task_set_major(dmt, major) || - !dm_task_set_minor(dmt, minor)) - goto bad; - - r = libmp_dm_task_run(dmt); - if (!r) { - dm_log_error(2, DM_DEVICE_INFO, dmt); - goto bad; - } - - map = dm_task_get_name(dmt); - if (map && strlen(map)) - response = strdup((const char *)map); - - dm_task_destroy(dmt); - return response; -bad: - dm_task_destroy(dmt); - condlog(0, "%i:%i: error fetching map name", major, minor); - return NULL; + return strdup(name); } static int From patchwork Tue Jul 9 21:39:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728558 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.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 5C13118785E for ; Tue, 9 Jul 2024 21:40:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561215; cv=none; b=qMFuZ9k38BaJkTgFXyirlVtbL+J5bYSbZiWVcz5xmz+GlzodYS4nRDYegWjhQGsv7nwDngB6FuHrMns2lBSZUSFrrWcnCXP+s6oY3qxvia0BLKZ1kFGFHOVRgk7BnPJrYW+NDefqgv8xzmnd3xHS1pzlaZ/MJjJ79WksQl5YbAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561215; c=relaxed/simple; bh=9VSycf6Q+k221LeK1oQlx84SNM5Dw6Pd+iKQBdxpMfI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=etjZ8ptoiGwCBQ9q/zyhNbkCpzo37QFXJOvQaeOt7+eafprkSipBRfCdQ2RKY330mI7M8CYrAjZJIKS9/5/03Rl2hI3nkxW6cmq5sMOO//ccfANFD9Hoxwd0C0nLm1d4ZbkcIXzhuqpFS++btTPZu9OviFB3snEZl52VFHH59JU= 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=EFz6a7g7; arc=none smtp.client-ip=209.85.208.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="EFz6a7g7" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-58b447c513aso6798827a12.2 for ; Tue, 09 Jul 2024 14:40:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561212; x=1721166012; 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=LN1fbjZFmnUsldYWJZV1+VPh4sqgs+Zz76f7Q0BIp4I=; b=EFz6a7g7HnAAkKc7W0CtNrWRwU+T3+n2x0pqpcEWzF8C5tzvV97pinsCJ9K66Rf7Vn Adh4lEkgbUZbZo49VVmwXmxIlRdmrnTqT3EmS9yz4jfiVIybhD54BQ3T38Rw/Echa4W/ /ctyTsQAldol+6Ho8Rybo+rXf0aTTrib5pOqz7NwCa2k1wmDRq/Wg+Ys6Xqbjs2FvDDx w9gSRETaQ8EZ4xL7mypj3n/sOqEPesRjNoqFrXl53Jl19muysT63Z/Uv5sNurIPAbFS/ DbZ26Nt2w1NHJtienmEmrUDe0wXflqBT0WJzKaBE574wcFbtmmoUniWOd2VytwjkbC0X META== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561212; x=1721166012; 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=LN1fbjZFmnUsldYWJZV1+VPh4sqgs+Zz76f7Q0BIp4I=; b=WSJy+eyEPj63EsDKxtDbPtpI3G6AkVTLah53efCHgl+gfuzDn5uK9tmRNZPHXMsdoS Tu8TsnR9wSN7fZMqDcMNRPuRaINiAhVU6GOem1NaFujLQjWSotvc4LaFP/J1hrXUQULY tffFcXJc23KUuSc0Cf+WZ2wBVuaZ7CqZ6IOmn4mUmkYUvcx/2eJx1YCkNPRj8Eov/AFL IPFaIXJAHhbaWwkTtrpM5BOTh80JUzSp3RxTq0Ri6IG4IPeINTIs9iyfR77DX41K4GYG BZrJj8el/MfuODmFOZ0bosq48qH0HWVUQoAvZvA5TpJ7tFk2s0WTMG6aio4nsl+tpcIv Ks5A== X-Gm-Message-State: AOJu0YwVl08Ml11q5zWHfsXCMFOmujEBESYdkLDMHhzEzLd4lu4dFsm7 ZmsT3dCj+91n9X/vqOEMpDU0WMxE4TAbOkvehLq47Y9NGJIr25ubXiWTCsBDxTCuLVaTx1sOR8E c X-Google-Smtp-Source: AGHT+IGvVoWN6t/hjd0ZIyLmTrOSDzl8nTS7mG1kwlP02nLmjdHzGRrasCqW90khEmOuJ2T1B/MMsw== X-Received: by 2002:a50:8e15:0:b0:57d:524:8818 with SMTP id 4fb4d7f45d1cf-594ba5a0330mr2288688a12.20.1720561211665; Tue, 09 Jul 2024 14:40:11 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bb9604f7sm1476885a12.15.2024.07.09.14.40.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:11 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 25/44] libmultipath: reimplement dm_map_present_by_uuid() Date: Tue, 9 Jul 2024 23:39:16 +0200 Message-ID: <20240709213935.177028-26-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ... and rename it to dm_map_present_by_wwid(). Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 47 ++++++---------------------------------- libmultipath/devmapper.h | 2 +- libmultipath/valid.c | 2 +- tests/valid.c | 10 ++++----- 4 files changed, 14 insertions(+), 47 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index caa8385..8a0578e 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1013,49 +1013,16 @@ out: return r; } -/* - * Return - * 1 : map with uuid exists - * 0 : map with uuid doesn't exist - * -1 : error - */ -int -dm_map_present_by_uuid(const char *uuid) +int dm_map_present_by_wwid(const char *wwid) { - struct dm_task *dmt; - struct dm_info info; - char prefixed_uuid[WWID_SIZE + UUID_PREFIX_LEN]; - int r = -1; + char tmp[DM_UUID_LEN]; - if (!uuid || uuid[0] == '\0') - return 0; + if (safe_sprintf(tmp, UUID_PREFIX "%s", wwid)) + return DMP_ERR; - if (safe_sprintf(prefixed_uuid, UUID_PREFIX "%s", uuid)) - goto out; - - if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) - goto out; - - if (!dm_task_set_uuid(dmt, prefixed_uuid)) - goto out_task; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_INFO, dmt); - goto out_task; - } - - if (!dm_task_get_info(dmt, &info)) - goto out_task; - - r = !!info.exists; - -out_task: - dm_task_destroy(dmt); -out: - if (r < 0) - condlog(3, "%s: dm command failed in %s: %s", uuid, - __FUNCTION__, strerror(errno)); - return r; + return libmp_mapinfo(DM_MAP_BY_UUID, + (mapid_t) { .str = tmp }, + (mapinfo_t) { .name = NULL }); } static int dm_dev_t (const char *mapname, char *dev_t, int len) diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index 0043812..db5c5fd 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -122,7 +122,7 @@ int dm_simplecmd_flush (int task, const char *name, uint16_t udev_flags); int dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags); int dm_addmap_create (struct multipath *mpp, char *params); int dm_addmap_reload (struct multipath *mpp, char *params, int flush); -int dm_map_present_by_uuid(const char *uuid); +int dm_map_present_by_wwid(const char *uuid); int dm_get_map(const char *name, unsigned long long *size, char **outparams); int dm_get_status(const char *name, char **outstatus); diff --git a/libmultipath/valid.c b/libmultipath/valid.c index f223778..9267cef 100644 --- a/libmultipath/valid.c +++ b/libmultipath/valid.c @@ -360,7 +360,7 @@ is_path_valid(const char *name, struct config *conf, struct path *pp, if (check_wwids_file(pp->wwid, 0) == 0) return PATH_IS_VALID_NO_CHECK; - if (dm_map_present_by_uuid(pp->wwid) == 1) + if (dm_map_present_by_wwid(pp->wwid) == DMP_OK) return PATH_IS_VALID; /* all these act like FIND_MULTIPATHS_STRICT for finding if a diff --git a/tests/valid.c b/tests/valid.c index 18a5a7b..a93bbe5 100644 --- a/tests/valid.c +++ b/tests/valid.c @@ -189,7 +189,7 @@ int __wrap_check_wwids_file(char *wwid, int write_wwid) return -1; } -int __wrap_dm_map_present_by_uuid(const char *uuid) +int __wrap_dm_map_present_by_wwid(const char *uuid) { int ret = mock_type(int); assert_string_equal(uuid, mock_ptr_type(char *)); @@ -271,8 +271,8 @@ static void setup_passing(char *name, char *wwid, unsigned int check_multipathd, will_return(__wrap_check_wwids_file, wwid); if (stage == STAGE_CHECK_WWIDS) return; - will_return(__wrap_dm_map_present_by_uuid, 0); - will_return(__wrap_dm_map_present_by_uuid, wwid); + will_return(__wrap_dm_map_present_by_wwid, 0); + will_return(__wrap_dm_map_present_by_wwid, wwid); } static void test_bad_arguments(void **state) @@ -516,8 +516,8 @@ static void test_check_uuid_present(void **state) memset(&pp, 0, sizeof(pp)); conf.find_multipaths = FIND_MULTIPATHS_STRICT; setup_passing(name, wwid, CHECK_MPATHD_RUNNING, STAGE_CHECK_WWIDS); - will_return(__wrap_dm_map_present_by_uuid, 1); - will_return(__wrap_dm_map_present_by_uuid, wwid); + will_return(__wrap_dm_map_present_by_wwid, 1); + will_return(__wrap_dm_map_present_by_wwid, wwid); assert_int_equal(is_path_valid(name, &conf, &pp, true), PATH_IS_VALID); assert_string_equal(pp.dev, name); From patchwork Tue Jul 9 21:39:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728559 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 67B02185636 for ; Tue, 9 Jul 2024 21:40:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561216; cv=none; b=mpnS0slRNohAqg3MYudoDPuFNnRj4GnaKl42AI+I18FhEVE4rutRQn+/2Z35W9UFoNGnzxCvFM4h7MwXdpPqQyC5ThCpaZOo6tu5dA1O2Ze+QCTz24fPQyOYtn4oNrCdnqC3zGEPWTAS8bqWCVGSEBSFvc8Rr6ppT5e3NpBTaBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561216; c=relaxed/simple; bh=C94yUtNXkwZ6klNJBB0/rZalOT3csQUNhdVHCFeg+HA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tD5aaqkAzTDitYOiY2Oy6W0FYh2Ko7iIKU1YTUvA9smT7SbE+gegRqFXLb0223mjPBsxKBlMK5Ajh9q5eWeGWK4MBf1NyEJUPdFTFeUWF/LMYqNXdTXlJuqJv7+5KPbIfgHwtNPLZ4YwfIP4hCvgwnpYKCZG+P/QEuhhsMpbngE= 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=Va5DBj7/; arc=none smtp.client-ip=209.85.218.52 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="Va5DBj7/" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-a77e7a6cfa7so329157466b.1 for ; Tue, 09 Jul 2024 14:40:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561213; x=1721166013; 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=siebgP++PqmiW+JZ9+iV+FsXNJ4Dx3GXjI/tAsTjfY0=; b=Va5DBj7/dzZjCofFZ4p+rCejsMZqo0KwJxW5Lm4gMRhYLqz0ojV3jbgGz550Q+iJmJ Cpelzmdi3nz0jZLj46DNzBc27W0m6iObsxvCDDmoP+WyJGAH9R7q3HCruHjslJciaf1f yWL15bhsRHakEGeJiq80sRawtO39Zw9uTejR8oh/N4GqgRwRekxHBcipgXw8V+ZnduAw jfzkFt5FbSQ5XcgEkzNTI/bLNwIsxSxmxAqAKgpyK0LG/Id7gkMVS2dPlnnYne258kLD U1MH0vlsFEm8ZjSqvClBlGfC9M30MF0x+GsCJ6NvF8ey8OQKDS2vsnkKg2CcweOpECID QSAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561213; x=1721166013; 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=siebgP++PqmiW+JZ9+iV+FsXNJ4Dx3GXjI/tAsTjfY0=; b=ea+dekVS4t7ja6fg2L7OObdqZ1iy72RnbqD4w6I2RwQG/FM/0QcFBoJuJtqllLti5H RL7A7AHOAr+ike4lP3nQtzJpox+7cxhmZfu7C4PyWPLo3IxKMEBgNARN9ZWoeu34nibO VejPF1SHGGsMxLuyKLOWWnPSyeTE5U3Tq5+IqDw0VjSHzb7Mxgso/ytRXVxoVS5xpJ2Q 1u228S2F71s4qiy+d7M8puRNSP5WKnuDRxM331K/X0zrBXEO7t/B7Ge9nbbzZY6LwTFc lDKN2oYjpIJysrGMq8kU3zW+QIA3WPwASobNVnecVsl+R7KajTw+6svMZrkhE/tmRPN2 3htQ== X-Gm-Message-State: AOJu0YxgTQ6FDdeG/34axx0546W/N1bFdssYlzHyKwLwUASA0pNPOwvW auQor4eFdnaXgELpPQcynwUO+lG4nhc0gAdE7krj4FaAuiQ0M226S8sLyLCQTqU= X-Google-Smtp-Source: AGHT+IHIuDZv0gHi5A1wFkEunUbQ/Fnat6ReXtbOcGfKvzscyxhPO/roNOdJtQ444YfjJjYPo7r7PA== X-Received: by 2002:a17:907:3f8a:b0:a77:da14:840a with SMTP id a640c23a62f3a-a780b89ec89mr318311966b.69.1720561212703; Tue, 09 Jul 2024 14:40:12 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a87213dsm107022166b.221.2024.07.09.14.40.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:12 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 26/44] libmultipath: reimplement dm_get_opencount() with new API Date: Tue, 9 Jul 2024 23:39:17 +0200 Message-ID: <20240709213935.177028-27-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 8a0578e..859a861 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1038,34 +1038,14 @@ static int dm_dev_t (const char *mapname, char *dev_t, int len) return 0; } -int -dm_get_opencount (const char * mapname) +int dm_get_opencount (const char *mapname) { - int r = -1; - struct dm_task *dmt; struct dm_info info; - if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO))) - return 0; + if (dm_get_info(mapname, &info) != 0) + return -1; - if (!dm_task_set_name(dmt, mapname)) - goto out; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_INFO, dmt); - goto out; - } - - if (!dm_task_get_info(dmt, &info)) - goto out; - - if (!info.exists) - goto out; - - r = info.open_count; -out: - dm_task_destroy(dmt); - return r; + return info.open_count; } int From patchwork Tue Jul 9 21:39:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728560 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 6BE5C189F21 for ; Tue, 9 Jul 2024 21:40:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561217; cv=none; b=Tg0qx/ESGIMEUcUCBS7dr+JKTx5B/x1HhaAZF9/K0jYQXIlXyfrlxR6pnx+EHq79kZdAl6NU0DA7fM35WfG6R15Q+Oo+YbxrZ6MWu9UbUUpHapla7rfht/9AJEvrytYe0pRzop4cSzEdqmZlljpHig4XnKH2A8cwdGQWokwfa80= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561217; c=relaxed/simple; bh=iZ29QZrcYZnNe+IaRELv6nHBtY/jVjcMX7dhu4w8YbI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mXzEqKZ+OMRF52BV0PiUq5to4buc4O2zAQqzj0zdWbemoxh2EfRg+PYs/s2E0Vk6W5/uetyMM/HkWH5yA6Ad3BWzA/H/Hxb7TGNmjBipLzboAu/ZZ2PiPcNlH4cfqz+o4qFxow1k4XCK6cN3CI3JBR23lmW3gD1yPLfoulckz0o= 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=gKlv5wj1; arc=none smtp.client-ip=209.85.208.50 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="gKlv5wj1" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-58ef19aa6b3so3144528a12.1 for ; Tue, 09 Jul 2024 14:40:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561214; x=1721166014; 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=YG/dXSn88oAvpGgcBIy+n2sDLL8i58301n9d0qtzZys=; b=gKlv5wj1tayafY0Bp+nks3eJlEKRK7f558MVZLL92jpSXYJUaije4aQY4tJ0kLxPdm L0EqJiwyvaTVms1wROALLH4ixswFnwp7s9m2fZNy6pAKLn8IyHBqlqhFNK5ZAB0opjr3 nKxPylc/c9DTt70PrS7tiT8+42yK7/TIS0c8ISiGVghaZHLqx9hYa1M1+inUqEl+5g5r ObRrfk+XcBAMVOq8gdWTrFU1yVpLDFc/G+9ZTdyEx6u11uw9HP7poeQTQY7140eseW64 RU3TJeUYESv1bbVyeLNNZ6qUixksW7UJVGgRRwDsTcLauqdI4xF+BZ0M//HJvX0E4hbi A4dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561214; x=1721166014; 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=YG/dXSn88oAvpGgcBIy+n2sDLL8i58301n9d0qtzZys=; b=vMoYxWKlh7PBQ/3R1b/Y8J+3JXyaLzuAOZH/MvDdUIEGjpU0C5E5Hux9YepyPoPYA3 Ifx6mQGTqAjZT4prISeFXFQK3PQ3ciQAmCNXpZ8C8FyrtQLoyGDnQC5xBnwHNtgQ5uRz zTPHTpvLbNo0uFh48gRkQIfmGhktGs78hZ8ozjZsbCgRXVMds2xyqlA1g6G0AOmzTpZf hOkyU4OArGDyx02kTR0URsEJFw7JVGj3ox9PZLjERKOxjWHknL39rVx6Z9FDpbI1YHkQ khyUBWNjEIySTiGVhFNc5Ywzdq+ZBi6sUDRuB84f2ah3btZgdRc71/HjAdJxabIC8cFH pnFw== X-Gm-Message-State: AOJu0Yw3hKcbwoU6h0QBTggEczlqUjFy7FxGXVeSvM0Ng4qamhUrDJ5m CDFMr7dbrK0HI8sKZiWYPFY3mfJbAdBjTSMJGGFcGNv/0UnMUg+Jw+FuND5TpO0= X-Google-Smtp-Source: AGHT+IEEi6FJ4GAbCML7e3I002DvLCPNGk6Tx/rBmJbGyvDvFBf+oxY0lQu2f8r7RKp+tJORY0Fk1w== X-Received: by 2002:a05:6402:13c7:b0:57d:4f47:d9f7 with SMTP id 4fb4d7f45d1cf-594b7e7d0f0mr3632711a12.0.1720561213753; Tue, 09 Jul 2024 14:40:13 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6de0a2sm107528766b.54.2024.07.09.14.40.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:13 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 27/44] libmpathpersist: skip redundant dm_map_present() call Date: Tue, 9 Jul 2024 23:39:18 +0200 Message-ID: <20240709213935.177028-28-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 dm_is_mpath() returns 0 if the map does not exist, the additional dm_map_present() call is not necessary. Signed-off-by: Martin Wilck --- libmpathpersist/mpath_persist_int.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c index 6da0401..5a5ac3b 100644 --- a/libmpathpersist/mpath_persist_int.c +++ b/libmpathpersist/mpath_persist_int.c @@ -185,7 +185,7 @@ static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, condlog(3, "alias = %s", alias); - if (dm_map_present(alias) && dm_is_mpath(alias) != DM_IS_MPATH_YES) { + if (dm_is_mpath(alias) != DM_IS_MPATH_YES) { condlog(3, "%s: not a multipath device.", alias); goto out; } From patchwork Tue Jul 9 21:39:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728561 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 5BB3E185625 for ; Tue, 9 Jul 2024 21:40:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561218; cv=none; b=o8qrPhj+AbYf7KWxVOiHI6as0Jar9xOruO2OxUr2GYD4/8RBhn2TqS+7hOBhsG8QyDkGYUcV8v4KmjAGZtl8Yz/sKcsiL/nRj2HJLHnGwjdy5XN8VGjGlAtIvZFa2iNmtX8k4FmiyCyFoSkU4mQeKjnGSv0uoxFqlCnRI8609o4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561218; c=relaxed/simple; bh=si6qud0bTtWSzZslCxSMZtEmziiRhODXiAoVjmymvDU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o2CMS1PBcptDRjQxsLgLaveA4e1AUHfq5DQuB8zVWTcp/1+fHypPZWAZbUY/1tjp1FbaWdecnaAzUJH7bCyqiDNSNsTYMdpBDrI3aJcSHw9weKs0V49fDI85uerX0WHZQDtu/ng/vjX9pJnQ2sqCbf4ohkmvt4kWY4R7qwGlIds= 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=GerPURh7; arc=none smtp.client-ip=209.85.208.41 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="GerPURh7" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-595856e2336so295894a12.1 for ; Tue, 09 Jul 2024 14:40:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561215; x=1721166015; 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=lV4Z4qTVYZpztp59W1/8szRn+xFAjI3AneEqP36t7aI=; b=GerPURh7poC9PElFknVmYp6moFiI7mS5rIS1JiwhhNjtRw676kQnUEF2LX/wF0JUKy cXUPTLEZdOSwWD0+qhhHoEfQDAgwMCylAfsKedGL4jwqqKI7PpYUox07MVzeoS0m2O65 6c16nKVNpY/IYkIt6zAQ6lmvuNG2OihOSz7KYyLmsnDm64vefUdm1vi+57EJ607XVpCq YPKOMdngXg21B8ztWbux/lrs7FcX9FY7xnPtJhV2b+D2FjZf/geXcjJVMXLm6bmwm5nP VA1Qqq5ooKUngBrbd+JWsJW0QaaIRUrameHigO/TCo4hVaE0tT2sAvUxAZeti8srCdks YO8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561215; x=1721166015; 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=lV4Z4qTVYZpztp59W1/8szRn+xFAjI3AneEqP36t7aI=; b=in0MZbo6DvzF8j7Ohga0SnYOtCquCKBiHwvYYRzK4ebEqMi/i86CuyxP2xrloOcocS 4d1Rp9wmq4OLevuAJuckaidatSiFJrJguTtsMNuOKgrl2ZRvIiaqnq9JQgtoF6dsuAIC gkbijX1i1uCEfYACi3Vev4WDpNvPDwiI0GbY1C8vbKD51aS0jdLJjoTTHena2N/uJ4DM Sfwll+BjRb1M+O//9jiPGGPsp4sIkjBSmADg3nY//Qm6OZdzkSGVe1QaP0LmPZEZ1uSo JvG424FGDjHOdwqAyN9HqDX2iGuS38hYvzMVEhfycAu/+XxSjTnAql/PQu01kdkbJN38 YP8g== X-Gm-Message-State: AOJu0YxMcOP6K663lmvDAAAsulk82NBKu3LbX3kY4gVM41dUIzIfHpdo UuMYjz85ULJ9AJ9owSvuu/R7yw8wh8MAHe9tgUHp6Ryi6JmhqjaQn/Wfx8D8Ol0= X-Google-Smtp-Source: AGHT+IH0AvKrjFYXJOtxxwonBbYtEDuUqT2DW0ZEfURrdycSDnw4DplZKjhTd6C5comoKkr3YqV2tA== X-Received: by 2002:a05:6402:502:b0:57d:3df:ba2d with SMTP id 4fb4d7f45d1cf-594dc4ae5d2mr2562184a12.2.1720561214634; Tue, 09 Jul 2024 14:40:14 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bc7c9e78sm1485660a12.57.2024.07.09.14.40.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:14 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 28/44] libmultipath: implement dm_is_mpath() with new API Date: Tue, 9 Jul 2024 23:39:19 +0200 Message-ID: <20240709213935.177028-29-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 53 ++++++---------------------------------- 1 file changed, 8 insertions(+), 45 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 859a861..6276041 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -965,52 +965,15 @@ static int dm_type_match(const char *name, char *type) int dm_is_mpath(const char *name) { - int r = DM_IS_MPATH_ERR; - struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; - struct dm_info info; - uint64_t start, length; - char *target_type = NULL; - char *params; - const char *uuid; + char uuid[DM_UUID_LEN]; + int rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = name }, + (mapinfo_t) { .uuid = uuid, .tgt_type = TGT_MPATH }); - if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) - goto out; - - if (!dm_task_set_name(dmt, name)) - goto out; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_TABLE, dmt); - goto out; - } - - if (!dm_task_get_info(dmt, &info)) - goto out; - - r = DM_IS_MPATH_NO; - - if (!info.exists) - goto out; - - uuid = dm_task_get_uuid(dmt); - - if (!uuid || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN) != 0) - goto out; - - /* Fetch 1st target */ - if (dm_get_next_target(dmt, NULL, &start, &length, &target_type, - ¶ms) != NULL) - /* multiple targets */ - goto out; - - if (!target_type || strcmp(target_type, TGT_MPATH) != 0) - goto out; - - r = DM_IS_MPATH_YES; -out: - if (r < 0) - condlog(3, "%s: dm command failed in %s: %s", name, __func__, strerror(errno)); - return r; + if (rc != DMP_OK || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + return DM_IS_MPATH_NO; + else + return DM_IS_MPATH_YES; } int dm_map_present_by_wwid(const char *wwid) From patchwork Tue Jul 9 21:39:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728562 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 14755189F22 for ; Tue, 9 Jul 2024 21:40:17 +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=1720561219; cv=none; b=jcv7ET7L8e21HHmbV+aMdvBCSJ1g771vDr/ZF+Fndpw95+GtTxpyfNUjwn9wLadIgxNibHLMYZscRYA12a5LgWVGZchvS5bGHWPabacfmWEnuwSjhoPtJlTCRD98dnUY48k5tSfyf1np0GIrQJ4ar/SEMr+BR1MZZg5xSVWAWTA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561219; c=relaxed/simple; bh=wm1e40gUxzFuSfpPjnNQ+V/mDBsnqCaSTOkX6hmJIn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tkT1vMMIw5cXT4C1ONRLZmmZEFmnDHOAcyXs2Q9N+Xf17JivdsKtk89JEreuui7DjPlbbabx0pPyippzl6wVmOArP3tekgfSFs4AGfWm+CAh9xNWzgRR2nJggzQ24ZsKlLBSZfhc/btw8CqTBDKa0tR6IpiSB70U+fSJz0UJKWg= 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=U6of9Pmy; 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="U6of9Pmy" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-a77bf336171so34070866b.1 for ; Tue, 09 Jul 2024 14:40:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561215; x=1721166015; 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=h9VdPzY1OlazbFV1Ek6cNvLVlraOsQCHaeouX6HfzBc=; b=U6of9PmybE8JrXgsD5suA4nizRh0t1vS+fvZ7p1VW0wovmtFl7RlUf18sDPUSik9e7 +q+lBZqzHpF0aHJstS7kuUegEPbA0Xmqq9BwjJvV5kBjS9HzLTGZDSb1glCPHXN036wm I5kXcIBa6T2lRE3O/jHJo7L17+Y9EY0mtjCd9CiIsqBvCkgUWbePVJGavBJa40HuSxTJ elEmhQpSoKkmjYXiLv8qeT2p2/T7hh5dFLBwQLoRPZK/d4xawIiMYkFl9G3me4cKk0P2 cU9KQRytxC150ImkmtgAXJHLduU2Rqgi+AgCvki0N6Jfw4Z9QI2AEDk3bIt++VC72jOz 7cnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561215; x=1721166015; 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=h9VdPzY1OlazbFV1Ek6cNvLVlraOsQCHaeouX6HfzBc=; b=jKmvbpmYgCaYAle5vsRy1N+qX6Xdm75K/ASWRr+d3pa/6VmidyjzIgJFsFbAOljbBK A2TRWE1k0GdCPozlydpAMOz3w6lfeoSfdCaTuxXW5LMSFYEOKehgqlIjPUNdGc60pJKR yxwHkXLGmMbeLOq9x5pkUg0er7ffGfM1WmVQPjZo4VeIWxLsY/FKNBM7g3iPkkSaiOfV ur+m7BazjOLcHq6+oDWi5B3AAQpfZ3sw18cfT7AiEglahaa8zmEQGh6Q/5SaakPQ0IuK Y3Hf0DhKpN1fct4A9tU6BNYDlsgrogBMcjgslxp3/esUrLhSfOSqDEMT4mEN+1GmPTiA 5zGg== X-Gm-Message-State: AOJu0YznB1nMTUM5vUFxZJBfym1M36q8w4IPYzarzVBOMgWhTn122hgB 9wQ+Xgbc4V58iakL//WQz159wKtFKnXZDgxFM10cbfJbH1s67L49qgyd/1ORnMI= X-Google-Smtp-Source: AGHT+IF+IA+jJdq+swaQdtsTGVppAZkW5FayTAi3kIjeSZmj9em1GoMrEvSuNGNyRYHUF5hvNYNbMw== X-Received: by 2002:a17:906:b0c:b0:a72:75a5:bb42 with SMTP id a640c23a62f3a-a780d28ed3fmr229167266b.29.1720561215510; Tue, 09 Jul 2024 14:40:15 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a730394sm109297466b.95.2024.07.09.14.40.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:15 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 29/44] libmultipath: implement dm_get_multipath() with new API Date: Tue, 9 Jul 2024 23:39:20 +0200 Message-ID: <20240709213935.177028-30-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 6276041..bfe202a 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1284,7 +1284,8 @@ dm_disablegroup(const char * mapname, int index) struct multipath *dm_get_multipath(const char *name) { - struct multipath *mpp = NULL; + struct multipath __attribute((cleanup(cleanup_multipath))) *mpp = NULL; + char uuid[DM_UUID_LEN]; mpp = alloc_multipath(); if (!mpp) @@ -1293,20 +1294,23 @@ struct multipath *dm_get_multipath(const char *name) mpp->alias = strdup(name); if (!mpp->alias) - goto out; + return NULL; - if (dm_get_map(name, &mpp->size, NULL) != DMP_OK) - goto out; + if (libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = name }, + (mapinfo_t) { + .size = &mpp->size, + .uuid = uuid, + .dmi = &mpp->dmi, + .tgt_type = TGT_MPATH + }) != DMP_OK) + return NULL; - if (dm_get_wwid(name, mpp->wwid, WWID_SIZE) != DMP_OK) - condlog(2, "%s: failed to get uuid for %s", __func__, name); - if (dm_get_info(name, &mpp->dmi) != 0) - condlog(2, "%s: failed to get info for %s", __func__, name); + if (strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + return NULL; - return mpp; -out: - free_multipath(mpp, KEEP_PATHS); - return NULL; + strlcpy(mpp->wwid, uuid + UUID_PREFIX_LEN, sizeof(mpp->wwid)); + return steal_ptr(mpp); } int dm_get_maps(vector mp) From patchwork Tue Jul 9 21:39:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728563 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 DEC0418785C for ; Tue, 9 Jul 2024 21:40:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561219; cv=none; b=jlC6+jZbmhCNvu02Psqy9nJSqvAbfrqYLe/xzihvo6zBA13fGg6ytWRdYfpXbnWAH+wI2bTA8YIUZds1jp/dYqRNXjfEG1AW/bsG7bD9gKF8r9M/IonuKJhZOZfoqmgJxrJ1S+wcZqNqbRjBj5y+lz3PVk6SroNadnnKh4kRQ1w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561219; c=relaxed/simple; bh=wOLp6wjyRwQLwny19+njOUxq+YNDtXjLT9k2WDcVxQ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MvqgT33tS/z3Yl+tz8S92pvPY00VV2LaLUXavbpWGQTJZv9aaFG6vxh99+FpdL9VyAqtdnz69dxa8dC0WLKGS3oG68sJt20ktvsBYpT5yRaHELKXsUJd20cRQ26k5sUlUUhaeoB3gBeBPH/X9v26MSwZZh89bTTRtmp72bJNnr8= 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=G+4B9lNi; arc=none smtp.client-ip=209.85.208.41 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="G+4B9lNi" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-59589a9be92so1294010a12.2 for ; Tue, 09 Jul 2024 14:40:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561216; x=1721166016; 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=PAuhDI84QLk3Xz3/VqKhuS2sfBuuqFOJcO3UnFnmklk=; b=G+4B9lNi7haAIXDrE8F4259hb6iYnkOXpcrqIdi7AgSA6lUYsmYTY05+titrbSBBTX EzCUWIoom0UxPiCV78sYEiHKbrZsBoC8+9gAnZ1529z6g8y+f7+d1UiUxyckTh3GTR3Y SwR4eYX2XzhsBW43q9XzCOm46e9dnvYCm9MK0PTYdj2UHyxmIisKX50WDriRSBA85iYc UmGWjSZAcNNXP9I1Y++TjWghm7BED7XPe/5ZHAD0Hz2ZB05/rssWYkmF7zlU0ydlGImP BRQkroLJ/JWyqJzz20u32xBzWt+oAUHEc+O5giIURB2yGW+i18zXWrNK3ok0/iImj9ss GiWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561216; x=1721166016; 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=PAuhDI84QLk3Xz3/VqKhuS2sfBuuqFOJcO3UnFnmklk=; b=Dg0rMvLRtCrawvQbPwkdnvRQNPkRjp5MdI4Bc3mDsBE7EQAuZ9xa9aLtXkJgaUB2SQ mg/cFo88/PlTLl8UWC8T5y456dpGmPZqJxhlM8wTide6tu6Fak0yPgvfwVW5s0U2FyjU eEGwuciudJ78GTOIOu5K/e/4h0zJOrOQ4XeW0CpjGrhJuSz1I1FaMUURg5kG+6YthFUh /8UK5zAAmW3lQ8mg8jqrgC8pahOyUCEY5W4UxzzJNokkYDBt58RN/Ol5GTEWGEPBHn92 SoMZFm1/oWIqq7xJ3WICoOkxlz+TZ7/+GBkeHRl0WMURns8vA2NRt/gmJM2zWm1Qg6c+ oqkg== X-Gm-Message-State: AOJu0YzkVghTuNukNqzf2YvzzA4bwdD8DSvCG0+sR3wzK4anFZuCdC3g b3n8XEAScD+vt4UmdoL84JdxSnJZN1gJB+i83D+gsDsZ+2yJCHEuOaAGmUj6r6yusfQGZ68k1Cr U X-Google-Smtp-Source: AGHT+IEY/9VZHmCWsvtkHAgz6PGGzVyxo4ILk+MrHO1wmo4guXd/VeZ87L3Mgpl/fgHniQBBA3hWRA== X-Received: by 2002:a17:907:614:b0:a77:c26c:a571 with SMTP id a640c23a62f3a-a780b881ca3mr253430666b.54.1720561216253; Tue, 09 Jul 2024 14:40:16 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bda284a5sm1483194a12.85.2024.07.09.14.40.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:16 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 30/44] libmultipath: use libmp_mapinfo() in _dm_flush_map() Date: Tue, 9 Jul 2024 23:39:21 +0200 Message-ID: <20240709213935.177028-31-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 We can spare one dm ioctl here. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index bfe202a..806ffb8 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1056,10 +1056,16 @@ int _dm_flush_map (const char *mapname, int flags, int retries) int r; int queue_if_no_path = 0; int udev_flags = 0; - unsigned long long mapsize; - char *params = NULL; + char *params __attribute__((cleanup(cleanup_charp))) = NULL; + char uuid[DM_UUID_LEN]; - if (dm_is_mpath(mapname) != DM_IS_MPATH_YES) + if (libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mapname }, + (mapinfo_t) { + .uuid = uuid, + .tgt_type = TGT_MPATH, + .target = ¶ms }) != DMP_OK + || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) return DM_FLUSH_OK; /* nothing to do */ /* if the device currently has no partitions, do not @@ -1073,7 +1079,6 @@ int _dm_flush_map (const char *mapname, int flags, int retries) return DM_FLUSH_BUSY; if ((flags & DMFL_SUSPEND) && - dm_get_map(mapname, &mapsize, ¶ms) == DMP_OK && strstr(params, "queue_if_no_path")) { if (!_dm_queue_if_no_path(mapname, 0)) queue_if_no_path = 1; @@ -1081,8 +1086,6 @@ int _dm_flush_map (const char *mapname, int flags, int retries) /* Leave queue_if_no_path alone if unset failed */ queue_if_no_path = -1; } - free(params); - params = NULL; if ((r = dm_remove_partmaps(mapname, flags))) return r; From patchwork Tue Jul 9 21:39:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728564 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (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 CFA7E189F26 for ; Tue, 9 Jul 2024 21:40:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561220; cv=none; b=qGX/qKB5CFrCsegN6oLz6bpGErmKlbZiaUwRXmht5K8vVQeFuuF7FGVtg36vdc9wBJ+T3uh1uNgmcGqUIOl5FgnpGdk99s0pJxJXBrS/7ERaKmM0IZoTgcPRthFoTOOBoFwMOc2dK5ah9BhGKTljtyBUq9tUNFgXM3tJy2WEflQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561220; c=relaxed/simple; bh=nugWuk5VuYepvFKO0zplsauI7TKbAwOjwdQvZvalDBU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HmpWQO3kCIRSqJUaB7tlAooE4pTC+1t3IE7NZn5wWH99/0j3iFMCE/iyvLGZu26tnHES3MTFwfLmHg/VJoTHmDwvt8OPM60zrBm8pR4PF6gB8ZZ4dOFXrrzPdQGIA/okFhw3IWCKVaFYvwFPNZ1CF/E9GDrFQ6iOHiR/WpL5jRY= 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=SfZNUMbi; arc=none smtp.client-ip=209.85.208.44 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="SfZNUMbi" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-58b447c5112so6520455a12.3 for ; Tue, 09 Jul 2024 14:40:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561217; x=1721166017; 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=mpQRE48wwBbkPekHhrqnPawvVWrQMwljIKB3f4zFGVY=; b=SfZNUMbit/BCmv7VICrGGtG18NS0rhQ2UDjFQa5UepqVdrmBwVk6YnUzTdONflBWOk EVTO0aX7F4WCkhzg2f3FqvPctPdvF62Tf5GIc/1M++lf2HFbUT+RGJMIW1IMG23G6U/t DMG1xFdaEmgcY8hnQBl0D1e96vXQOPHyHgVPIVC/V4m9p1VMmSHA0dBE8+Q78m/25/jI TMRNPZ18Df2GMTiBol3jMDf20Lt2AhB77x1241JFE1I1yD1dxmH45uHh2MS72RkXcv4A 4ijrHAPHFkq5iqsWjYV8v/mIkG6wlsYbwwB5NJoVnc20rwvv9GXd4FYCyJnJc6E3CCJf OKHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561217; x=1721166017; 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=mpQRE48wwBbkPekHhrqnPawvVWrQMwljIKB3f4zFGVY=; b=E4qpLK+EN9tcJhjvfBMFN7QAtkv0zy2lPsbqMoybRjJSBXhxTl8or7XNXXXdNuWiVN NlLa/sRigIumzSZFVD1JNTMg+cijARIHF1plxUUX0VjCQCStMtXGjmoYYmyMCPjXe+0h vfKiiGzrotCnoUDZA5eEU/xOLhkLc3Qrg9nIzBuzNSOL/RVLM2Un2hbU7BhFIksmorAK tLDN0H/DvWveDjsdYeXXWqY2xyP+JrqeEzJNckp/BiwqSYCQzFUkWFCSuyy6i1Y3kD40 HEVHWjBRVv7vnwbpEMA4hzZAXZtplmi8LnNia7Jjm4lkBDIj9lc51FIygukDQoveP9AV g7yg== X-Gm-Message-State: AOJu0Ywzf01YdGsCVRxkJQNMi/pBzatFgh16jpVWRTJacbLPfYCe/nn1 Lih6GrFj9AoGtKP2HTEIvlb8rAUBqETEKNH9wB55YPzH9hkD7XGsCg09ksAVi4A= X-Google-Smtp-Source: AGHT+IGYWXvNFP40VLcvd/JNvR1xR416KnYQ99wG4P8CbT6vJ6NsomC0FK73HV9WPGYsjhpq4y8TNQ== X-Received: by 2002:a05:6402:35cc:b0:57d:788:aaa3 with SMTP id 4fb4d7f45d1cf-594ba98f585mr3001606a12.8.1720561216978; Tue, 09 Jul 2024 14:40:16 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594b8d6cdffsm1497547a12.0.2024.07.09.14.40.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:16 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 31/44] libmultipath: add is_mpath_uuid() helper Date: Tue, 9 Jul 2024 23:39:22 +0200 Message-ID: <20240709213935.177028-32-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Export it, as it will be used by multipathd and libmpathpersist. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 13 +++++++++---- libmultipath/devmapper.h | 2 ++ libmultipath/libmultipath.version | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 806ffb8..5f6c0c8 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -829,6 +829,11 @@ int dm_get_map(const char *name, unsigned long long *size, char **outparams) } } +bool is_mpath_uuid(const char uuid[DM_UUID_LEN]) +{ + return !strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN); +} + /** * dm_get_wwid(): return WWID for a multipath map * @returns: @@ -845,7 +850,7 @@ int dm_get_wwid(const char *name, char *uuid, int uuid_len) if (rc != DMP_OK) return rc; - if (!strncmp(tmp, UUID_PREFIX, UUID_PREFIX_LEN)) + if (is_mpath_uuid(tmp)) strlcpy(uuid, tmp + UUID_PREFIX_LEN, uuid_len); else { uuid[0] = '\0'; @@ -970,7 +975,7 @@ int dm_is_mpath(const char *name) (mapid_t) { .str = name }, (mapinfo_t) { .uuid = uuid, .tgt_type = TGT_MPATH }); - if (rc != DMP_OK || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + if (rc != DMP_OK || !is_mpath_uuid(uuid)) return DM_IS_MPATH_NO; else return DM_IS_MPATH_YES; @@ -1065,7 +1070,7 @@ int _dm_flush_map (const char *mapname, int flags, int retries) .uuid = uuid, .tgt_type = TGT_MPATH, .target = ¶ms }) != DMP_OK - || strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + || !is_mpath_uuid(uuid)) return DM_FLUSH_OK; /* nothing to do */ /* if the device currently has no partitions, do not @@ -1309,7 +1314,7 @@ struct multipath *dm_get_multipath(const char *name) }) != DMP_OK) return NULL; - if (strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN)) + if (!is_mpath_uuid(uuid)) return NULL; strlcpy(mpp->wwid, uuid + UUID_PREFIX_LEN, sizeof(mpp->wwid)); diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index db5c5fd..a2b2837 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -131,6 +131,8 @@ enum { DM_IS_MPATH_YES, DM_IS_MPATH_ERR, }; + +bool is_mpath_uuid(const char uuid[DM_UUID_LEN]); int dm_is_mpath(const char *name); enum { diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index 7d3ff63..5b8f9e0 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -127,6 +127,7 @@ global: init_foreign; init_prio; io_err_stat_handle_pathfail; + is_mpath_uuid; is_path_valid; libmp_dm_task_create; libmp_get_version; From patchwork Tue Jul 9 21:39:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728565 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.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 7D3BA18786D for ; Tue, 9 Jul 2024 21:40:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561221; cv=none; b=ShNIt/S/AmAy4CGi21oclNAOrkCOtFPJaeNenu86jqi2y2TBVC7/fnfWsSbvQdHNvWC8UgU1cGLsZDi4FTTp9BGzdw8xivVsiZM5oxaVPRX5+AlnMofRlH5PiIimU1BD5JPE3ziZkktKV7MCo623gZnnZEEsQOSjNJ5/TFaRas8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561221; c=relaxed/simple; bh=fOJbIB1pNrkQLn1AxpnIzmQp4W2p6uN2jofDD1UTubk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kZEKQ1GDYxOw86MQjwMhCxqX5sr6XKABzWP1rRCygiz4aV1MOBcYFHmF+s8yIOOvRlhMudV9UwvSzfHhGff6+jXZ0Ldx/z0fmg2xCULG4919kkYsqqhSisOegxyOTludwrSh8xDs3F0iM0qgU9HZGxO053EJdIpFRjOLcPfiTwo= 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=cN8MUOgT; arc=none smtp.client-ip=209.85.218.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="cN8MUOgT" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a7527afa23cso711488466b.2 for ; Tue, 09 Jul 2024 14:40:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561218; x=1721166018; 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=HbE+eXopTF594cdCh0H4gap6n+/IhdcyXeNl+LS0U0E=; b=cN8MUOgTjdBG32MQNaaurzWJ5Lqf8uEdj3KYlbvBoCK2HsjWG1wYAkzynVbrXxuB37 kL6qctkXkfiT4UVZpdFiRZ2X3Y00i9nmOIKkFm6zPowFnOS1XBlnl89+TbFXfsH9cUhw ycnE7hSdHCAYuMzAo4SRZP7fR8v+GFL68Dmq7KCws4KpXomLk8Aypjq+Qqxs7Cbo5jea aFPafV1+gkGuXHAca6k8r/GNUSWUk1R6GlgUHGKPX9D3ZM+o+2b3DwD349W9SDuzyil/ H0DC+d6d3t1f0YKQFitWdIW1VMsjD3ieB7VPGLrp8ht4S9jGC/gs4IMtLKPpjXftb2Px uwHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561218; x=1721166018; 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=HbE+eXopTF594cdCh0H4gap6n+/IhdcyXeNl+LS0U0E=; b=YqCrJwUwSjpqfKPJKzwmmhVPEAO0iyBBKWzd7tOmBHkhHBDqrjVVb6QsrnzwzPDpo2 18GsD93UNDcxKjajX2Ioh3yRyhxM17v3hoKvWvIPOjq8SMfHVPYuXQasIZP+kGmltTGG mNP06BPIKfC9iZ359jbJC4hPOEhEUkmgWZ2pG+jNKqCMmKL/l5JY0frLGiY9EdOpSR4D Z2xrVMgBh5gLgSMS5gQ8HuQar2+rtY+XVhleHHL5q0HZZbAMegIMGYPF79BfzCZ6b8iE sAi1tIhHVBcl37xENn/elRLRoApijz/Xw7fWfF7VM9E7PDvQJVn3XULQaGIrw4fhLqH5 Ke0A== X-Gm-Message-State: AOJu0YwV2ZsvXE+lwCoEiqdVNUaijSStq6jBhjTPpMLh9QjQlTMq5sPg ccnBXpPfRJ2gdV5yoOMyZBHIBfBBAdy0/8jHxvhFuGRHbnY6SYwRXn/rRRiFJZ6s9w/2PCkHrMG n X-Google-Smtp-Source: AGHT+IHE4wcDDrbvEVwyBjKsQpRB/ePUw+/MfvwGQvMUjxRSB+UZ+Mno0po28RkVLH0bET6RsIP3YQ== X-Received: by 2002:a17:906:f6d5:b0:a75:3c2d:cd8e with SMTP id a640c23a62f3a-a780b6b1941mr239214066b.27.1720561217748; Tue, 09 Jul 2024 14:40:17 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6de20asm107381666b.60.2024.07.09.14.40.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:17 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 32/44] libmultipath: add is_mpath_part_uuid() helper Date: Tue, 9 Jul 2024 23:39:23 +0200 Message-ID: <20240709213935.177028-33-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 5f6c0c8..d321041 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -860,21 +860,15 @@ int dm_get_wwid(const char *name, char *uuid, int uuid_len) return DMP_OK; } -static int is_mpath_part(const char *part_name, const char *map_name) +static bool is_mpath_part_uuid(const char part_uuid[DM_UUID_LEN], + const char map_uuid[DM_UUID_LEN]) { - char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN], c; + char c; int np, nc; - if (dm_get_dm_uuid(part_name, part_uuid) != DMP_OK) - return 0; - if (2 != sscanf(part_uuid, "part%d-%n" UUID_PREFIX "%c", &np, &nc, &c) || np <= 0) - return 0; - - if (dm_get_dm_uuid(map_name, map_uuid) != DMP_OK) - return 0; - + return false; return !strcmp(part_uuid + nc, map_uuid); } @@ -968,6 +962,20 @@ static int dm_type_match(const char *name, char *type) return DM_TYPE_NOMATCH; } +static bool is_mpath_part(const char *part_name, const char *map_name) +{ + char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN]; + + if (dm_get_dm_uuid(map_name, map_uuid) != DMP_OK + || !is_mpath_uuid(map_uuid)) + return false; + + if (dm_get_dm_uuid(part_name, part_uuid) != DMP_OK) + return false; + + return is_mpath_part_uuid(part_uuid, map_uuid); +} + int dm_is_mpath(const char *name) { char uuid[DM_UUID_LEN]; From patchwork Tue Jul 9 21:39:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728566 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 B89E4187848 for ; Tue, 9 Jul 2024 21:40:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561222; cv=none; b=WfChQS//E17gOuMRkzr6eoyVSou+ynr9ogw4ZHvxDTZSw5hKAhc3bm3j5fiw4Ijg0x/xVYB1ZytzteM70UrbW1950WkInwfhVF1CRVtL7U6fRJXOCJ2fyuZNRKnWSyNsjh1/Y2ExZB5C2BtdyybpPEjDMmAF4blbMI0fUwa1QP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561222; c=relaxed/simple; bh=ywGguZ7PqxtN/Ez/vq9Wli4uXIDg8IvxoP159atQrcc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nk0qT4C5R1tmjMob/cDyxPRsq7QzL1EcoUozb/8NFKlEARaHLbJekV8rCh+JU09wxcLPIrArcQppP2drNdUp2Qcd6sSL2S+kR7pA31vN1/vCFo6e//pVH2jJOgIsnOh5Y/p/G1d2WXu2AKkI99QrtRM+ACVFZzx7Je37yk078HU= 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=ANZvhzS0; arc=none smtp.client-ip=209.85.218.44 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="ANZvhzS0" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-a77e392f59fso418550666b.1 for ; Tue, 09 Jul 2024 14:40:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561219; x=1721166019; 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=t9lLw24Qvkx8cZGgwoGnciNO/PuwztxJ1g7PZxEdVek=; b=ANZvhzS0xylo9zdSAeFDJZpK+IUH9CkoEchwMWjpqQtrlquejnDI4LqQPB8zY3H7iU kgzqOWNeO0TwdmfCHMINi4aHTMY5mdfLDexenayi6cEnVSXRY05VJa+GXAnyAX4AtJsP BMcDCIxZrrPGxeKv621M+XVy4OttXchnwGUTCQf3N/qPp0xN9O3wrlXa62Vb2A8kcmGA it3QoADcuyMZvtPULspaAQ8aAf+ApzgxxCBzJcQDOQgE5F2byEfZ0frtBLVYXPiwlIuk 9aGX/r09nBGp+UewjIh3t1up/Yo1FV8ede4nChyhciODkJ0FAXiE6o9R5qxRrXVtIrxm z+Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561219; x=1721166019; 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=t9lLw24Qvkx8cZGgwoGnciNO/PuwztxJ1g7PZxEdVek=; b=AIwWsjlsd54+F6jQgAv4uyr38okVPbWGf2yXGjmo45+ZhclkczB/kULZWn4O80RTX4 vlqw7aW6YTYcnuNTN7h29a+Vv+I5p5zls4IJGvGRPXhud9lpRC2eJSlyOy+GpN1tHr6f DsAc412YIrxLKnXWq4PGe+WxDEblFEPsK8DhWBGDMSxe3Y3rbjqAz8M8Mwn7fX18uP5N KnIMdiGDJTbn2wR+G0NQ5d09l73Iusp3fK2culdRqfwHeoy9bLQNvGtGtq2X8mVo9MgB aiju36O9NWqDXVc+pQ67nQolTNUIxlKiBmIN7HoVbDJGFlfAfv0xcyj0T3ffmNBJCIyd 5zNw== X-Gm-Message-State: AOJu0Ywfxn74+IbQctXHRIPJi7VfG/vVhaWyCEloMTRYsaslB3JByeGC 4HUaAteuANMAluv5/jJ2z6SnimyH0GeyvlYOZXfA+qJXfEyhcwGQHCMKCFesdXI= X-Google-Smtp-Source: AGHT+IFbfmtnOV8JBqF74xOdMB1mthck9ALpcVz4me4aZ3KgSWmw8p6HNtJuk85s7DqcBIkMvUQZ7Q== X-Received: by 2002:a17:907:3f19:b0:a77:c548:6456 with SMTP id a640c23a62f3a-a780b88608amr298707266b.59.1720561218893; Tue, 09 Jul 2024 14:40:18 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a72fd39sm108850966b.91.2024.07.09.14.40.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:18 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 33/44] libmultipath: add dmp_errstr() helper Date: Tue, 9 Jul 2024 23:39:24 +0200 Message-ID: <20240709213935.177028-34-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 14 ++++++++++++++ libmultipath/devmapper.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index d321041..f7ad7a8 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -79,6 +79,20 @@ static void libmp_udev_wait(unsigned int c) } #endif +const char *dmp_errstr(int rc) +{ + static const char *str[] = { + [DMP_ERR] = "generic error", + [DMP_OK] = "success", + [DMP_NOT_FOUND] = "not found", + [DMP_NO_MATCH] = "target type mismatch", + [__DMP_LAST__] = "**invalid**", + }; + if (rc < 0 || rc > __DMP_LAST__) + rc = __DMP_LAST__; + return str[rc]; +} + int libmp_dm_task_run(struct dm_task *dmt) { int r; diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index a2b2837..ed5e866 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -33,8 +33,11 @@ enum { DMP_OK, DMP_NOT_FOUND, DMP_NO_MATCH, + __DMP_LAST__, }; +const char* dmp_errstr(int rc); + /** * enum mapinfo_flags: input flags for libmp_mapinfo() */ From patchwork Tue Jul 9 21:39:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728567 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (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 A243B189F2F for ; Tue, 9 Jul 2024 21:40:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561223; cv=none; b=rNbjy0feueUfeqUvf8m0tz/hJ2b3uvHTN824WDftrGUJbt6HrfMKOiY7sfd1A0oYuPNVwJ7hIg9vx0xfiCU98N9Zoz7VTFC/+zZVeZ9LGH5E12LK4059YtiN3TuaZv8Q8BSN/4k+voyRecrL18XCNLcuiCDaVDP/N45tRKe5+5w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561223; c=relaxed/simple; bh=t3+2hzdJUxHvUdsXsVZgBFXOzntDmyDqb06IXcC/o1I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jz3uqdSBggu5qmDArrOUVBzkpUM5vGUZYDUgsIS2cy7i5h8GLVp67L0HLNg4/6aDWb4Uw5vVzRgXvqOcSDxxsSIyJcupm1bvhaSb/QL8W7LJkiylCDRNvN70XQyGSm13ta9AYWI3rnn25fwkxxt87Bok4lFD2OJwd+JDJgNgX60= 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=LOa15SE4; arc=none smtp.client-ip=209.85.218.41 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="LOa15SE4" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a7979c3ffb1so4354666b.2 for ; Tue, 09 Jul 2024 14:40:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561220; x=1721166020; 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=wVA1lF8wGSqjEhnr7LdWiCu28aMvyYZBiBSYWm6DWLI=; b=LOa15SE4v10cjjPktdP5YpK2U2B4Cvky0TyRWizt6ATYEl08zcs6/fMtmVOlY42HLz 3zoHCaivlGN+ynpgQ5OrOG27QxtFVWUPWb0KAKx4XggMkgQQGR2C2nlJr8h7uViZWL52 lDXAXGDP0AlVWgIElfBizScbZeJhLHsQ5T97zjedto3iANpBgQ7WNJw7s++brO8T1MyH XcBFlWbpIPWVuUijW2A6MUWf6q0dcx9hxyz5d74ViWi/kKoi1IzhP503wJprRk8vzw9i ix5IlWD0bnbtD8m7vkdgSO/GEZCrJq2KRZA/LlBao5m6C5FLLF5ZjCQQHs2Q7gqnekIW Yg8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561220; x=1721166020; 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=wVA1lF8wGSqjEhnr7LdWiCu28aMvyYZBiBSYWm6DWLI=; b=YyQwmCrUJhqHNBP76nZfTbwRXK7V1e4fg7GvBdJ/GF/kwqGzPWzmS+Xs0sKtcnqp2j bC7AzkQMxngADocem/lQmgRlIQAiu7n+pVQi9BpfPtfn5PRC6h16kP4wrxHX1aDmV/cK 7aL0ppAWK31oluNtUw37DoUOg4guTmGA+XBUfqGjzUA3AKZjERfhmwetRA2rlooJe/I1 6Gkj3N+h0S/IciAoM+pG5hfkrmF0Uh7kE3hs/aa3OrnxR6CwiLmjJRsgfnT97U9w5rfU tx9hru+6OtdgG+g7blG4yhEnxShnThgDUN8sBurAN5lBPgEu3qfWqCo7WeSY+tzOJc3E iXoA== X-Gm-Message-State: AOJu0YzbtioA8FWOnYufstVS4LMr6pHKGG2sK4j9JTTIgzj3KEt76uvU dz3PmzHHrxMnmlKt8VDHPWCLi5gCtkJn3JXsIKaqRrf6KBgt1H12L7IzgAoqLIs= X-Google-Smtp-Source: AGHT+IGrQzIwqnEHbOwMzY0dD1kkjFXhQz52I3Y4VJPS3q3UZ/YgkcHQdPM0f7nOZl75pekY2In+bg== X-Received: by 2002:a50:d61d:0:b0:57c:6ade:d8f5 with SMTP id 4fb4d7f45d1cf-594bb67f905mr2944039a12.21.1720561219870; Tue, 09 Jul 2024 14:40:19 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bc4e80c6sm1501494a12.46.2024.07.09.14.40.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:19 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 34/44] libmultipath: use libmp_mapinfo() in do_foreach_partmaps() Date: Tue, 9 Jul 2024 23:39:25 +0200 Message-ID: <20240709213935.177028-35-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Also, simplify the if statement a bit. drop is_mpath_part() and dm_type_match, because do_foreach_partmaps() was the last user of these functions. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 102 +++++++++++---------------------------- 1 file changed, 28 insertions(+), 74 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index f7ad7a8..185c76b 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -936,60 +936,6 @@ out: return r; } -enum { - DM_TYPE_NOMATCH = 0, - DM_TYPE_MATCH, - /* more than 1 target */ - DM_TYPE_MULTI, - /* empty map */ - DM_TYPE_EMPTY, - DM_TYPE_ERR, -}; -static int dm_type_match(const char *name, char *type) -{ - struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; - uint64_t start, length; - char *target_type = NULL; - char *params; - - if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) - return DM_TYPE_ERR; - - if (!dm_task_set_name(dmt, name)) - return DM_TYPE_ERR; - - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_TABLE, dmt); - return DM_TYPE_ERR; - } - - /* Fetch 1st target */ - if (dm_get_next_target(dmt, NULL, &start, &length, - &target_type, ¶ms) != NULL) - /* multiple targets */ - return DM_TYPE_MULTI; - else if (!target_type) - return DM_TYPE_EMPTY; - else if (!strcmp(target_type, type)) - return DM_TYPE_MATCH; - else - return DM_TYPE_NOMATCH; -} - -static bool is_mpath_part(const char *part_name, const char *map_name) -{ - char part_uuid[DM_UUID_LEN], map_uuid[DM_UUID_LEN]; - - if (dm_get_dm_uuid(map_name, map_uuid) != DMP_OK - || !is_mpath_uuid(map_uuid)) - return false; - - if (dm_get_dm_uuid(part_name, part_uuid) != DMP_OK) - return false; - - return is_mpath_part_uuid(part_uuid, map_uuid); -} - int dm_is_mpath(const char *name) { char uuid[DM_UUID_LEN]; @@ -1425,7 +1371,7 @@ char *dm_mapname(int major, int minor) } static int -do_foreach_partmaps (const char * mapname, +do_foreach_partmaps (const char *mapname, int (*partmap_func)(const char *, void *), void *data) { @@ -1433,10 +1379,20 @@ do_foreach_partmaps (const char * mapname, char __attribute__((cleanup(cleanup_charp))) *params = NULL; struct dm_names *names; unsigned next = 0; - unsigned long long size; - char dev_t[32]; + char dev_t[BLK_DEV_SIZE]; int r = 1; char *p; + char map_uuid[DM_UUID_LEN]; + struct dm_info info; + + if (libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mapname }, + (mapinfo_t) { .uuid = map_uuid, .dmi = &info }) != DMP_OK + || !is_mpath_uuid(map_uuid)) + return 1; + + if (safe_sprintf(dev_t, "%i:%i", info.major, info.minor)) + return 1; if (!(dmt = libmp_dm_task_create(DM_DEVICE_LIST))) return 1; @@ -1451,41 +1407,39 @@ do_foreach_partmaps (const char * mapname, /* this is perfectly valid */ return 0; - if (dm_dev_t(mapname, &dev_t[0], 32)) - return 1; - do { + char part_uuid[DM_UUID_LEN]; + if ( /* * if there is only a single "linear" target */ - (dm_type_match(names->name, TGT_PART) == DM_TYPE_MATCH) && - + libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = names->name }, + (mapinfo_t) { + .tgt_type = TGT_PART, + .uuid = part_uuid, + .target = ¶ms, + }) == DMP_OK && /* * and the uuid of the target is a partition of the * uuid of the multipath device */ - is_mpath_part(names->name, mapname) && - - /* - * and we can fetch the map table from the kernel - */ - dm_get_map(names->name, &size, ¶ms) == DMP_OK && + is_mpath_part_uuid(part_uuid, map_uuid) && /* * and the table maps over the multipath map */ (p = strstr(params, dev_t)) && - !isdigit(*(p + strlen(dev_t))) - ) { - if ((r = partmap_func(names->name, data)) != 0) - return 1; - } + !isdigit(*(p + strlen(dev_t))) && + + (r = partmap_func(names->name, data)) != 0) + return 1; free(params); params = NULL; next = names->next; - names = (void *) names + next; + names = (void*) names + next; } while (next); return 0; From patchwork Tue Jul 9 21:39:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728568 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.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 A1E00189F32 for ; Tue, 9 Jul 2024 21:40:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561224; cv=none; b=MICPXSeazVG3EeJsj9ytTz1zaWp/CdStH0TKAW1mpYJxzjFWhYWYQ4OxqHVqSX6gVfBsPHwmqYHYsmEWvXifETXPHIZU/EHAiAsnQLJs52rg+2bHzMuo9Jfc+VB18emeY3iYB/NnEJXKZBKz0dtffS2OUtg3ykP7yBjwyBbuoIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561224; c=relaxed/simple; bh=3KG9MEMksYD/eutXiGRdlaUuwxyDOAEd8CSqJTz6ta8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U8uCO1HTkrOKbOJDvH1E92hnf6cA2nP85aDdtL3LdASC134d2vNdmMvnPKJ3asuJSCbbFif/iSkyHJj6tfe2XiXe8PRMElZLppDXJXr7PCZimG+4TvMusnQyW6HbzOjYH+ZRw/B8KCB9cJ29W31oYA5IxghfiIWP2b98u66uvZ4= 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=FgfvcmDr; arc=none smtp.client-ip=209.85.208.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="FgfvcmDr" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-58b447c51bfso7057182a12.2 for ; Tue, 09 Jul 2024 14:40:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561221; x=1721166021; 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=V6jxI8IuJZXYh6Vf9cRs/3xPvNRowoNzRPF2Bd36OA4=; b=FgfvcmDrLGcDWqO7WgSnuJZPEe+jQTpqFPUmppXVIT36fN2JxRQiPzwKZB+kxViOU8 F0VpsOP8gkiHSOr+iBrLrFr2eUl9V7wQJRlVkivP3lITgzNIAemAkXaXtSV2/sweSH65 ONRPP0LW28wToApjmGIAb0YW137lrsc40xwldG3p2hp+wZFsJdmGkOFo1QYaq/jZJd3b eVpsTCnpGBSq3GWH/IAE7SB5Gqi4nnaMOm6lCJLQr7mdIWZlHKaoZUNYj0qcMjrFt4Mr zCLFFUq+2OaRxMpKzbvOy1l2prnTD6bV38kRGLvGbwwfzbKJSOwCmtXSF/kfRT76d3y1 x2iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561221; x=1721166021; 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=V6jxI8IuJZXYh6Vf9cRs/3xPvNRowoNzRPF2Bd36OA4=; b=J0Ye3X7vzyFsqKp7sXiUyPrBJWGpAcwlZ91vrRwIFMq4OeMLGxCeA74skqZvineyxD e4p+fSxfIev5OLgvhYxJ7g6nreXTF964P56bZkIETJbDcMmmdas/JIo+1L2f/b+GcBr0 PtCPLBxugmzo884Z+IEHG5jLVBQt/PoMphCNdlh3GCZD6QeozhVE/9/gXJ0XzjSIZrBx RgigglviNH5lsTth4sL8CvLcmDRg5Z3RV7tVGMceLnKh6z9qz1lJqPZ12gckC6IRTrwM LtLJUYdRCByhNtDqDsfs121Xjtz7rSnzNTPTyxaJW0G7fP2RWXCtGpX77giPsVtRGoFL RrJA== X-Gm-Message-State: AOJu0Yx2y9KU0Y2tPWYXFgFJ+x2pf9Oz6QG+23Fx/+4c0d3YHeDVqpBX 6YXOflXVSdeXboFobGOrCyYTexAQbroWLTvQPMjfXb7L191NxBDdkUAbgBH1i7M5aWIIltPFgcs W X-Google-Smtp-Source: AGHT+IE4NW2VAUD6fE+vcqkk4aMCOfb/wIJVboJO+898xvrGkg3lsIjOUP1nscezpqtzwN69lkZKRw== X-Received: by 2002:a17:906:3710:b0:a72:8a62:65e7 with SMTP id a640c23a62f3a-a780b87f063mr240751566b.57.1720561220844; Tue, 09 Jul 2024 14:40:20 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bd45a0d5sm1468578a12.66.2024.07.09.14.40.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:20 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 35/44] libmultipath: use libmp_pathinfo() in update_multipath_table() Date: Tue, 9 Jul 2024 23:39:26 +0200 Message-ID: <20240709213935.177028-36-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-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 allows us to remove dm_get_status(), and dm_get_map(), of which update_multipath_table() was the last caller. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 89 -------------------------------------- libmultipath/devmapper.h | 2 - libmultipath/structs_vec.c | 22 +++++----- 3 files changed, 12 insertions(+), 101 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 185c76b..105e838 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -804,45 +804,6 @@ static int dm_get_dm_uuid(const char *mapname, char uuid[DM_UUID_LEN]) (mapinfo_t) { .uuid = uuid }); } -int dm_get_map(const char *name, unsigned long long *size, char **outparams) -{ - struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; - uint64_t start, length; - char *target_type = NULL; - char *params = NULL; - - if (!(dmt = libmp_dm_task_create(DM_DEVICE_TABLE))) - return DMP_ERR; - - if (!dm_task_set_name(dmt, name)) - return DMP_ERR; - - errno = 0; - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_TABLE, dmt); - if (dm_task_get_errno(dmt) == ENXIO) - return DMP_NOT_FOUND; - else - return DMP_ERR; - } - - /* Fetch 1st target */ - if (dm_get_next_target(dmt, NULL, &start, &length, - &target_type, ¶ms) != NULL || !params) - /* more than one target or not found target */ - return DMP_NOT_FOUND; - - if (size) - *size = length; - - if (!outparams) - return DMP_OK; - else { - *outparams = strdup(params); - return *outparams ? DMP_OK : DMP_ERR; - } -} - bool is_mpath_uuid(const char uuid[DM_UUID_LEN]) { return !strncmp(uuid, UUID_PREFIX, UUID_PREFIX_LEN); @@ -886,56 +847,6 @@ static bool is_mpath_part_uuid(const char part_uuid[DM_UUID_LEN], return !strcmp(part_uuid + nc, map_uuid); } -int dm_get_status(const char *name, char **outstatus) -{ - int r = DMP_ERR; - struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; - uint64_t start, length; - char *target_type = NULL; - char *status = NULL; - - if (!(dmt = libmp_dm_task_create(DM_DEVICE_STATUS))) - return r; - - if (!dm_task_set_name(dmt, name)) - goto out; - - errno = 0; - if (!libmp_dm_task_run(dmt)) { - dm_log_error(3, DM_DEVICE_STATUS, dmt); - if (dm_task_get_errno(dmt) == ENXIO) - r = DMP_NOT_FOUND; - goto out; - } - - r = DMP_NOT_FOUND; - /* Fetch 1st target */ - if (dm_get_next_target(dmt, NULL, &start, &length, - &target_type, &status) != NULL) - goto out; - - if (!target_type || strcmp(target_type, TGT_MPATH) != 0) - goto out; - - if (!status) { - condlog(2, "got null status."); - goto out; - } - - if (!outstatus) - r = DMP_OK; - else { - *outstatus = strdup(status); - r = *outstatus ? DMP_OK : DMP_ERR; - } -out: - if (r != DMP_OK) - condlog(0, "%s: %s: error getting map status string: %d", - __func__, name, r); - - return r; -} - int dm_is_mpath(const char *name) { char uuid[DM_UUID_LEN]; diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index ed5e866..cb5151e 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -126,8 +126,6 @@ int dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags); int dm_addmap_create (struct multipath *mpp, char *params); int dm_addmap_reload (struct multipath *mpp, char *params, int flush); int dm_map_present_by_wwid(const char *uuid); -int dm_get_map(const char *name, unsigned long long *size, char **outparams); -int dm_get_status(const char *name, char **outstatus); enum { DM_IS_MPATH_NO, diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c index ccc4efc..770e498 100644 --- a/libmultipath/structs_vec.c +++ b/libmultipath/structs_vec.c @@ -484,30 +484,32 @@ int update_multipath_table (struct multipath *mpp, vector pathvec, int flags) { int r = DMP_ERR; - char *params = NULL; + char __attribute__((cleanup(cleanup_charp))) *params = NULL; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; if (!mpp) return r; - r = dm_get_map(mpp->alias, &mpp->size, ¶ms); + r = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mpp->alias }, + (mapinfo_t) { + .target = ¶ms, + .status = &status, + .tgt_type = TGT_MPATH + }); + if (r != DMP_OK) { - condlog(2, "%s: %s", mpp->alias, (r == DMP_ERR)? "error getting table" : "map not present"); + condlog(2, "%s: %s", mpp->alias, dmp_errstr(r)); return r; } if (disassemble_map(pathvec, params, mpp)) { condlog(2, "%s: cannot disassemble map", mpp->alias); - free(params); return DMP_ERR; } - free(params); - params = NULL; - if (dm_get_status(mpp->alias, ¶ms) != DMP_OK) - condlog(2, "%s: %s", mpp->alias, (r == DMP_ERR)? "error getting status" : "map not present"); - else if (disassemble_status(params, mpp)) + if (disassemble_status(status, mpp)) condlog(2, "%s: cannot disassemble status", mpp->alias); - free(params); /* FIXME: we should deal with the return value here */ update_pathvec_from_dm(pathvec, mpp, flags); From patchwork Tue Jul 9 21:39:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728569 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.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 88A59187861 for ; Tue, 9 Jul 2024 21:40:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561225; cv=none; b=o32dQZyzQxSxBn3mpk/9Z3wl9U6qkSBTu3nlo8U3x8N/uaqqdSQouh0mEYfyRRoxSjDWadPTlArI0h1Hrx9xmAI7AAp5L143m8RWmvJ5Xl9C+0wDImvbfJyn2q+VRgE32fqoj3jB4GPynBrrcZPefVYB/fFE5EW1fei9ky76vV8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561225; c=relaxed/simple; bh=MWMYJ49C2Q/ulDy4AaxxWGAurftkYwlK0Xd6T2NMPss=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f5vhPScgpntQuT4v2Ffx5tLYsfE+/djLvW8Hep7IqG6C5QDLv6nnuGpNthUw6OdWuEE8kA8zIQjlyQ9k+forHpnxUuhmb8erYHg3hyDhRVjVdO17bmVGM/sFWM2FBZNtt9Q9zkxIgNrX/kwa9xrZte2UffWNMEz+xAZqS3FGqO4= 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=DBmwpRaH; arc=none smtp.client-ip=209.85.167.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="DBmwpRaH" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-52ea929ea56so7476852e87.0 for ; Tue, 09 Jul 2024 14:40:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561222; x=1721166022; 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=TO3D2bjCG9vI03I/bfu4nLcFhibp64XqmtGTgP1TuB8=; b=DBmwpRaH04oc8u2yMLTozdTJ+kishhmp4ymaF1xUHQh079CjC2n5zbFmcTee4L91KK N5zNTUpEWkw24LtGhJsL5KRHv7A/urtSFUTBvCy/gEuzu4CTtZqo9majuCHUTyvtrMrF 7LSdzbLkNICTa2ZzlAsYNcLdk5mep4mZhSl3+EfAzSaPpHfFkBOG/cDdmN7xdPD6R5sD 01Sb1crI3id3gx0DsWAfoUZgMd2xbiKaJV6nGsCeywFufuC/+cZUFP3KrD1bZQZ882KA OvJ6839CS2mX2Qm7NNGhRrd782IyQdYhB5LFMxADl1gZbVe30mJc/wv+anVjRJXk9LlF a6tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561222; x=1721166022; 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=TO3D2bjCG9vI03I/bfu4nLcFhibp64XqmtGTgP1TuB8=; b=NwC1/mAzcHKQYjgrW01hBT//jA39PfGheFXNIzZMAvB61083+DWf/W7JfDAtz/mI+H Nqz5wxDNXndIe0ywwNdeJnXoEwsIHYIP+5CRgmODJwFtF1XNI1qB4VAOD4Dei7WRtseb /YB1XgvLxx89uOTTPQOCdwQth/fgI43xn/Eu2nluv8V3FcJdSzDV+SaRI+tJVpmNTXl5 C6HrremNgCleTeylc0xBSUKs3oRCbfMZya7RE0FlzA5XlZ6YAkfH0tPK8NzCqSVPMiRD XJIX5zzd26hKAzDZtNMcuOCix5LlloV0DY3l1WrHxbpI6h5lLmHevnEvJTjJZZOpZoDD 0riw== X-Gm-Message-State: AOJu0YxqK4Rn8fIPvXuJUsLQcmGvby8NN11e4cKHvNWOBo2k6jNzdRp8 FTzLWfNSh4zgR5/SRDZ/6bHpstmX/5bwmcufzWiQjMxi0aIMYbDvakrHnSkAUpA= X-Google-Smtp-Source: AGHT+IH9VP36EEIqw7oa5IfPJLWKK5u/9/UexM/jFqq19DHojXOK7t2SI+NeSCFQh7ulhUz7joguyg== X-Received: by 2002:a05:6512:3091:b0:52c:e119:7f1 with SMTP id 2adb3069b0e04-52eb99d2776mr2980413e87.51.1720561221678; Tue, 09 Jul 2024 14:40:21 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7ff24esm107725166b.131.2024.07.09.14.40.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:21 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 36/44] libmultipath: update mpp->dmi in update_multipath_table() Date: Tue, 9 Jul 2024 23:39:27 +0200 Message-ID: <20240709213935.177028-37-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-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 comes almost for free now. Signed-off-by: Martin Wilck --- libmultipath/structs_vec.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c index 770e498..fb3aa79 100644 --- a/libmultipath/structs_vec.c +++ b/libmultipath/structs_vec.c @@ -495,6 +495,7 @@ update_multipath_table (struct multipath *mpp, vector pathvec, int flags) (mapinfo_t) { .target = ¶ms, .status = &status, + .dmi = &mpp->dmi, .tgt_type = TGT_MPATH }); From patchwork Tue Jul 9 21:39:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728570 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (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 4475B189F30 for ; Tue, 9 Jul 2024 21:40:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561226; cv=none; b=WfwzCr7t3em8wrjHidSH0Z3MFXFw7BQPUVZCoT87q2UEVJ8di6h4ZWrlnXnkF5QDZ1N72wg/Jk7DV0gWkQ3uraTVhlJyzqn2t54PAmHRxqyrCSxlkv6VOlAv0ygwMmYtMSg7w6TmDG+8W/MQEX+OUziClFSpVcrC1N20Bs2kMdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561226; c=relaxed/simple; bh=tQFBU+z/kp3Jop/VyLHVwhQ9gh4Hkrknz+iriOb3Uxo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gkW0Zr5MseWdq+Uc4iIewI4sJn9PV4ryBz5xIh84f+TUiOA0xmTqmuw+EJDFi6tMj7vySPbSC6lmh/uriQaUcet5bZRAhBkT97o/JtgNfJUuw5jeJclsvfLAPZsRqJe0+S4z9UKiQaTxU7NQPNmIkPCD9knrVAzjMwEE3IYL8qo= 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=I7mNWb+N; arc=none smtp.client-ip=209.85.208.52 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="I7mNWb+N" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-58b966b4166so6855744a12.1 for ; Tue, 09 Jul 2024 14:40:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561223; x=1721166023; 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=7M/qjX04KFB0tD49eYeiG4bRU5le18KKIKvEXTRllT0=; b=I7mNWb+NbxqV/Zq036gLuQwFXktwAyYssbnUyy7EMM9jXp57yfGTdd+GnbMmFugD4Y vXTlrGZjoG1NaBysGTvll/wOZ5j5Z/PhGPiOSZjj8/T4QtLjZ1W8M49X3yMM5NZhySkB 5DAo5wz6Wr1NJolgPVrtxV6kcr7rie0M8wxgbCiMeF18eH1WD9fSR9dCHRIypt2naJhy X1GJ0iZyQs2AaflkwDtO/jPLGkdJIBBR0IQU8jsX/jGBtrIrA0oOaXRh6yc/xVWkjM/X Q2yWz/b1BrvJwMnGhkrnEz31Vn+HmJ5hZAnZTkRkzQr3P88dhBcMhbWLxiOvfwiqTnGg GaBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561223; x=1721166023; 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=7M/qjX04KFB0tD49eYeiG4bRU5le18KKIKvEXTRllT0=; b=CAgtu1WARNxb4GW/alnELSNoxpXmH2xfs58PcdjwWgd4T3qP4BNIpniO+ldgLwxtR8 nR3N5emJ/qhB4VYSvAPAqpo/TUGTQlMY2fwf/69ItUBOKHPqO5ofqDPtXBb4e85ejcYI HD0QI5DQNBPDNOgnkPr6aLF+L0MXEvNYoK7cRa4t2cGi5Q+1nq8qPHVOuCJIMU6A+Q3L g3VYBTDPnzDrIhCSp+IHwaX0xO2rd5VrTRFS5fnodlURO2TnTHMX7xVPQj8/si7TK1zL ZRKm5q4bA38A2FFFxTCwII6ep0ZcoytM+e0+wPTFoMSZGsRCph7sfMFcp6rvP9LsfAyo lEdQ== X-Gm-Message-State: AOJu0YxXEdtbjjJ7QOBZCBC+nU/ZoEBiuMoc1sLPNvEyYUrJo+7Ldaz5 A5cs5rDym+NkYhYQs7Ot2J0iNV5p2SwZcmR7kSVIkvRFeZFldM0Bildwc7P1suo= X-Google-Smtp-Source: AGHT+IGjw/M+AWWaY82qjgUZt74SrlG2Dz+hZ+f3CuvlsHy98f7Ss6gfvATa0p35PbZ30wpgQi1HQA== X-Received: by 2002:a05:6402:5255:b0:58c:c29c:2b73 with SMTP id 4fb4d7f45d1cf-594bcba7dd5mr2004472a12.40.1720561222513; Tue, 09 Jul 2024 14:40:22 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bc3f3defsm1490434a12.45.2024.07.09.14.40.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:22 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 37/44] libmultipath: drop extra call to dm_map_present() in domap() Date: Tue, 9 Jul 2024 23:39:28 +0200 Message-ID: <20240709213935.177028-38-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 dm_get_wwid() will return DMP_NOT_FOUND if the map doesn't exist. Signed-off-by: Martin Wilck --- libmultipath/configure.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 565ea5c..29c11ad 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -834,6 +834,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) { int r = DOMAP_FAIL; struct config *conf; + char wwid[WWID_SIZE]; /* * last chance to quit before touching the devmaps @@ -843,8 +844,7 @@ int domap(struct multipath *mpp, char *params, int is_daemon) return DOMAP_DRY; } - if (mpp->action == ACT_CREATE && dm_map_present(mpp->alias)) { - char wwid[WWID_SIZE]; + if (mpp->action == ACT_CREATE) { int rc = dm_get_wwid(mpp->alias, wwid, sizeof(wwid)); if (rc == DMP_OK && !strncmp(mpp->wwid, wwid, sizeof(wwid))) { From patchwork Tue Jul 9 21:39:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728571 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 47B36189F46 for ; Tue, 9 Jul 2024 21:40:25 +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=1720561227; cv=none; b=fjzCUlq3WgHBbvZYfjcM1VfOvh2rzQ+pwC4NcMfXv3OGeWoksoFgvnhVYh6pvPE/MMlFBqtZxcNJTtOXdZICPdrS8AuwqXiGapZzkfs1VLgdPuXf4nBL+OOq4m7sue/Z8GvOw1LIC9q/qkn2qrpyoscHzOAEtKN4RqSRt7IBs5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561227; c=relaxed/simple; bh=mTYQ+8YiaxorU55+pZYprsoyhthFcahbVUQKEqr9T8g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B2J3J3khVwYfOzWe3ThzyWPPQF5Ey8qoB9ccJowtic9lsXres6PZX4CMDzWFBdevcLyYTOz/bxmye4mxCtP4ydGFTQn7t35cD7mCBIn2AFTEzlTe1Xl+F+5uUVVF6VMq/4pyYxQ6m2nCggDxqSRO3m1pLWpSP85oB8JdA7JO3bY= 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=UQqAGERu; 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="UQqAGERu" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a77c9c5d68bso551839966b.2 for ; Tue, 09 Jul 2024 14:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561224; x=1721166024; 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=5RPfust5WVd3fbSEt4Bek4eEB+z5Zpc1MlgvTLyqxGc=; b=UQqAGERuj+goLv2HLm6f2tcxhOED8NTZrW8heGqFIBuOCJUwmQXWKwrO2RxnS5i0W6 JbiBAbbE1pVplPeD6GrhV/JjO8OmT2SHJctK6EZaI1vfNkMsnUqF9x6iCEHuKzp3REtP Ur0DkTeBOkqPXkZKs92a14Rb3L3NpWdmQRkW6A57et/o0Q+AQbf34WAxW4KGoI27CAJ4 UreG5nydKRA+wfjaoLsF0JNz1usalrnrErpIxJbhag9Q8/yAAdW/dKmNMk7JuI1aKTfg YC7irdc6X0p6BuYokAKi9cIVB/QW84rFckRpew2zHwGzg5xSzwhVQ/nbOoMH+IVIasFL E+UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561224; x=1721166024; 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=5RPfust5WVd3fbSEt4Bek4eEB+z5Zpc1MlgvTLyqxGc=; b=h8UkWOzJMYo/wOm+QkMPhT6k6kOTxuyMe4mKZJe3aLOoc087i2oOGW6Ra5kFtQpZ6a VNF6EnSwjYOLUktc9QZ/8HXlL44daIknoLf5up565YhRt2urzvCcJ9dNCkpw/Be76AnT Fk09o/YzWB4yiDczJlyTLApXWwSQ39owvPwCW3bc/8RRkIsT2WAp6jM4cOceh+fsJtOx sMvxHSYrAJytYgP0qjNAgaLIlD1AuBRIy0A3joEUlG8awdCWJ979mk/j5kLapKknWGs7 xIfIikkOyvfwWjrZsHI+3c/jgqgQwN/uiaielMCxPeBFCi0ys3BhXIC6GbwxROkwrrNH pPmg== X-Gm-Message-State: AOJu0Yxtr4nqtLE0qZZisnMSqqBR72LpvQeQl66jUYqB3XqAHJu3qz46 Pi2gufKlVh/77+WEgodRuRUMYMqUhr1DccTNA3yKe2suhPHdlmr/mfKCoiv7JqQ= X-Google-Smtp-Source: AGHT+IFYZoO5jUjTwMk7AI4wl2X9Q9rw6GjITMV1KAo7Ol4Crz0eXGIk9R0Ws7JcRmqarIR/ZfzqlA== X-Received: by 2002:a17:906:b20f:b0:a6f:1443:1e24 with SMTP id a640c23a62f3a-a780b70176cmr237116366b.34.1720561223466; Tue, 09 Jul 2024 14:40:23 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6bcc21sm109112466b.16.2024.07.09.14.40.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:23 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 38/44] libmultipath: split off update_multipath_table__() Date: Tue, 9 Jul 2024 23:39:29 +0200 Message-ID: <20240709213935.177028-39-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Split off the part of the function that does the disassembly from the part calling libmp_mapinfo(). This makes it possible to call the function from a context where the map info is already available. Signed-off-by: Martin Wilck --- libmultipath/libmultipath.version | 1 + libmultipath/structs_vec.c | 31 +++++++++++++++++++------------ libmultipath/structs_vec.h | 2 ++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/libmultipath/libmultipath.version b/libmultipath/libmultipath.version index 5b8f9e0..54b5a23 100644 --- a/libmultipath/libmultipath.version +++ b/libmultipath/libmultipath.version @@ -206,6 +206,7 @@ global: uninit_config; update_mpp_paths; update_multipath_strings; + update_multipath_table__; update_multipath_table; update_queue_mode_add_path; update_queue_mode_del_path; diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c index fb3aa79..fb74923 100644 --- a/libmultipath/structs_vec.c +++ b/libmultipath/structs_vec.c @@ -480,6 +480,24 @@ done: condlog(2, "%s: no hwe found", mpp->alias); } +int +update_multipath_table__ (struct multipath *mpp, vector pathvec, int flags, + const char *params, const char *status) +{ + if (disassemble_map(pathvec, params, mpp)) { + condlog(2, "%s: cannot disassemble map", mpp->alias); + return DMP_ERR; + } + + if (disassemble_status(status, mpp)) + condlog(2, "%s: cannot disassemble status", mpp->alias); + + /* FIXME: we should deal with the return value here */ + update_pathvec_from_dm(pathvec, mpp, flags); + + return DMP_OK; +} + int update_multipath_table (struct multipath *mpp, vector pathvec, int flags) { @@ -504,18 +522,7 @@ update_multipath_table (struct multipath *mpp, vector pathvec, int flags) return r; } - if (disassemble_map(pathvec, params, mpp)) { - condlog(2, "%s: cannot disassemble map", mpp->alias); - return DMP_ERR; - } - - if (disassemble_status(status, mpp)) - condlog(2, "%s: cannot disassemble status", mpp->alias); - - /* FIXME: we should deal with the return value here */ - update_pathvec_from_dm(pathvec, mpp, flags); - - return DMP_OK; + return update_multipath_table__(mpp, pathvec, flags, params, status); } static struct path *find_devt_in_pathgroups(const struct multipath *mpp, diff --git a/libmultipath/structs_vec.h b/libmultipath/structs_vec.h index dbc4305..01f5dc4 100644 --- a/libmultipath/structs_vec.h +++ b/libmultipath/structs_vec.h @@ -33,6 +33,8 @@ struct multipath * add_map_with_path (struct vectors * vecs, const struct multipath *current_mpp); void update_queue_mode_del_path(struct multipath *mpp); void update_queue_mode_add_path(struct multipath *mpp); +int update_multipath_table__ (struct multipath *mpp, vector pathvec, int flags, + const char *params, const char *status); int update_multipath_table (struct multipath *mpp, vector pathvec, int flags); int update_multipath_status (struct multipath *mpp); vector get_used_hwes(const struct _vector *pathvec); From patchwork Tue Jul 9 21:39:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728572 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 0C6EE18784E for ; Tue, 9 Jul 2024 21:40:25 +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=1720561228; cv=none; b=T8CczOiibPBf8P/yZqGGlSmb0KJcP4uU54GHcHK/WaJddNurTOt8aetoMu4cvIGhXkqIkFdt8S8kjZOWxPH2p5CVisTkebWQxlVHfeH+9dccYeNqZykrcYcTiO8XvO6EWt5d6z3wgjgiE2EPBJepYcwjZ6rlxMyjNxcnWwD/nnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561228; c=relaxed/simple; bh=gJM19D/gbSuAv2vACOFJZTNNjFUbxhbhkXHCNMcC6cI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V2btjUN3CHL//7FMNsafhMSZLJXaydooJPVdTFR3UjOh/Wz9U2vPi6WtFmaK4Idzrqns3BLjqtHTdaGxq5ayYX6utUztz40EHgfe/8bNqntkLOv8cbHi4NYFG2OiaiLyTrmHsouiBajlALQjzIYtX4H6sQrp5onFZhfwA8Gy0lE= 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=KWyJH3vF; 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="KWyJH3vF" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-58b0dddab63so8509554a12.3 for ; Tue, 09 Jul 2024 14:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561224; x=1721166024; 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=hSrUArh8y3ySJGuRIWUGDizUATKxu3tyCHQw+iYkXdI=; b=KWyJH3vF9/4j0cb+fKgRRIRaLGEqTjHV4ZFjicmYHCXemh7P2f//mItv5C7dCuLcnb RLkyqvWQSGk+2kaXwzyuVuAipadIIrgrZkMWuxlRoPHL6zV0tYkATgz8gGNunAJCkDWk V7CoSozXdANQigK8/yJWt4pYGoqAQudTiaRqLPVHN/wnvcbYZZOuB28AheTHwV3AgURB r/h6a8bo5OaEUUY60tTImyna5M9nx4kFOuHv9jth4h+2NbB/u8+g9ccrjdGG+oAAUorD cTYeL+cONusRImpE4tSz1BfzNcMakSAVaVvx4Dw0xPsh79pytzKKmIbYcDrfaSW6/0Rm ocAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561224; x=1721166024; 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=hSrUArh8y3ySJGuRIWUGDizUATKxu3tyCHQw+iYkXdI=; b=ZAV5MLnFOyuIE8g2li3RnaqScTIyuFZvGugTg9Xkicb50dlVMiLSKIuX4K7lvHoyKs P4kDeqzlDLKeQnuFpQGcquvOfgRFCNdtAz3IPRJDF17FHH50U9A4wLNMZ4TIFdx9oi61 OKJxJkcp+Jgh4lLwzCw/pbAS5c1fD+97qhUKc8mA0uXxZgp7B+hkngP0CooheAxTfrjl UdkJCmE4qq8+wHPHg7d+jIYPu3iOUdI93y7kZrZQjL9zcQitwDkFodDrUMxifiN7JZ8y VvYioN5+UJolm1adpGPonwkRjuO88LxRsL6UQxVtRZNk/I26aX+xpnKfm+OnhKFwQUr0 POLg== X-Gm-Message-State: AOJu0Yz5rdqLdb2JifZbqr2/p4B5PHRI8WyPyGVFMhGcPa0wbCHqWYiy OrkVK8S+5+mECxZ8M8D8dz+NusEp5qCNwxLhw9HpLKP4qcsVyz09QGqpfKpCANP6sPEDX+wnT6R J X-Google-Smtp-Source: AGHT+IFfohKZPaESoDba7crIhpDFQfmZFRqulgaU3/oKobK1aImg0Pv53OlR4XQy+vF3H9QSD9MDEA== X-Received: by 2002:a17:907:d93:b0:a77:b3c4:cd28 with SMTP id a640c23a62f3a-a780b68a287mr339528966b.9.1720561224339; Tue, 09 Jul 2024 14:40:24 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a7ff052sm108499466b.105.2024.07.09.14.40.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:24 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 39/44] multipath: implement check_usable_paths() with libmp_pathinfo() Date: Tue, 9 Jul 2024 23:39:30 +0200 Message-ID: <20240709213935.177028-40-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ... and use cleanup attributes. We need to call the disassemble...() functions from multipath directly now, but we fetch exactly the data we need from the kernel. Signed-off-by: Martin Wilck --- multipath/main.c | 58 ++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/multipath/main.c b/multipath/main.c index c82bc86..b3b6c81 100644 --- a/multipath/main.c +++ b/multipath/main.c @@ -222,12 +222,14 @@ get_dm_mpvec (enum mpath_cmds cmd, vector curmp, vector pathvec, char * refwwid) static int check_usable_paths(struct config *conf, const char *devpath, enum devtypes dev_type) { - struct udev_device *ud = NULL; - struct multipath *mpp = NULL; + struct udev_device __attribute__((cleanup(cleanup_udev_device))) *ud = NULL; + struct multipath __attribute__((cleanup(cleanup_multipath_and_paths))) *mpp = NULL; struct pathgroup *pg; struct path *pp; - char *mapname; - vector pathvec = NULL; + char __attribute__((cleanup(cleanup_charp))) *params = NULL; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; + vector __attribute((cleanup(cleanup_vector))) pathvec = NULL; + char uuid[DM_UUID_LEN]; dev_t devt; int r = 1, i, j; @@ -238,31 +240,39 @@ static int check_usable_paths(struct config *conf, devt = udev_device_get_devnum(ud); if (!dm_is_dm_major(major(devt))) { condlog(1, "%s is not a dm device", devpath); - goto out; + return r; } - mapname = dm_mapname(major(devt), minor(devt)); - if (mapname == NULL) { - condlog(1, "dm device not found: %s", devpath); - goto out; - } - - if (dm_is_mpath(mapname) != DM_IS_MPATH_YES) { - condlog(1, "%s is not a multipath map", devpath); - goto free; - } + mpp = alloc_multipath(); + if (!mpp) + return r; + if (!(mpp->alias = malloc(WWID_SIZE))) + return r; /* pathvec is needed for disassemble_map */ pathvec = vector_alloc(); if (pathvec == NULL) - goto free; + return r; - mpp = dm_get_multipath(mapname); - if (mpp == NULL) - goto free; + if (libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { major(devt), minor(devt) } }, + (mapinfo_t) { + .name = mpp->alias, + .uuid = uuid, + .dmi = &mpp->dmi, + .tgt_type = TGT_MPATH, + .target = ¶ms, + .status = &status, + }) != DMP_OK) + return r; - if (update_multipath_table(mpp, pathvec, 0) != DMP_OK) - goto free; + if (!is_mpath_uuid(uuid)) + return r; + + strlcpy(mpp->wwid, uuid + UUID_PREFIX_LEN, sizeof(mpp->wwid)); + + if (update_multipath_table__(mpp, pathvec, 0, params, status) != DMP_OK) + return r; vector_foreach_slot (mpp->pg, pg, i) { vector_foreach_slot (pg->paths, pp, j) { @@ -284,12 +294,6 @@ static int check_usable_paths(struct config *conf, found: condlog(r == 0 ? 3 : 2, "%s:%s usable paths found", devpath, r == 0 ? "" : " no"); -free: - free(mapname); - free_multipath(mpp, FREE_PATHS); - vector_free(pathvec); -out: - udev_device_unref(ud); return r; } From patchwork Tue Jul 9 21:39:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728573 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.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 3108918562D for ; Tue, 9 Jul 2024 21:40:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561229; cv=none; b=QSPSujSN370JM8i8zzvNsAXBkUxeLPzY25402a1OQncoQNrt8W1ekLB0yOTRs9NbuV0R11HvUTsFELkLV7mL2rBjDpmf9Sp5aewKMYqCnsuyZiVAniPGZWMDMdNzVJpMhcKwAgNT7hJiFFg1WEuf9R1dpvmy14LDgbj3LNnBk2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561229; c=relaxed/simple; bh=0aP5E//cpd2+LFPciApI3ZGg8ZAX7pnmhH+F5MpfZzY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HzRj7JzevYwiJZrNFToB8qr3L6w47hDVkSvA8svzPJButQ/NnG0MwErhY1U7Air1lagtsx3i531xamzwPdtQmZkAmB/V0A3m71AWSSZpUDJ0sCu5SEbHvlm2LZo4XHXyZm5Det86djVVm2WWbuXfQLKA9OaLNNt/CJ7pUtWj0v4= 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=RIeLH8ff; arc=none smtp.client-ip=209.85.167.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="RIeLH8ff" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-52ea2ce7abaso7635750e87.0 for ; Tue, 09 Jul 2024 14:40:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561225; x=1721166025; 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=7lpqCjYsPcG0uUiH2tzp+60eXf8ot/bmvAS/AsFKwIw=; b=RIeLH8ffMO1qnU4MK7s6MgxmR9cYCx1FP8lxfZNyxMcx304LcqYe/x4I8kngkun1Xx lOGN5pidvWn92rQ6NiUJfzxZt0UBOMAM3iy5/Tn5iaSQnD4WRf0MkGXb1Q7b9STpK3Kc nqrRVxVLRvaF3J0lveN8ssMAQMrQiuaBXtO5Lm+8cWUaEIo7GwGaEnlRw4eaNZij12rC SEJhfX/6iUEZZyYDEvtdhRyIoFIoufRRGPu5u8On6YZP/qfrjW1/Og91+/zQMiyCaRHe GDMniJfkRcQhRuU3R6cd/IRGJoNqtz0Doxf/hn6JTzX7rjANAWyuvumFVPNnvdbO6Ygu rfew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561225; x=1721166025; 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=7lpqCjYsPcG0uUiH2tzp+60eXf8ot/bmvAS/AsFKwIw=; b=SEs61Gahlwa5lnnam6isFYdNms4b3CLOKnsJ6YPr9swk6zzBrtFmD2JIsrZFhGJlRW bhiHAH2Mb/+Z+18vAVKPAEZLVGJRNKWa63C3mLknYqeg0YYpjhy3gy1kYynJGn4CVLlv EfND1avt9KP3KrkF3yMQSjx81SAhKzRfhw6H6JcAqbGkdMelGQsniPVpKofnoEWP5BM4 HQPdIcoY6Rb9CHp0u3ubY2z/oX4G2OLpnq0p1Jd20X/ts//PrjnAvzwpsQnZ3riP5q9R j8svS3r3vNLxY0CXom7lt6GtGjRWwrUJ2/Lg7vvAntMsAJVEgpTlVEXHfh9qc5ALGUrz BgVQ== X-Gm-Message-State: AOJu0YxOOjn1DXFbvsznQiiJnyi2PDzEVmPoZUMHWD1ESVcLT2sovv7Z ykL0LQWaoMEf/ks3PCuDakX1Cs0FeNeobVweVJuj6LpUEt1fDliX1FpYvg9b//I= X-Google-Smtp-Source: AGHT+IFls4kLacC2cUtPpws0IXCl3vb0Nxxr94hSgGvPh26iEjUxTkusST9OoglmDUFbVRVP/MbnFQ== X-Received: by 2002:a05:6512:3b20:b0:52c:adc4:137c with SMTP id 2adb3069b0e04-52eb99949a2mr2749743e87.20.1720561225188; Tue, 09 Jul 2024 14:40:25 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bbe2d006sm1467718a12.31.2024.07.09.14.40.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:25 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 40/44] multipathd: implement add_map_without_path() with libmp_mapinfo() Date: Tue, 9 Jul 2024 23:39:31 +0200 Message-ID: <20240709213935.177028-41-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Also, change the return value to int, as this is more expressive and the returned struct multipath isn't used by the caller. Note: this removes the call to remove_map() at the end of the function, which doesn't make sense anyway, because update_multipath_table() would not return error unless the table disassembly failed, in which case nothing would have been added the the mpvec or pathvec yet. It should be sufficient to just cleanup the local data structures when add_map_without_path() fails. Signed-off-by: Martin Wilck --- multipathd/main.c | 69 ++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/multipathd/main.c b/multipathd/main.c index 442a154..9e82188 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -707,48 +707,53 @@ fail: return 0; } -static struct multipath * -add_map_without_path (struct vectors *vecs, const char *alias) +static int add_map_without_path (struct vectors *vecs, const char *alias) { - struct multipath * mpp = alloc_multipath(); + struct multipath __attribute__((cleanup(cleanup_multipath_and_paths))) + *mpp = alloc_multipath(); + char __attribute__((cleanup(cleanup_charp))) *params = NULL; + char __attribute__((cleanup(cleanup_charp))) *status = NULL; struct config *conf; + char uuid[DM_UUID_LEN]; + int rc = DMP_ERR; - if (!mpp) - return NULL; - if (!alias) { - free(mpp); - return NULL; - } + if (!mpp || !(mpp->alias = strdup(alias))) + return DMP_ERR; - mpp->alias = strdup(alias); + if ((rc = libmp_mapinfo(DM_MAP_BY_NAME, + (mapid_t) { .str = mpp->alias }, + (mapinfo_t) { + .uuid = uuid, + .tgt_type = TGT_MPATH, + .dmi = &mpp->dmi, + .target = ¶ms, + .status = &status, + })) != DMP_OK) + return rc; + + if (!is_mpath_uuid(uuid)) + return DMP_NO_MATCH; + else + strlcpy(mpp->wwid, uuid + UUID_PREFIX_LEN, sizeof(mpp->wwid)); - if (dm_get_info(mpp->alias, &mpp->dmi) != DMP_OK) { - condlog(3, "%s: cannot access table", mpp->alias); - goto out; - } - if (!strlen(mpp->wwid)) - dm_get_wwid(mpp->alias, mpp->wwid, WWID_SIZE); if (!strlen(mpp->wwid)) condlog(1, "%s: adding map with empty WWID", mpp->alias); + conf = get_multipath_config(); mpp->mpe = find_mpe(conf->mptable, mpp->wwid); put_multipath_config(conf); - if (update_multipath_table(mpp, vecs->pathvec, 0) != DMP_OK) - goto out; + if ((rc = update_multipath_table__(mpp, vecs->pathvec, 0, params, status)) != DMP_OK) + return DMP_ERR; if (!vector_alloc_slot(vecs->mpvec)) - goto out; - - vector_set_slot(vecs->mpvec, mpp); + return DMP_ERR; + vector_set_slot(vecs->mpvec, steal_ptr(mpp)); if (update_map(mpp, vecs, 1) != 0) /* map removed */ - return NULL; + return DMP_ERR; - return mpp; -out: - remove_map(mpp, vecs->pathvec, vecs->mpvec); - return NULL; + return DMP_OK; } static int @@ -862,14 +867,9 @@ int ev_add_map (char * dev, const char * alias, struct vectors * vecs) { struct multipath * mpp; - int reassign_maps; + int reassign_maps, rc; struct config *conf; - if (dm_is_mpath(alias) != DM_IS_MPATH_YES) { - condlog(4, "%s: not a multipath map", alias); - return 0; - } - mpp = find_mp_by_alias(vecs->mpvec, alias); if (mpp) { @@ -907,10 +907,13 @@ ev_add_map (char * dev, const char * alias, struct vectors * vecs) /* * now we can register the map */ - if ((mpp = add_map_without_path(vecs, alias))) { + if ((rc = add_map_without_path(vecs, alias)) == DMP_OK) { sync_map_state(mpp); condlog(2, "%s: devmap %s registered", alias, dev); return 0; + } else if (rc == DMP_NO_MATCH) { + condlog(4, "%s: not a multipath map", alias); + return 0; } else { condlog(2, "%s: ev_add_map failed", dev); return 1; From patchwork Tue Jul 9 21:39:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728574 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 A3F5A189F4B for ; Tue, 9 Jul 2024 21:40:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561229; cv=none; b=GYrzHyMFzra0+dHcKvTsOeUfUUoDDpCxU/NJlD0q+3Ds/JEMzL7PpYJWe3e96ysypzZr+g8LTM5th7zKXj8IVXpRHNto4wlKDlNhXoEUW4VLqAooKE+17hCpHKI/xXp5oZO7VoIav2M/zBE9isgL2We1aL5LNw8TarJRkT6eOQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561229; c=relaxed/simple; bh=/vNXK8ZwfNd3MH8NLgxmbSVgQ2JFuiCfn17tgWTwDUs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iP1yJZWSfN/246R1Lko/HLz2Lv68dzCzuibzFxk4ejt7QlnYP3dB3/nc5W8gKp/pB+bx7yypbw1AWUA/0eUo55NAzxGNoVNNEX7eYuOKVglA21tGVzgKQc3LOOYDhunG66gK8F5aFhuknFWMutBOCgfsi3BRUESpiDRvbDPIDAY= 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=ENe2zwia; arc=none smtp.client-ip=209.85.218.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="ENe2zwia" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a77cc73d35fso35479766b.0 for ; Tue, 09 Jul 2024 14:40:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561226; x=1721166026; 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=xothMHvVSxnWIQ9LZMHqLA249Sx3wnBWK8WN0S3U6VI=; b=ENe2zwiausGrNhjdmeJkAz+YsTrCNZHHmjEvUejv9hCgGFzGzfBYFVK4TDbaE6MYnR F65dvr7wht0NmBOPGVDrirco1XoBt5S8s6bdzPcsoTKPyt/eZxtKjSo3gl2+2KIpEbcN 8yQdYZ5oWqOEm7HOV2TTJzr7VOK0vKEBuHHXCDr4uIF61vdAXhyO23x6n/9IS0CG4dZa BCg+B5KJ8Ft7ckgLNJLNfe2v6A3/X4M2b/5UZj8fiUZdhiU31YApKB7QPx9ikBSVjYCT shYlxBebwsLlvbuJdFFUy4Zemhfq5tTFCBxv830Nvr+KxEwzB4GpGC0Tvw5ma+PaKVHV voyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561226; x=1721166026; 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=xothMHvVSxnWIQ9LZMHqLA249Sx3wnBWK8WN0S3U6VI=; b=Dcicr5lAbpgGOvKdzCq01PB0gQ9WAXQuol2fzhHL+ZW0Ur+xV6HobOoS7abYd/g2Ci 9Rj7zFAI+VaJ9+ZmM5DkiJ+LVGPDUuxqv8XQlm98nM5ollI3jgHiZao20m+RZ/lapJn4 UE690Vl7BJvu+5kGjyxj+6ziW73e99ypu1Ka5MIdUC7Qw1lRmfv2xu/c/zMSJ08KZJwS uNsjRidzQ/pHQrHU0hJ+iS0nhxNH34tQv0cZhADCYm1maJCmLY3onadAdj7CiNCJU4wF SoGuilAyzSAP3HoBin9IbIPo9zdeJnenGHivqs5CnFXcMffD/FpRaAzOw4cSV0SyxGIY G5+g== X-Gm-Message-State: AOJu0YygXkSMbXU+KyCgRDvtmIZptcOtiR4N7LALbCIsxY6+Dg6UsKdW Kfhg+puTnmXuVJOeY15Df/01n2LyN+GAYfMNMvslOaY1xqoKNI7quc+g2aQn+HCwkvu+6EihTOD 2 X-Google-Smtp-Source: AGHT+IGJj9MEwa3K+tfnuy70eCwgFHQEQfsBkkMYxKoeH2ZLFOBejBkiLKvMUu9N5dFSdAwNyKR+4A== X-Received: by 2002:a17:906:f598:b0:a77:c7d8:7b4c with SMTP id a640c23a62f3a-a780d22e380mr374993966b.11.1720561226105; Tue, 09 Jul 2024 14:40:26 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a8541f7sm108063566b.154.2024.07.09.14.40.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:25 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 41/44] libmultipath: simplify dm_get_maps() Date: Tue, 9 Jul 2024 23:39:32 +0200 Message-ID: <20240709213935.177028-42-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Make dm_get_multipath() return a distinct error code for non-multipath targets. This way the extra call to dm_is_mpath() is not necessary any more. As dm_get_maps() is the only caller of dm_get_multipath(), transform it into a static function. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 44 +++++++++++++++++++++------------------- libmultipath/devmapper.h | 1 - 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index 105e838..e653ca6 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -1169,40 +1169,43 @@ dm_disablegroup(const char * mapname, int index) return dm_groupmsg("disable", mapname, index); } -struct multipath *dm_get_multipath(const char *name) +static int dm_get_multipath(const char *name, struct multipath **pmpp) { struct multipath __attribute((cleanup(cleanup_multipath))) *mpp = NULL; char uuid[DM_UUID_LEN]; + int rc; mpp = alloc_multipath(); if (!mpp) - return NULL; + return DMP_ERR; mpp->alias = strdup(name); if (!mpp->alias) - return NULL; + return DMP_ERR; - if (libmp_mapinfo(DM_MAP_BY_NAME, + if ((rc = libmp_mapinfo(DM_MAP_BY_NAME, (mapid_t) { .str = name }, (mapinfo_t) { .size = &mpp->size, .uuid = uuid, .dmi = &mpp->dmi, .tgt_type = TGT_MPATH - }) != DMP_OK) - return NULL; + })) != DMP_OK) + return rc; if (!is_mpath_uuid(uuid)) - return NULL; + return DMP_NO_MATCH; strlcpy(mpp->wwid, uuid + UUID_PREFIX_LEN, sizeof(mpp->wwid)); - return steal_ptr(mpp); + *pmpp = steal_ptr(mpp); + + return DMP_OK; } int dm_get_maps(vector mp) { - struct multipath * mpp; + struct multipath *mpp = NULL; struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL; struct dm_names *names; unsigned next = 0; @@ -1227,20 +1230,19 @@ int dm_get_maps(vector mp) } do { - if (dm_is_mpath(names->name) != DM_IS_MPATH_YES) - goto next; - - mpp = dm_get_multipath(names->name); - if (!mpp) - return 1; - - if (!vector_alloc_slot(mp)) { - free_multipath(mpp, KEEP_PATHS); + switch (dm_get_multipath(names->name, &mpp)) { + case DMP_OK: + if (!vector_alloc_slot(mp)) { + free_multipath(mpp, KEEP_PATHS); + return 1; + } + vector_set_slot(mp, mpp); + break; + case DMP_NO_MATCH: + break; + default: return 1; } - - vector_set_slot(mp, mpp); -next: next = names->next; names = (void *) names + next; } while (next); diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index cb5151e..d9e9bcc 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -179,7 +179,6 @@ int dm_rename (const char * old, char * new, char * delim, int skip_kpartx); int dm_reassign(const char * mapname); int dm_reassign_table(const char *name, char *old, char *new); int dm_setgeometry(struct multipath *mpp); -struct multipath *dm_get_multipath(const char *name); #define VERSION_GE(v, minv) ( \ (v[0] > minv[0]) || \ From patchwork Tue Jul 9 21:39:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728575 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (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 87C90187879 for ; Tue, 9 Jul 2024 21:40:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561230; cv=none; b=g9r3twXGJDcqFlp2nmhdig9TA9Hv81weVgs0ytlv7Ag2APhmTT581gdQZ0AarF7g8D7C1SFx9hFtuLIvbIyRNajuKNTj3vx0W1EhKx81xHVX7+Tzc9Xylr/qUU+b7I8lN+weLro5et5pMnTaiiHo/LJz51ii8wF6kBoD0aWcmOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561230; c=relaxed/simple; bh=4iQdFJUqg1TGMM4SFDi+cPVzxU9O6Hc8Vu0lTxWr79o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KiyLsFSEdja/ajMIMPFyABEcgIgVmfDCL4cOdmwRdNWbOzMPv+7ousNSeSbjoJ64NG21J4SGQOS8MJP3AlVGrH4IoGsXhex62UzMWijsk4wq4rLySUujevwcU9hYrjXgOEVLlBLdb+ZRXd9wLOGA+NKap+RebXNQ93Bg4L1jF7g= 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=Zv+9JMaV; arc=none smtp.client-ip=209.85.208.41 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="Zv+9JMaV" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-58b966b41fbso7196873a12.1 for ; Tue, 09 Jul 2024 14:40:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561227; x=1721166027; 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=o/J7dgWf2/69kUcpJUs2AGuK82UmnBkiAPK9AVx4Hyc=; b=Zv+9JMaVO+1U6/uLM8pWSMCu9XLrhur0HSn67BL5M72mQOrIgm6w30dYhGUqs2EN6X y7PSheyi68MZ1IQuLitYEUkn5TY/JFsYt2bKxnvpu5MDVIJnLcSIB2rw4eMeBfVeB5+K rK0ZGJ2zhpoOBe0wA6r2YziabukwwA/IYhfuGLkeHMZHfMt8vAgFtSdA1XyY/uOJZoI4 eVZw7BLC/eut746cF7KRFveooSII6sm19u3IiXbT3NBNGC9jSANBjLJJ59rUiHtUbLRr yxfoJ9NQyOW1CPJqSEuboTswdlaQfL4d+ns49eRWEEOlsDa9I0k3+R9gnMQDOhbVHxfl FZSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561227; x=1721166027; 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=o/J7dgWf2/69kUcpJUs2AGuK82UmnBkiAPK9AVx4Hyc=; b=QuBXwZk3GuYr5KIoRzneffE9ZGXMUW7qt8PLxAMBCJ2TzvvU3kpdqMZrIyl+9w9IkY M83vaOM7J2LLJFACwobIheNKKkwPXvkgne/nX94vy2MX8dgMP8X3i6PeG4BV9L2gWTvx Fm6bCWqn2uRq2caOa7l/BCPWVUjNeYrgoqDFuKvwd2w7fEkWrTUl0iNFVnepNnzjDWkz w59LHP1fkA5L3qXMCAXWesSYZv/cSCpiiTOUTFypO68u0WCePS+OR8agRO6zYBcj2bNG YsfkUOYrAoHMbBDAl5z0tu4HM/hzEkq9mO5rGLPbBFyMz0I/DFNcWigqsQZooHYzA5cq dEqw== X-Gm-Message-State: AOJu0YzxBTu0zj9ByLsLPgbP2W8NWygb+p+1b9eTMYWqGojGDuZqXD95 opsWXMG/A+0KupxXCoSaMMiKuJEFhOEHUD8kQsEfT27FwTszuRgOwaSFEl6Gq/lv2KamHqrY19o p X-Google-Smtp-Source: AGHT+IGSKZgafv+fGOIVfhEKCxEBJfygrGK0a26LnqgQpV+Z4ScbNLrxIvN3d1ZSB+83d1PjbRhrmg== X-Received: by 2002:a17:907:6e88:b0:a72:7ae5:66df with SMTP id a640c23a62f3a-a780b89a23dmr284983866b.67.1720561226924; Tue, 09 Jul 2024 14:40:26 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-a780a6bc6cdsm108713466b.23.2024.07.09.14.40.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:26 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 42/44] llibmultipath: fix return code check for dm_is_suspended() Date: Tue, 9 Jul 2024 23:39:33 +0200 Message-ID: <20240709213935.177028-43-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 dm_is_suspended returns non-null if it failed to obtain the device information. It's wrong to assume in this case that the device is suspended. Signed-off-by: Martin Wilck --- libmultipath/devmapper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index e653ca6..e9a0103 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -604,7 +604,7 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush) /* If the resume failed, dm will leave the device suspended, and * drop the new table, so doing a second resume will try using * the original table */ - if (dm_is_suspended(mpp->alias)) + if (dm_is_suspended(mpp->alias) == 1) dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, DMFL_NEED_SYNC | (flush ? 0 : DMFL_NO_FLUSH), udev_flags); From patchwork Tue Jul 9 21:39:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728576 X-Patchwork-Delegate: christophe.varoqui@free.fr 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 6E38B189F4F for ; Tue, 9 Jul 2024 21:40:29 +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=1720561231; cv=none; b=dlKLEXz0pfVpGkGxyCuUsqDWjCRTcBOZTASLGfN28c+sHq403l0OGoOsePjBEvDtfGamzkDcWUT8fDxvmc1KHpDyeeob6HD0hnRh74mf1+9rwdBIpN4MA5yLbIiYXOCQFiQH9md0PYWgE4oO3In1aLUORyNIbLRjvyK6oq402oI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561231; c=relaxed/simple; bh=9yPeYTyaES73Y0zvzexik6rdxaoE8fejNLQVUYBBf6k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kUA6rQdiNgeHBLo4/33k2L6oaZf38uGol1X58CWa5lC1DCPWRs6CZ8v0N+FkgAHTgxaTfc8AzFC9izD/HqnGH7PUwJgWeqRqHJ//kaVq/Pkj8Xs9pwfNzjxyXG0Ntr1kIKPibXDHljfTwVrnSTYsY9iyMg56rGnQ90A+h4HmTDs= 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=X76wYZyh; 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="X76wYZyh" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-58b966b4166so6855853a12.1 for ; Tue, 09 Jul 2024 14:40:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561228; x=1721166028; 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=YjplwhGsUUcOcz3UU0OLimLGXczxmpE6ecTou/suFyU=; b=X76wYZyh5+FTms3aKWMBPnpf4VdgFXgAnEY5QPn/gKgbqRq9fsrZJako5w7eRgGec4 AeoXozNd530tQaTQPESj6bzwGSpU9wKPaDzjyZStx4WS+vfUNgt0LWQgy/Nh0PkvTR/f WZNhQz7HmCQ9ACUmzHf2OHtgoul2hR3T29EKHfkdF86KuuV4mp7fn9UWkCnfEGnZjGkK UTA/H+dd7eXneTVbZAAFrVmnpxskYkpRuJ6DtuXznbAWW/LIdeR3AtuFghC+HejGRsTF 3Hn8PQ9p5zNiGPx526nqxAzxJOmU05uDtymo/VUnqoVDybx7l1zL+gILXvjBQokRdas2 rIKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561228; x=1721166028; 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=YjplwhGsUUcOcz3UU0OLimLGXczxmpE6ecTou/suFyU=; b=o9trLxFoNt15bKRgoyMDtgjJyIBrziRCjXjCtgzMgUR/QK/26KIuski9UJkT+VHty0 U3/Ds6xDyIdEGpFxFeE49i+xGIe4r1Y1DS88a86UFKIKtM86BqSC2im4X6ia8a/Bm7Xp D6pXlBUa1hEUMgIahaAwLMwRTZdYUU/FfttZJv0Jbs2xIgfaIpJDWFQVG376RCfwc3U9 WH0TF0cnCbxuDTwHbAeXShyMAytcgsWUD8kl1f5Z79dNHLl1ccKoD73rGWyP7emaSWR0 njtgI677A4lknn3yI2I+U53l/kf69azr1dLZQV4BtbwVVkjlpo1n4C5D2KS+SRhdz0BL Johg== X-Gm-Message-State: AOJu0Yz5eEc9SktPr47rKsxxQNkekwlNGwfw4Z8dljUl+RfoR5gEY868 kEg+2P0RkZHeQiKsHmgng39mzbFaVWIxlnNkX4GMqAt9sWOlzRmuFSogg/Tu67s= X-Google-Smtp-Source: AGHT+IHgigBg6T7npMedWT2WqkmUKKeEvlYqwbPd+eoNf5ZugcJiy5Fn915rtiYrtwjy0OplJLkopA== X-Received: by 2002:aa7:da8b:0:b0:57c:5fcf:b570 with SMTP id 4fb4d7f45d1cf-594bc7ca0fbmr2312649a12.32.1720561227719; Tue, 09 Jul 2024 14:40:27 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bda310a4sm1469019a12.90.2024.07.09.14.40.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:27 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 43/44] libmpathpersist: use libmp_mapinfo() in get_mpvec() Date: Tue, 9 Jul 2024 23:39:34 +0200 Message-ID: <20240709213935.177028-44-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-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 obtaining the map name, make sure right away that the map is a multipath device. This saves an ioctl and slightly simplifies the function. Signed-off-by: Martin Wilck --- libmpathpersist/mpath_persist_int.c | 51 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c index 5a5ac3b..a3e7bd8 100644 --- a/libmpathpersist/mpath_persist_int.c +++ b/libmpathpersist/mpath_persist_int.c @@ -157,10 +157,9 @@ static int get_mpvec(vector curmp, vector pathvec, char *refwwid) static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, struct multipath **pmpp) { - int ret = MPATH_PR_DMMP_ERROR; + int rc; struct stat info; - int major, minor; - char *alias; + char alias[WWID_SIZE], uuid[DM_UUID_LEN]; struct multipath *mpp; if (fstat(fd, &info) != 0){ @@ -172,47 +171,45 @@ static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, return MPATH_PR_FILE_ERROR; } - major = major(info.st_rdev); - minor = minor(info.st_rdev); - condlog(4, "Device %d:%d", major, minor); - /* get alias from major:minor*/ - alias = dm_mapname(major, minor); - if (!alias){ - condlog(0, "%d:%d failed to get device alias.", major, minor); + rc = libmp_mapinfo(DM_MAP_BY_DEV, + (mapid_t) { ._u = { major(info.st_rdev), minor(info.st_rdev) } }, + (mapinfo_t) { + .name = alias, + .uuid = uuid, + .tgt_type = TGT_MPATH, + }); + + if (rc == DMP_NO_MATCH || !is_mpath_uuid(uuid)) { + condlog(3, "%s: not a multipath device.", alias); + return MPATH_PR_DMMP_ERROR; + } else if (rc != DMP_OK) { + condlog(1, "%d:%d failed to get device alias.", + major(info.st_rdev), minor(info.st_rdev)); return MPATH_PR_DMMP_ERROR; } - condlog(3, "alias = %s", alias); - - if (dm_is_mpath(alias) != DM_IS_MPATH_YES) { - condlog(3, "%s: not a multipath device.", alias); - goto out; - } + condlog(4, "alias = %s", alias); /* get info of all paths from the dm device */ - if (get_mpvec(curmp, pathvec, alias)){ + if (get_mpvec(curmp, pathvec, alias)) { condlog(0, "%s: failed to get device info.", alias); - goto out; + return MPATH_PR_DMMP_ERROR; } mpp = find_mp_by_alias(curmp, alias); if (!mpp) { condlog(0, "%s: devmap not registered.", alias); - goto out; + return MPATH_PR_DMMP_ERROR; } - ret = MPATH_PR_SUCCESS; if (pmpp) *pmpp = mpp; - if (palias) { - *palias = alias; - alias = NULL; - } -out: - free(alias); - return ret; + if (palias && (*palias = strdup(alias)) == NULL) + return MPATH_PR_DMMP_ERROR; + + return MPATH_PR_SUCCESS; } int do_mpath_persistent_reserve_in(vector curmp, vector pathvec, From patchwork Tue Jul 9 21:39:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Wilck X-Patchwork-Id: 13728577 X-Patchwork-Delegate: christophe.varoqui@free.fr Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 413BD189F55 for ; Tue, 9 Jul 2024 21:40:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561232; cv=none; b=XvO2w/xnTSDeI04nveGXftd/XNHOxJhyJKCBgsIsFU4CuPPBVd7dQiNndmqWA9c/wcN+MPcTeQ9j0vy8xxnhhszlm7dwb3BBatH1p/dkA2JBT9Vp9L5uzZSLL635o/Ov+hLpo6FXk6oCi+7s++MRZ3HrTZ3y7lU+UrZ4hUj3HjQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720561232; c=relaxed/simple; bh=gBScydWsal066e+s68/FVaFk0ZB/zk2tyS3dnyadIp0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BvMEI+B9ILykAZVHM2xIPalxMQJB2VLMppRvlk4KA6X31sdEpv6OY4xjFicStEu1MJsqoKR9BMUaDkOIk+hLK/smiwTpD0YmH42i3+hpjwixwZRwaja7zzMhmFFLQMI8Xf6p0Xaat3XoCAKGALME4Xjtdn+5ceGS5w+T+WGlhKE= 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=WDTlY6Du; arc=none smtp.client-ip=209.85.208.50 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="WDTlY6Du" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-595712c49ebso1355500a12.0 for ; Tue, 09 Jul 2024 14:40:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720561229; x=1721166029; 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=CQO26Q94ipdYm+1sxSUKwYiA6okhz+QNoEFfs3lnvH0=; b=WDTlY6DuUOV7v0ikvW04N2Z9A/ceiTG5U2hYyvCKKhr+bPj51kmuEIqQQpL3pax+Fp nmWezehh463I4rfXE6QjSxh5q6Zf3JbSdTe0nVHVizXXXu5EbXUzCZFgRsNTPljwBF9x lGmzZSzq0nQGoQ/cZyPIfY0kMdt8Z+Xg3suczaDUgf0jAv2v5r+9i0QetFTMcbRy3CNb fj2j2f1kV2wXuamQGww9OJJJ0O4B0jeCCtcQ4qCA7EJrX3FJ/m+p9+tgSDG+BY4g7t9i SEK8U4OZIP8mTfWIuusXaFMCJA6nqb/nGVbbqnEHx0d9HZlLdXnaeYezFlmqo6oJPpIl L7OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720561229; x=1721166029; 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=CQO26Q94ipdYm+1sxSUKwYiA6okhz+QNoEFfs3lnvH0=; b=UNzyisqEyNgH4QIeOSjN6ENtZA9R/1TJEanPpmRiPEYicvXDVWYtssIhtjgf3FBIrM 8wnwgdxX/s6lJwvhRrB5RTHMrSIjWmzkA/nogCHfQ+36iMdYkNAWcrx71JFByud8xXkJ pk2mpDHx4YJBtXc6rPHTO3O16s4l+ifQE6OZDmzkGx6AiQrDasyviUU1OVtyZ+5E/bFM SEml0SfHs3iyxILPv/U3/p0Qk3liaWJyVA35cmEghHzSeqVvVwWViiYBjzX8w5JHNhog twcwwJyhklkYsU/gZhyZ0TeqSRxw+iMBwXTX6tNAqge5OSpDpp3K6dhR8lZSA82+ICrm Wgww== X-Gm-Message-State: AOJu0YwPKoshJtVD9OuSKne7V24dJEpXb8ffhDsGW+em9D9wXFBwZ8BW UjqYaWPI6SzOzGdg2esR7/iRQeKj0MvA0AIJ0OmpeJl5d8KlZX5B+vNiqCPKVak= X-Google-Smtp-Source: AGHT+IGu3FRXnMBpP46mZlxbHYIvn3iLoOQ43wy4dQDrGUugFEYPERoG418wHweE8RTZ2fLX8F4Mjw== X-Received: by 2002:a05:6402:4309:b0:58d:249c:5de9 with SMTP id 4fb4d7f45d1cf-594ba98f432mr3024081a12.6.1720561228490; Tue, 09 Jul 2024 14:40:28 -0700 (PDT) Received: from localhost (p200300de37360a00d7e56139e90929dd.dip0.t-ipconnect.de. [2003:de:3736:a00:d7e5:6139:e909:29dd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-594bc4e80c6sm1501634a12.46.2024.07.09.14.40.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jul 2024 14:40:28 -0700 (PDT) From: Martin Wilck X-Google-Original-From: Martin Wilck To: Christophe Varoqui , Benjamin Marzinski Cc: dm-devel@lists.linux.dev Subject: [PATCH 44/44] libmpathpersist: use mpp->alias in do_mpath_persistent_reserve_out() Date: Tue, 9 Jul 2024 23:39:35 +0200 Message-ID: <20240709213935.177028-45-mwilck@suse.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20240709213935.177028-1-mwilck@suse.com> References: <20240709213935.177028-1-mwilck@suse.com> Precedence: bulk X-Mailing-List: dm-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The extra pointer "alias" isn't necessary. The mp vector is initialized by dm_get_maps(), which will allocate mpp->alias for every map, thus we can use it in do_mpath_persistent_reserve_out(). This allows us to simplify both this function itself and mpath_get_map(). Signed-off-by: Martin Wilck --- libmpathpersist/mpath_persist_int.c | 38 ++++++++++++----------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c index a3e7bd8..d215543 100644 --- a/libmpathpersist/mpath_persist_int.c +++ b/libmpathpersist/mpath_persist_int.c @@ -154,8 +154,7 @@ static int get_mpvec(vector curmp, vector pathvec, char *refwwid) return MPATH_PR_SUCCESS ; } -static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, - struct multipath **pmpp) +static int mpath_get_map(vector curmp, vector pathvec, int fd, struct multipath **pmpp) { int rc; struct stat info; @@ -206,8 +205,6 @@ static int mpath_get_map(vector curmp, vector pathvec, int fd, char **palias, if (pmpp) *pmpp = mpp; - if (palias && (*palias = strdup(alias)) == NULL) - return MPATH_PR_DMMP_ERROR; return MPATH_PR_SUCCESS; } @@ -219,7 +216,7 @@ int do_mpath_persistent_reserve_in(vector curmp, vector pathvec, struct multipath *mpp; int ret; - ret = mpath_get_map(curmp, pathvec, fd, NULL, &mpp); + ret = mpath_get_map(curmp, pathvec, fd, &mpp); if (ret != MPATH_PR_SUCCESS) return ret; @@ -650,12 +647,11 @@ int do_mpath_persistent_reserve_out(vector curmp, vector pathvec, int fd, struct prout_param_descriptor *paramp, int noisy) { struct multipath *mpp; - char *alias; int ret; uint64_t prkey; struct config *conf; - ret = mpath_get_map(curmp, pathvec, fd, &alias, &mpp); + ret = mpath_get_map(curmp, pathvec, fd, &mpp); if (ret != MPATH_PR_SUCCESS) return ret; @@ -671,21 +667,20 @@ int do_mpath_persistent_reserve_out(vector curmp, vector pathvec, int fd, (!get_be64(mpp->reservation_key) || memcmp(paramp->key, &mpp->reservation_key, 8) == 0)))) { memcpy(&mpp->reservation_key, paramp->sa_key, 8); - if (update_prkey_flags(alias, get_be64(mpp->reservation_key), + if (update_prkey_flags(mpp->alias, get_be64(mpp->reservation_key), paramp->sa_flags)) { condlog(0, "%s: failed to set prkey for multipathd.", - alias); - ret = MPATH_PR_DMMP_ERROR; - goto out1; + mpp->alias); + return MPATH_PR_DMMP_ERROR; } } if (memcmp(paramp->key, &mpp->reservation_key, 8) && memcmp(paramp->sa_key, &mpp->reservation_key, 8) && (prkey || rq_servact != MPATH_PROUT_REG_IGN_SA)) { - condlog(0, "%s: configured reservation key doesn't match: 0x%" PRIx64, alias, get_be64(mpp->reservation_key)); - ret = MPATH_PR_SYNTAX_ERROR; - goto out1; + condlog(0, "%s: configured reservation key doesn't match: 0x%" PRIx64, + mpp->alias, get_be64(mpp->reservation_key)); + return MPATH_PR_SYNTAX_ERROR; } switch(rq_servact) @@ -704,24 +699,21 @@ int do_mpath_persistent_reserve_out(vector curmp, vector pathvec, int fd, ret = mpath_prout_rel(mpp, rq_servact, rq_scope, rq_type, paramp, noisy); break; default: - ret = MPATH_PR_OTHER; - goto out1; + return MPATH_PR_OTHER; } if ((ret == MPATH_PR_SUCCESS) && ((rq_servact == MPATH_PROUT_REG_SA) || (rq_servact == MPATH_PROUT_REG_IGN_SA))) { if (prkey == 0) { - update_prflag(alias, 0); - update_prkey(alias, 0); + update_prflag(mpp->alias, 0); + update_prkey(mpp->alias, 0); } else - update_prflag(alias, 1); + update_prflag(mpp->alias, 1); } else if ((ret == MPATH_PR_SUCCESS) && (rq_servact == MPATH_PROUT_CLEAR_SA)) { - update_prflag(alias, 0); - update_prkey(alias, 0); + update_prflag(mpp->alias, 0); + update_prkey(mpp->alias, 0); } -out1: - free(alias); return ret; }