From patchwork Wed Feb 20 08:12:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shinichiro Kawasaki X-Patchwork-Id: 10821687 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4AFF1922 for ; Wed, 20 Feb 2019 08:12:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 32CCC2DC48 for ; Wed, 20 Feb 2019 08:12:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 247DA2DC65; Wed, 20 Feb 2019 08:12:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BD1A22DC48 for ; Wed, 20 Feb 2019 08:12:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726106AbfBTIMr (ORCPT ); Wed, 20 Feb 2019 03:12:47 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:33059 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726030AbfBTIMr (ORCPT ); Wed, 20 Feb 2019 03:12:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1550650366; x=1582186366; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LvJrlHnRZmqL4mGzQKasZJBL92POFQ4m97sZWudPadU=; b=EZCzLhWIf7MN+SRTUYhK2YaSzQlv0razHgs2437W84OvBuo0ArsJPYnN GVD+EwvS1De+XZdX7yYvBvEwkypsGGS1MAO8tijXCiGfW31Mr6XzukWIK DOka142/ugRhnBUy2AQoQCI22foGacOxDeqGVK+JCYsYeGPSx4rrk4vwF R3baMuJbA4OVZ0WDZNCbgy0lv1XVHOAcyGEgeBdmfRXDNAgDIHpPNOK0M CSspr+gW4j2z97h5ASSVhNk6ueVPeZ+qfVsHjjOjTJHP/qy3j+x0TAOv2 88K9Es5ztGlvm3KIxXW0upIgz11oj4b0kyuSp1zaKIgU3FxxjR7AmDBDQ w==; X-IronPort-AV: E=Sophos;i="5.58,390,1544457600"; d="scan'208";a="106682981" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Feb 2019 16:12:46 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 19 Feb 2019 23:51:09 -0800 Received: from shin_dev.dhcp.fujisawa.hgst.com (HELO shin_dev.fujisawa.hgst.com) ([10.149.52.166]) by uls-op-cesaip01.wdc.com with ESMTP; 20 Feb 2019 00:12:44 -0800 From: Shin'ichiro Kawasaki To: linux-block@vger.kernel.org, Omar Sandoval , Masato Suzuki , Shinichiro Kawasaki Cc: Omar Sandoval , Chaitanya Kulkarni Subject: [PATCH blktests 1/5] block/024: Increase I/O time Date: Wed, 20 Feb 2019 17:12:27 +0900 Message-Id: <20190220081231.15366-2-shinichiro.kawasaki@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> References: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Masato Suzuki The total time spent on write I/Os for the 3 dd executions will be at most 1500 * 3 * 0.5ms = 2250ms, that is, 2.25s. Due to system overhead and timer triggers, a total write I/O time larger than this value is generally reported through I/O stat. However, for a system with very low overhead and/or very precise timers, the reported value can be under 2.5s, leading to a rounded value equal to 2s, and not the 3s expected. To avoid the test to fail due to this problem, increase the number of write I/Os executed so that the total exact I/O time exceeds 2.5s, leading to a rounded value equal to 3s. The change increases the number of I/Os of the second and third dd calls to 1800, leading to an exact write I/O time of (1500 + 1800 * 2) * 0.5 ms = 2.55s. Signed-off-by: Masato Suzuki --- tests/block/024 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/block/024 b/tests/block/024 index cf14707..b40a869 100755 --- a/tests/block/024 +++ b/tests/block/024 @@ -53,9 +53,10 @@ test() { dd if=/dev/zero of=/dev/nullb0 bs=4096 oflag=direct count=1500 status=none show_times + # 1800 * 0.5 ms is 0.9 seconds. dd if=/dev/nullb0 of=/dev/null bs=4096 iflag=direct count=1500 status=none & - dd if=/dev/zero of=/dev/nullb0 bs=4096 oflag=direct count=1500 status=none & - dd if=/dev/zero of=/dev/nullb0 bs=4096 oflag=direct count=1500 status=none & + dd if=/dev/zero of=/dev/nullb0 bs=4096 oflag=direct count=1800 status=none & + dd if=/dev/zero of=/dev/nullb0 bs=4096 oflag=direct count=1800 status=none & wait show_times From patchwork Wed Feb 20 08:12:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shinichiro Kawasaki X-Patchwork-Id: 10821689 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 83FAA922 for ; Wed, 20 Feb 2019 08:12:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7013F2DC48 for ; Wed, 20 Feb 2019 08:12:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6439B2DC65; Wed, 20 Feb 2019 08:12:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0D1222DC48 for ; Wed, 20 Feb 2019 08:12:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726117AbfBTIMt (ORCPT ); Wed, 20 Feb 2019 03:12:49 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:33059 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726030AbfBTIMt (ORCPT ); Wed, 20 Feb 2019 03:12:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1550650369; x=1582186369; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=36HgFHv8uO7kYgOmbWwJe/pa53EhS+fSa4xy9BBm11s=; b=DODzmeBak5qfyinnnpYaolZtsj7dBsa5b71aMnZ+7xtZyLmL9bFekSsg nECX2TWxmCpjGLZg2gy2Ob9fIwc/tk8wVC1YsOir2kmyKYhICrLc/Naqp NQvufA2vzu9Xs7aBOgTUp90N6z4oGTxuWzGUKV9VzBRIptx+KCTniGwI2 /xFxZ2SIJMUTM/gojiVBww4yvmV6PmjriPZz22Y+PQGrdpYwnEtiAKfV/ wtUMWfPD3lFQ3zHE2tlVRwPMnTb4s9Nh1q021bOu+Exk8jdkZJdBRRqcT +BHvEyIxn0yFezeyRGBt40TjRzNv729lkTB/rFNNYv0LjhOJbFl+8WhXZ w==; X-IronPort-AV: E=Sophos;i="5.58,390,1544457600"; d="scan'208";a="106682987" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Feb 2019 16:12:48 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 19 Feb 2019 23:51:11 -0800 Received: from shin_dev.dhcp.fujisawa.hgst.com (HELO shin_dev.fujisawa.hgst.com) ([10.149.52.166]) by uls-op-cesaip01.wdc.com with ESMTP; 20 Feb 2019 00:12:46 -0800 From: Shin'ichiro Kawasaki To: linux-block@vger.kernel.org, Omar Sandoval , Masato Suzuki , Shinichiro Kawasaki Cc: Omar Sandoval , Chaitanya Kulkarni Subject: [PATCH blktests 2/5] zbd/004: Add zone condition "Closed" for sequential write required zones Date: Wed, 20 Feb 2019 17:12:28 +0900 Message-Id: <20190220081231.15366-3-shinichiro.kawasaki@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> References: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The test case zbd/004 executes write operations for two sequential write required zones across the zone boundary between them. After the write operation, the second zone has non-zero write pointer. At that status, the zone can have not only "Implicit Open" condition but also "Closed" condition based on zone status management logic of the block zoned device. Add "Closed" condition to the zone condition check logic in zbd/004. Add ZONE_COND_CLOSED constant definition in zbd/rc. Signed-off-by: Shin'ichiro Kawasaki --- tests/zbd/004 | 9 ++++++++- tests/zbd/rc | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/zbd/004 b/tests/zbd/004 index 291626d..ac0cf50 100755 --- a/tests/zbd/004 +++ b/tests/zbd/004 @@ -83,7 +83,14 @@ test_device() { _put_blkzone_report _get_blkzone_report "${TEST_DEV}" || return $? _check_zone_cond "${idx}" "${ZONE_COND_FULL}" || return $? - _check_zone_cond "$((idx+1))" "${ZONE_COND_IMPLICIT_OPEN}" || return $? + if ((ZONE_CONDS[idx+1] != ZONE_COND_IMPLICIT_OPEN)) && \ + ((ZONE_CONDS[idx+1] != ZONE_COND_CLOSED)); then + echo -n "Zone ${idx+1} condition is neither " + echo -n "${ZONE_COND_ARRAY[ZONE_COND_IMPLICIT_OPEN]} nor " + echo -n "${ZONE_COND_ARRAY[ZONE_COND_CLOSED]} " + echo "cond: ${ZONE_COND_ARRAY[ZONE_CONDS[idx+1]]}" + return 1 + fi if [[ ${ZONE_WPTRS[idx+1]} -ne ${phys_blk_sectors} ]]; then echo -n "Unexpected write pointer for zone $((idx+1)) " echo "wp: ${ZONE_WPTRS[idx+1]}" diff --git a/tests/zbd/rc b/tests/zbd/rc index 1d6f80a..c32bf31 100644 --- a/tests/zbd/rc +++ b/tests/zbd/rc @@ -39,6 +39,7 @@ export ZONE_TYPE_SEQ_WRITE_PREFERRED=3 export ZONE_COND_EMPTY=1 export ZONE_COND_IMPLICIT_OPEN=2 +export ZONE_COND_CLOSED=4 export ZONE_COND_FULL=14 export ZONE_TYPE_ARRAY=( From patchwork Wed Feb 20 08:12:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shinichiro Kawasaki X-Patchwork-Id: 10821691 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52003922 for ; Wed, 20 Feb 2019 08:12:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3C17A2DC48 for ; Wed, 20 Feb 2019 08:12:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2F7A32DC65; Wed, 20 Feb 2019 08:12:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C6DD2DC48 for ; Wed, 20 Feb 2019 08:12:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726251AbfBTIMx (ORCPT ); Wed, 20 Feb 2019 03:12:53 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:33059 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726060AbfBTIMv (ORCPT ); Wed, 20 Feb 2019 03:12:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1550650371; x=1582186371; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kWNFwoC38kKh8fBjzt4rovi3POCToF+7xyOOkVr+9ro=; b=Sv9CEZfDx71qAcpKdLC1bVOErmcyOWJ2rg/KJk8ipQ2iW6UpNExw9ED6 y+gwmzied//hdp8fZ9OvKPt6QVx34gDmPXxEoufnmPp++d/NtSCM2xUf1 tMk0V4y5dHtJJJpyRYyxEyqKxvf9v0Kf/n+B6wIs7UYudTIMOYxjdzpDX Hn1Tj58hvv8zfr1AK7Xd2OhN3oI0QDGoJUV7/RaEo1en+WrUXMLtLzkv+ rE3BdHbhZZoofemOGVhZh9gTJHgQttuWCotFVe4RkFF9d2FOeCE3OR8SN Xk3yVui6MkeAjWxCafl6yPdUiKdJO5xxzf9u03fY7TKDF+xtL+MVJfNi1 g==; X-IronPort-AV: E=Sophos;i="5.58,390,1544457600"; d="scan'208";a="106682998" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Feb 2019 16:12:51 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 19 Feb 2019 23:51:14 -0800 Received: from shin_dev.dhcp.fujisawa.hgst.com (HELO shin_dev.fujisawa.hgst.com) ([10.149.52.166]) by uls-op-cesaip01.wdc.com with ESMTP; 20 Feb 2019 00:12:49 -0800 From: Shin'ichiro Kawasaki To: linux-block@vger.kernel.org, Omar Sandoval , Masato Suzuki , Shinichiro Kawasaki Cc: Omar Sandoval , Chaitanya Kulkarni Subject: [PATCH blktests 3/5] check: Add TEST_DEV_PART_SYSFS variable Date: Wed, 20 Feb 2019 17:12:29 +0900 Message-Id: <20190220081231.15366-4-shinichiro.kawasaki@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> References: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When partition devices are specified in TEST_DEV, TEST_DEV_SYSFS variable points to the sysfs paths of holder devices of the partition devices (e.g., /sys/block/sda). This sysfs path is different from the sysfs path of the partition devices (e.g., /sys/block/sda/sda1). For example, size parameters exist in both the holder device sysfs and the partition device sysfs with different values. To allow test cases to access sysfs path of the partition devices, add TEST_DEV_PART_SYSFS variable. TEST_DEV_SYSFS is set as is to refer the sysfs path of the holder devices. If the TEST_DEV is not a partition device, an empty string is set to the TEST_DEV_PART_SYSFS variable. Change _find_sysfs_dir() function to return the holder device sysfs as well as the partition device sysfs. The function obtains the canonical sysfs path, and if the device is a partition device, the function cut the last device name in the canonical sysfs path to obtain the holder device sysfs path. Signed-off-by: Shin'ichiro Kawasaki --- check | 51 ++++++++++++++++++++++++++++++++++----------------- new | 16 ++++++++++++++-- 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/check b/check index f41ecba..e45b34f 100755 --- a/check +++ b/check @@ -442,13 +442,19 @@ _run_test() { _warning "$TEST_NAME: fallback_device call failure" return 0 fi - if ! sysfs_dir="$(_find_sysfs_dir "$test_dev")"; then + + local dirs + local sysfs_dir + local part_sysfs_dir + if ! dirs=$(_find_sysfs_dir "$test_dev") ; then _warning "$TEST_NAME: could not find sysfs directory for ${test_dev}" cleanup_fallback_device return 0 fi + read -r sysfs_dir part_sysfs_dir < <(echo "${dirs}") TEST_DEVS=( "${test_dev}" ) TEST_DEV_SYSFS_DIRS["$test_dev"]="$sysfs_dir" + TEST_DEV_PART_SYSFS_DIRS["$test_dev"]="$part_sysfs_dir" FALLBACK_DEVICE=1 fi @@ -464,6 +470,7 @@ _run_test() { local ret=0 for TEST_DEV in "${TEST_DEVS[@]}"; do TEST_DEV_SYSFS="${TEST_DEV_SYSFS_DIRS["$TEST_DEV"]}" + TEST_DEV_PART_SYSFS="${TEST_DEV_PART_SYSFS_DIRS["$TEST_DEV"]}" if (( !CAN_BE_ZONED )) && _test_dev_is_zoned; then SKIP_REASON="${TEST_DEV} is a zoned block device" _output_notrun "$TEST_NAME => $(basename "$TEST_DEV")" @@ -483,6 +490,7 @@ _run_test() { if (( FALLBACK_DEVICE )); then cleanup_fallback_device unset TEST_DEV_SYSFS_DIRS["${TEST_DEVS[0]}"] + unset TEST_DEV_PART_SYSFS_DIRS["${TEST_DEVS[0]}"] TEST_DEVS=() fi @@ -507,6 +515,8 @@ _run_group() { for i in "${!TEST_DEVS[@]}"; do TEST_DEV="${TEST_DEVS[$i]}" TEST_DEV_SYSFS="${TEST_DEV_SYSFS_DIRS["$TEST_DEV"]}" + # shellcheck disable=SC2034 + TEST_DEV_PART_SYSFS="${TEST_DEV_PART_SYSFS_DIRS["$TEST_DEV"]}" if ! group_device_requires; then _output_notrun "${group}/*** => $(basename "$TEST_DEV")" unset TEST_DEVS["$i"] @@ -529,28 +539,31 @@ _run_group() { _find_sysfs_dir() { local test_dev="$1" + local sysfs_path local major=$((0x$(stat -L -c '%t' "$test_dev"))) local minor=$((0x$(stat -L -c '%T' "$test_dev"))) - local dev="$major:$minor" + local sysdev_path="/sys/dev/block/${major}:${minor}" - local block_dir part_dir - for block_dir in /sys/block/*; do - if [[ $(cat "${block_dir}/dev") = "$dev" ]]; then - echo "$block_dir" - return - fi - for part_dir in "$block_dir"/*; do - if [[ -r ${part_dir}/dev && $(cat "${part_dir}/dev") = "$dev" ]]; then - echo "$block_dir" - return - fi - done - done + # Get the canonical sysfs path + if ! sysfs_path=/sys/dev/block/$(readlink "${sysdev_path}"); then + return 1 + fi - return 1 + if [[ -r "${sysfs_path}"/partition ]]; then + # If the device is a partition device, cut the last device name + # of the canonical sysfs path to access to the sysfs of its + # holder device. + # e.g. .../block/sda/sda1 -> ...block/sda + # Return both the holder device sysfs path and the partition + # device sysfs path. + echo "${sysfs_path%/*}" "${sysfs_path}" + else + echo "${sysfs_path}" "" + fi } declare -A TEST_DEV_SYSFS_DIRS +declare -A TEST_DEV_PART_SYSFS_DIRS _check() { # shellcheck disable=SC2034 SRCDIR="$(realpath src)" @@ -563,11 +576,15 @@ _check() { _error "${test_dev} is not a block device" fi + local dirs local sysfs_dir - if ! sysfs_dir="$(_find_sysfs_dir "$test_dev")"; then + local part_sysfs_dir + if ! dirs=$(_find_sysfs_dir "$test_dev") ; then _error "could not find sysfs directory for ${test_dev}" fi + read -r sysfs_dir part_sysfs_dir < <(echo "${dirs}") TEST_DEV_SYSFS_DIRS["$test_dev"]="$sysfs_dir" + TEST_DEV_PART_SYSFS_DIRS["$test_dev"]="$part_sysfs_dir" done local test_name group prev_group diff --git a/new b/new index d7d5f7c..24c066d 100755 --- a/new +++ b/new @@ -80,7 +80,10 @@ group_requires() { # should return non-zero and set the \$SKIP_REASON variable. \$TEST_DEV is the # full path of the block device (e.g., /dev/nvme0n1 or /dev/sda1), and # \$TEST_DEV_SYSFS is the sysfs path of the disk (not the partition, e.g., -# /sys/block/nvme0n1 or /sys/block/sda). +# /sys/block/nvme0n1 or /sys/block/sda). If the target device is a partition +# device, \$TEST_DEV_PART_SYSFS is the sysfs path of the partition device +# (e.g., /sys/block/nvme0n1/nvme0n1p1 or /sys/block/sda/sda1). Otherwise, +# \$TEST_DEV_PART_SYSFS is an empty string. # # Usually, group_device_requires() just needs to check that the test device is # the right type of hardware or supports any necessary features using the @@ -165,7 +168,10 @@ DESCRIPTION="" # set the \$SKIP_REASON variable. \$TEST_DEV is the full path of the block # device (e.g., /dev/nvme0n1 or /dev/sda1), and \$TEST_DEV_SYSFS is the sysfs # path of the disk (not the partition, e.g., /sys/block/nvme0n1 or -# /sys/block/sda). +# /sys/block/sda). If the target device is a partition device, +# \$TEST_DEV_PART_SYSFS is the sysfs path of the partition device (e.g., +# /sys/block/nvme0n1/nvme0n1p1 or /sys/block/sda/sda1). Otherwise, +# \$TEST_DEV_PART_SYSFS is an empty string. # # Usually, device_requires() just needs to check that the test device is the # right type of hardware or supports any necessary features using the @@ -207,6 +213,12 @@ DESCRIPTION="" # - \$TEST_DEV_SYSFS -- the sysfs directory of the device (e.g., # /sys/block/sda). In general, you should use the # _test_dev_queue_{get,set} helpers. +# If the device is a partition device, the sysfs +# directory of its holder device is set. +# - \$TEST_DEV_PART_SYSFS -- the sysfs directory of the device if the device +# is a partition device (e.g., +# /sys/block/sda/sda1). Empty string is set if +# the device is not a partition device. test() { echo "Running \${TEST_NAME}" From patchwork Wed Feb 20 08:12:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shinichiro Kawasaki X-Patchwork-Id: 10821693 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AC98913B5 for ; Wed, 20 Feb 2019 08:12:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8CE442DC4D for ; Wed, 20 Feb 2019 08:12:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 810592DC73; Wed, 20 Feb 2019 08:12:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2FAFC2DC4D for ; Wed, 20 Feb 2019 08:12:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726263AbfBTIMz (ORCPT ); Wed, 20 Feb 2019 03:12:55 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:33059 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726060AbfBTIMy (ORCPT ); Wed, 20 Feb 2019 03:12:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1550650374; x=1582186374; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5CW7u7EwiyR07Aq0jB0ICAd3wo3S0fLFxGkXBcNz26k=; b=Osc6LUsdbkd5ZiIaNcNiXLC9ovcnTGEhxesZKLp0wo1LcOLSQ2EqMQMC D1gmqcas0Gb0z3g/VZFqhC1L/w1WTYYgMjqMFaZxYfo42mQF8syObtbXE uV5XWqtIoEkVFLvqSL3+RQ1XWzQgWQi52pbh6Ba7ELoEDv3bwX7v2NeCb 1xPKLkGe0TiDu4Iz94Ql94UGBS4n8JUSz3BffrHY4ugv7QSpG4XRVg+Jq CUXET9djiANxqhu7M34uWxCZ8DVuj5DNESQqiDFw+tqEEbbjaZFUkqIS7 TR+SIxYriXdmWTFMw6V2rEjtzpEU79yWgAdmCvhDMV3/F6tJ+zhPmjCfS w==; X-IronPort-AV: E=Sophos;i="5.58,390,1544457600"; d="scan'208";a="106683025" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Feb 2019 16:12:53 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 19 Feb 2019 23:51:16 -0800 Received: from shin_dev.dhcp.fujisawa.hgst.com (HELO shin_dev.fujisawa.hgst.com) ([10.149.52.166]) by uls-op-cesaip01.wdc.com with ESMTP; 20 Feb 2019 00:12:51 -0800 From: Shin'ichiro Kawasaki To: linux-block@vger.kernel.org, Omar Sandoval , Masato Suzuki , Shinichiro Kawasaki Cc: Omar Sandoval , Chaitanya Kulkarni Subject: [PATCH blktests 4/5] common: Add _test_dev_is_partition() helper function Date: Wed, 20 Feb 2019 17:12:30 +0900 Message-Id: <20190220081231.15366-5-shinichiro.kawasaki@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> References: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP To control test conditions unique for partition devices, introduce the _test_dev_is_partition() helper function. Refer TEST_DEV_PART_SYSFS variable to tell if the TEST_DEV is a partition device or not. Signed-off-by: Shin'ichiro Kawasaki Reviewed-by: Omar Sandoval --- common/rc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/rc b/common/rc index 153a323..0c354a2 100644 --- a/common/rc +++ b/common/rc @@ -208,6 +208,14 @@ _test_dev_in_hotplug_slot() { return 0 } +_test_dev_is_partition() { + if [[ -z ${TEST_DEV_PART_SYSFS} ]]; then + SKIP_REASON="${TEST_DEV} is not a partition device" + return 1 + fi + return 0 +} + # Older versions of xfs_io use pwrite64 and such, so the error messages won't # match current versions of xfs_io. See c52086226bc6 ("filter: xfs_io output # has dropped "64" from error messages") in xfstests. From patchwork Wed Feb 20 08:12:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shinichiro Kawasaki X-Patchwork-Id: 10821695 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DBAF313B5 for ; Wed, 20 Feb 2019 08:12:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C8AC92DC87 for ; Wed, 20 Feb 2019 08:12:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BAE662DC73; Wed, 20 Feb 2019 08:12:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 631452DC4D for ; Wed, 20 Feb 2019 08:12:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726267AbfBTIM4 (ORCPT ); Wed, 20 Feb 2019 03:12:56 -0500 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:33059 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726060AbfBTIM4 (ORCPT ); Wed, 20 Feb 2019 03:12:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1550650376; x=1582186376; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=oI/CYB9DFPJxVFP56PJxwlRlPbv/Y7JCPnfHQRDzaHQ=; b=MFvkc+pJf0Zyuh3iaO/Mv6it9mv52D5Jr6Ef4rb1q4qQczpQbWOKZJ1k MQSHaPKhhcWmwxpChS0VJPm3F9BwLXqz0jq1OIVzcIHXR5x5wcGFW9IRV XXrMUfXlxEdfBGfRjHxvS+Z1TCu+5eyOjLp1p20Hs/M/O+dOga/oX/4jJ Q55vyMeA59HoSW7yOSFMOZWyl35ZbDM59JD4TvaE/JXloYMIGFuitAApi fIO7WcLuEOBM0FtOWBASV1gkITdOb8cbtHMR37h6nsasjIw9LBErMbwRC xH4Hx6I0MT/1rmaSVSxYalMFw7guHyDXmxoFiNVNmtirPO5mraAQo22TX g==; X-IronPort-AV: E=Sophos;i="5.58,390,1544457600"; d="scan'208";a="106683028" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 20 Feb 2019 16:12:56 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 19 Feb 2019 23:51:19 -0800 Received: from shin_dev.dhcp.fujisawa.hgst.com (HELO shin_dev.fujisawa.hgst.com) ([10.149.52.166]) by uls-op-cesaip01.wdc.com with ESMTP; 20 Feb 2019 00:12:54 -0800 From: Shin'ichiro Kawasaki To: linux-block@vger.kernel.org, Omar Sandoval , Masato Suzuki , Shinichiro Kawasaki Cc: Omar Sandoval , Chaitanya Kulkarni Subject: [PATCH blktests 5/5] zbd: Change sysfs path for partition devices Date: Wed, 20 Feb 2019 17:12:31 +0900 Message-Id: <20190220081231.15366-6-shinichiro.kawasaki@wdc.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> References: <20190220081231.15366-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP zbd/001 and zbd/002 test cases fail for partition devices because of sysfs path difference between partition devices and their holder devices. The size parameter in sysfs path is different between the partition devices and their holder devices. The holder devices have nr_zones parameter in sysfs but the partition devices do not. Utilize _test_dev_is_partition() helper function and TEST_DEV_PART_SYSFS variable to refer correct sysfs size parameter for the partition devices. Do not refer sysfs nr_zones parameter for the partition devices. Instead, calculate the expected nr_zones from device capacity and zone size. Signed-off-by: Shin'ichiro Kawasaki Reviewed-by: Omar Sandoval --- tests/zbd/rc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/zbd/rc b/tests/zbd/rc index c32bf31..88538d0 100644 --- a/tests/zbd/rc +++ b/tests/zbd/rc @@ -75,7 +75,11 @@ export SV_NR_ZONES=4 _get_sysfs_variable() { unset SYSFS_VARS local _dir=${TEST_DEV_SYSFS} - SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size) + if _test_dev_is_partition; then + SYSFS_VARS[$SV_CAPACITY]=$(<"${TEST_DEV_PART_SYSFS}"/size) + else + SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size) + fi SYSFS_VARS[$SV_CHUNK_SECTORS]=$(<"${_dir}"/queue/chunk_sectors) SYSFS_VARS[$SV_PHYS_BLK_SIZE]=$(<"${_dir}"/queue/physical_block_size) SYSFS_VARS[$SV_PHYS_BLK_SECTORS]=$((SYSFS_VARS[SV_PHYS_BLK_SIZE] / 512)) @@ -83,7 +87,7 @@ _get_sysfs_variable() { # If the nr_zones sysfs attribute exists, get its value. Otherwise, # calculate its value based on the total capacity and zone size, taking # into account that the last zone can be smaller than other zones. - if [[ -e ${TEST_DEV_SYSFS}/queue/nr_zones ]]; then + if [[ -e "${_dir}"/queue/nr_zones ]] && ! _test_dev_is_partition; then SYSFS_VARS[$SV_NR_ZONES]=$(<"${_dir}"/queue/nr_zones) else SYSFS_VARS[$SV_NR_ZONES]=$(( (SYSFS_VARS[SV_CAPACITY] - 1) \