From patchwork Wed Jan 12 05:05:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 12710929 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 583E0C433EF for ; Wed, 12 Jan 2022 05:06:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231993AbiALFGc (ORCPT ); Wed, 12 Jan 2022 00:06:32 -0500 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:46566 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231239AbiALFGb (ORCPT ); Wed, 12 Jan 2022 00:06:31 -0500 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20C3QJT6025152; Wed, 12 Jan 2022 05:06:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=Lyz4cEdv3fDDizsTz9PQNvW/gz4MRnGX7wQxH64OtIc=; b=xU+76E3oqcINrEqUgpie+brR1uXHUbS+NoUe/GZXKSn3oROsgvrkIm1i4Rn5Rnna5jlR xosnquwQ0jxEnt6vDZ0eMvCzLr87UOjP+pDQK80ay4tZwUOsEdgKg4u7HQaECeKdocDN /wVEU/RG7BEaY5Mx4wNLR/fJE7uGFaOSvI09Ow3aDNqIpjet+01KNoi4WVXCMEZrnwj/ zlO0RAU+n2CARMMC/jm/Wl48JFtAJjMUk5jypgnylwggzqKBzSa8RL2j5Hmra7CG8Eju cUYhLGYFjFHXeaFBOkJGa0SNGZ2EQNCKfxg8IxchbR98Mqp6uSFViDR65n1DxG21ZIk1 ag== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3dgmk9d4gk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:23 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 20C50UXe155907; Wed, 12 Jan 2022 05:06:23 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam07lp2040.outbound.protection.outlook.com [104.47.56.40]) by aserp3030.oracle.com with ESMTP id 3df0neyngc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=buiFPn5dcLyKoGHr7kxd7JYrNAw6IA8/d4pkuYMN9ZnnogF0ZaTkwVcElEgSCoy3zhoR83qJS0EsgBDXEzMPGiceoaRz+H00dI+nZZRWubqD1+kCWcaK+rCOedZr1iLsqoIEr3Y/E7OwBMuZDO7UtvC5c/kCwW5XEfg8RlSSeIGf9EbBIR29mV5naRNmvclUG+5/elgDTbNR8Qu1S+64V801M6tCzavudrxfl5W1FGAh3L66YLF2By2TU8NchwIaTQ5z7+eirV3Bh/Xaf09uP8BGQi5bVPp5EADXXNPGpvxMHpY+vdmZeEwiuVDxv4NH5qIjvQ23DKDA7PSpyqi7HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Lyz4cEdv3fDDizsTz9PQNvW/gz4MRnGX7wQxH64OtIc=; b=DWKZ0NKfZUhWAIOWFMGp5neF0sOv4r5cT7bOZopt8baInNJ2+yDUQ/VmHb6T76s1EZ9N6w+bM8rArgGkPlYInzlLpjKwzG1YVssBlAnCDHblD8GLhKExzQ5ADRAU/kSmCcYyuVAZYjoIKL4coBeltVVNwwKu6S780l00JZDX/RpM43EltHi0nCP0ubyT64sHpszwu1x8XVW2krclSaN5IDrdRaxfWiDl4JW1P2PDHw+Pn0qGkvM0pJn2Og/5HN8zwcigWnk5dLMA5Elr7MW/SypJbAcMnOPClmRNORTwEwJzTTVMuCMCL+jVJ3T3gTpYZeVJsWkrmw21cjJAqTWCuQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Lyz4cEdv3fDDizsTz9PQNvW/gz4MRnGX7wQxH64OtIc=; b=GSv2QuqLWu/G3gQTszg/s8CNCK5fLLE3egWUKj1HA9PurBYsd+kyKZpHfpZq6itEi7ezuw1E6zYMYL7Tsm3kin1fhu46TbXxeuRuAdenv7vfiGoByeJ1TIWiW2hGQvTWDwQnH/7SChJC0Mzu9ZjpGly2W0z2zutMvZxM8XYQZl4= Received: from MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) by MN2PR10MB3904.namprd10.prod.outlook.com (2603:10b6:208:1bb::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Wed, 12 Jan 2022 05:06:21 +0000 Received: from MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00]) by MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00%8]) with mapi id 15.20.4867.012; Wed, 12 Jan 2022 05:06:21 +0000 From: Anand Jain To: linux-btrfs@vger.kernel.org Cc: josef@toxicpanda.com, dsterba@suse.com, nborisov@suse.com, l@damenly.su, kreijack@libero.it Subject: [PATCH v5 1/4] btrfs: harden identification of the stale device Date: Wed, 12 Jan 2022 13:05:59 +0800 Message-Id: X-Mailer: git-send-email 2.33.1 In-Reply-To: References: X-ClientProxiedBy: SG2P153CA0011.APCP153.PROD.OUTLOOK.COM (2603:1096::21) To MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 498c77e8-d7d3-4220-ff4f-08d9d5894611 X-MS-TrafficTypeDiagnostic: MN2PR10MB3904:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QjI3Qlh3CmNfWZbI9E1vX6kf4cNFjcxrCr6OdSDWs9Cccivc/oLxhGqDd1ZIycMlvTvrVvMagabaPozPsAAdGs2P+jIvmhTmq1R3QDwYhWqLDKUgK0EQoTQjQ3VW8fI4aqYgEOiF5Uqn8AaE/DNHrclYRdWCxp75CnWx71m5ntXkSbE/AT+yHgMrypciDw4+J97cEb6iHkB3WqPb5eQcqRgu0TMFyqkwxGkDpteoFfL0wfPzrGQmd/3jSpEGuB8BkTfuhNpTziBvfQWIl7mwFiD+v/6SoZBkC3f1301VfJaMf2X9wQQ75RYTsXji2kYh6eL4rdywsmfA/rmoBSYA5489MiU0n7WI8yqVqDyuu8MevCFxJvPCsWgT4zD9WpNm0r90puLqIDqXrDTSCDi2RFVFfo/2EjWm4VZ4LSRyEQepfkBNbhRFAQ3vzxBFL+J47TG6LXKXHA2QaA5MLi1l8XapwlR5c9yv+1YOmew3EMJ8Z1Wl7HZrdJ/HTq1VPZV05FgMIQjCuLHTC0oOlY94wYYoFjmDDemt6gZE0K9Bv3deXlIkFMAWbk3vFmL9Yc4UI5gwHZtEg6sP1HO6vU7SBMW6ZKKgmv6RwVkjOvXC90UooPmYh9r9e/hN3+KreXcoB6QHQ59AB7BRQRy3VimQQg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB4128.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(38100700002)(44832011)(86362001)(83380400001)(36756003)(6506007)(5660300002)(508600001)(4326008)(6916009)(8676002)(316002)(6666004)(2616005)(6486002)(66556008)(66476007)(186003)(6512007)(8936002)(2906002)(26005)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FjQCoE6PND6HtrbNQUtVvvKS6IQbA9XTtIz4QOvdjH3ns9+aZB1PYpD+K1Zrcupt57dNh0bt2ISvdX5peyR5AXrBND5B3kcw6aWKMx/9283SQxA2QxPDu+nhgXxsLaiHR0MbSrLOw2qbpe2Fy8TMJ11gX2p5yXuB5ZNNGPEfP0mLrKvC5gx4gYwO6m+gFzFX/JZ0LYzsSOpiF6M/gHfJPX7OqfBgeHKFQN0UlthRNLZWnTl+duJbjZR0P5MdtuiBWKhXECq5PuWjwu/sRrCc/My1JfndpG345trvHxy/UxDjs8krRgUaBonVn6u6JQLPZJmpq4u2vme4dCwSRvHGHulP+JI1K1NeMxmemup+2WGuMMliUya+DdShp8wu5NORZ1mEkI2nGx2D65WCUEVawAYG7JHUiZpJx/QiCG18i+oB5RGkbyGCYhCGDO53B3zewl6e1t1mUi9NSN+xrBDm/8996vVrpmiKIYrSIGbO/3HfHpFbY4eIL1e9nbJeXyutk/RbQf22geJWKlsKNE66Y9JApMjPWO3bHxmiWDRgjii4a4q8ZPKtfjStD3Uo7M+LjSYEaVgYJBAsGEZTwjn3S3eV3phrKyX6k0nOm0vWpKLSwQLweqz2UJyoH3OfDyb0AN272G9Gdde5qef0MNBaix9JNkB8m2HjhMHAZqt2NxEpv9+VHbZ4z+fBIYDODUD7nDqAiYTkdF8M9qx9G2/Ixlr/+kp0LsAluNy5eDAKU126QY9Uz0Xu4rpGcnpug+w965rO3EodBd+v/ke6uFML4y0WETqnsyWvlq6A3wMESujnkplr5En5ONijPCVWamyJ0nfYFJrMd+WM/gePx9kHDEkfrapwSv7Bq50dh7qbMgaiKdGjBNuMk8cZQ2K9Ik8Nc0riDq/luiR9W3fOlvK89DGV6YE8LBYHZieGAOg9nN1URusbc261oO0j92psXiNxF4se4ynHqFnlMKHXfcCVx51cCZ4pMyr8mlaA2papvFM0bdM5SoiI5ZMyv6Vs8WdKDJ1SsPjySiPr4QIFUqJRoPpnE0+t7tt4xuFy2LbeAY+woNIobTepa/i1oTUSTgd0wrNwv3An4BXSoypGZZZff7JuNA9finjsLHGpmSCrDE3ZEQi9XoBsUZ1thK2YMCCtdRal95Zn6ibiE8hKkYokGAns+h2U2RrYUO4ghhZmPeC5qJTMhtjCgJUq4OkRiHHbGzKaUoIMQCXwOkuatjFvwl8B8nJbwlUY0CnXzaCQUyhdRSXb3l5yXSkz2+mCbyxaoGkneh+vHeGcNf67Ps8Ao4Tu/Gw1//YYu3E/+ZtsjvcetfUXczLwokbR7RH98MxaOyfYu71z8b2JkieF1tFLNEdtW/yXiLyrceYBmXetJlQra4y9XuT4R2uk1TpjRMgOuN4TYRZXn6aAEn+orXN0IcKg17Aln4YsUMN1cQfedzo7j64KUjVGUQCdVOoAlvfmV92zCjE6SbCeSNBttgyGUCnw6nC6YJBaK2i7WdT/CR0sZXHOjh+fGfrHChlMuRkDyxx7ylGEmX2MnwFdV+v5w+Pm/QNwM4rh5zWb67rzhoOPveKDdkLsN37aiyHm/yd2+uW5koSDT59CpyDSsTjzxhNgQD/lDAjzTNKj80H/Fo0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 498c77e8-d7d3-4220-ff4f-08d9d5894611 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2022 05:06:21.3081 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yqT+2dDthCjjXxYNalZ6inklRvqMgwdgA2JD48YmujexI8HeFzRcNrm4FP3wp6TkrGQpGOrYz2axq5CghsW5ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3904 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10224 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 spamscore=0 phishscore=0 adultscore=0 suspectscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201120028 X-Proofpoint-GUID: gG2dcO5U5wSvRlWoNz9OWuY9G1dAZrNa X-Proofpoint-ORIG-GUID: gG2dcO5U5wSvRlWoNz9OWuY9G1dAZrNa Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Identifying and removing the stale device from the fs_uuids list is done by the function btrfs_free_stale_devices(). btrfs_free_stale_devices() in turn depends on the function device_path_matched() to check if the device repeats in more than one btrfs_device structure. The matching of the device happens by its path, the device path. However, when dm mapper is in use, the dm device paths are nothing but a link to the actual block device, which leads to the device_path_matched() failing to match. Fix this by matching the dev_t as provided by lookup_bdev() instead of plain strcmp() the device paths. Reported-by: Josef Bacik Signed-off-by: Anand Jain --- v5: device_matched() now returns bool. On error return false. Add comments. Move the if(!device->name) to device_matched(). v4: Return 1 for device matched in device_matched() Use scnprintf() instead of sprintf() in device_matched() v3: - v2: Fix sparse: warning: incorrect type in argument 1 (different address spaces) For using device->name->str Fix Josef suggestion to pass dev_t instead of device-path in the patch 2/2. fs/btrfs/volumes.c | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 4b244acd0cfa..775d0cba2b9b 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -535,15 +535,49 @@ btrfs_get_bdev_and_sb(const char *device_path, fmode_t flags, void *holder, return ret; } -static bool device_path_matched(const char *path, struct btrfs_device *device) +/* + * Check if the device in the 'path' matches with the device in the given + * struct btrfs_device '*device'. + * Returns: + * true If it is the same device. + * false If it is not the same device or on error. + */ +static bool device_matched(struct btrfs_device *device, const char *path) { - int found; + char *device_name; + dev_t dev_old; + dev_t dev_new; + int ret; + + /* + * If we are looking for a device with the matching dev_t, then skip + * device without a name (a missing device). + */ + if (!device->name) + return false; + + device_name = kzalloc(BTRFS_PATH_NAME_MAX, GFP_KERNEL); + if (!device_name) + return false; rcu_read_lock(); - found = strcmp(rcu_str_deref(device->name), path); + scnprintf(device_name, BTRFS_PATH_NAME_MAX, "%s", + rcu_str_deref(device->name)); rcu_read_unlock(); - return found == 0; + ret = lookup_bdev(device_name, &dev_old); + kfree(device_name); + if (ret) + return false; + + ret = lookup_bdev(path, &dev_new); + if (ret) + return false; + + if (dev_old == dev_new) + return true; + + return false; } /* @@ -576,9 +610,7 @@ static int btrfs_free_stale_devices(const char *path, &fs_devices->devices, dev_list) { if (skip_device && skip_device == device) continue; - if (path && !device->name) - continue; - if (path && !device_path_matched(path, device)) + if (path && device_matched(device, path) == false) continue; if (fs_devices->opened) { /* for an already deleted device return 0 */ From patchwork Wed Jan 12 05:06:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 12710930 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D521C433F5 for ; Wed, 12 Jan 2022 05:06:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232653AbiALFGm (ORCPT ); Wed, 12 Jan 2022 00:06:42 -0500 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:47722 "EHLO mx0a-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231239AbiALFGl (ORCPT ); Wed, 12 Jan 2022 00:06:41 -0500 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20C4v8aE030477; Wed, 12 Jan 2022 05:06:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=nnCqZvtXcwud1CviT1IG+Hymt71Zf82cfW4zfT3AS6U=; b=UFLw3Nf3e8GhgikIyWpJAmRt4ufqxFu/O//7DNbey8TDvZI+7J5DuOjzBbAUcYxtXR8S upYcZioxR2pWo/oCr4TGZCnxHY/HakHeeyeDYVPUEQAL7C7BUcM8saFb6R/wbRQXzrpF XY4UFMZnjx0HNL52RAcYFWR/ElexqWhWJByvUhj/wxgrQSZaJTRuCiH38lRAkmvYFPXQ A4X10AKWec/Jr1Z4LVDut1ALwFtuFZIB9Xi8k4x9ixPsMn7h3vVxggza6vgqdd8K+CJu sNsETUFh3iM7/d47SciuiEPJtKgz101TBxEYK0zZv4WxCwN5HYLWPG/Q8rML9xKzBFwP Jw== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3dgjdbwcvp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:32 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 20C55e6Z158362; Wed, 12 Jan 2022 05:06:31 GMT Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam07lp2049.outbound.protection.outlook.com [104.47.51.49]) by userp3020.oracle.com with ESMTP id 3df42nwr39-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IM66OX0DS9GBF+ErhTsI/bMN9gzcNRukPkqR36sETTEQG+l74yLIYCv1yfPsDfgiwFqUSUvPHK8o4NWoXneCeMysTU4iRHSykq5LzkbIfn/tbXPWYL9kp4SO4m2/pf0xgY16/TtryvPXrRGf+ILWFrw5ElPJdpzgdq7A9nGVBKnBK+DRhoSnOuRll7beBUFbvFz/OPYOT9JshP+yVjMr1mQHvRAxN2F/5LN/ojO6S4thq0wlhBigoSLQ1JVdEKwJjPmiGkeEi+4vg0FERdB5/hnbOAuEYnLSdBKAQ7j+zY4fRdWlookaPkdDQpThE+hBSOKVwCwmzFZcCGUh6lC2Nw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nnCqZvtXcwud1CviT1IG+Hymt71Zf82cfW4zfT3AS6U=; b=IH1/t1dthR8MWMmu2zS4PYs7Vt1x4t1rDcjSZZMs3RuQT3stNx4zhEL7TyupngqsK+Xny5RPAUUJgwBlwmTnAUX1H2+tKAyrv9vkDRwntV/oXssHbvECK3zNrK15ABX4fsL9cHmPHe3HjddB1OQjfb3UDsDK8iX49KRpvKSI3YsKc1PxA8j2pRrZBwQi1zpZ6sNZXmtTsvFTiZaQtnLwBQSHzJFDyoXn/8NolFIGvj0UozlIUpxC9Kl6WiDWkyECzxW+qDya1yM/2C/wLROOPhBEN2KAMif5LIgiNyhPRer/+DByvdVmgoshEQb3lz5mUNAksTgvxmU8Hs+TMwFhng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nnCqZvtXcwud1CviT1IG+Hymt71Zf82cfW4zfT3AS6U=; b=RHyNakehjcnb59NUlKKyHgl1JRUb1nzFzP+4Qcf5MDpec9kvzONC6E3pGu0QO/ZZyHhqcgscElTL3opZpGiMp+3rpAR3YDZo+FJW/0nigWr8QfN8NfN8NKFs7F5J9GdB7/8yxF1BaP2RTxo+pKumDpojudcjp1ev3EksZ/IJ5Tw= Received: from MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) by MN2PR10MB3904.namprd10.prod.outlook.com (2603:10b6:208:1bb::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Wed, 12 Jan 2022 05:06:29 +0000 Received: from MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00]) by MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00%8]) with mapi id 15.20.4867.012; Wed, 12 Jan 2022 05:06:29 +0000 From: Anand Jain To: linux-btrfs@vger.kernel.org Cc: josef@toxicpanda.com, dsterba@suse.com, nborisov@suse.com, l@damenly.su, kreijack@libero.it Subject: [PATCH v5 2/4] btrfs: redeclare btrfs_free_stale_devices arg1 to dev_t Date: Wed, 12 Jan 2022 13:06:00 +0800 Message-Id: X-Mailer: git-send-email 2.33.1 In-Reply-To: References: X-ClientProxiedBy: SG2PR04CA0168.apcprd04.prod.outlook.com (2603:1096:4::30) To MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 25e71897-a38e-4c61-ce8b-08d9d5894ae7 X-MS-TrafficTypeDiagnostic: MN2PR10MB3904:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3173; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9Vx7dHnXyG5T11y4igNbxGZWCXdEBTi2EByI5Lg5PGGgmXH5Q7l+dsRME1DDHt4hmocs5o8RzenJQzM9HnOjlaRv5lvpm5Lw41Sy72vKnyKhjQLlP0BtVYRQY+URKbk+GtMSoZjibR2ppFULzLIciEC1fgVAqafQbupJElh41s2jqY1qCFtl4/z9TyuPD3pfnekeaWJ0hwhg7+5MSb4FWZA5/V3+buO3G/u5vel2J/HMYs7HOCyL1nHbEfB2gVd6eXIJ95qkR2Jdwr6gHe7/+kDf03HwckAeZitS1o87x7Xclb4DMQDyPkLN7Z5JBeYQY/S5jdrjdnZBs16Jmv4jsSadyxTaCTop1RgqoukovZf7Dt0kFAiF7gEMeedukcz9vfg7iiFExjzv0icMSVohPY1yKCzDnoL0V214gjX2V+aXDiiBa/+qegRKTpiSxQLp3TBREuNUS1vDhh539tMptYQB7YVwzaYUisyUCc+AzqyYsa91fLzeE0U1TojYQ57Ukg5vu+ReqmzC1fgVxgyZg98F4XOUwtAZ4ApFtLiyg+cLaYX6kTakSurUe3d58N/jMczxSKCLIGMuhbu1xqiuedVSGOzA4CZSQraazKuCwFEnzzlttx0ReJ6bUPu8o+Zw0yZZ2TNtkhhjLRg5s0rd4g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB4128.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(38100700002)(44832011)(86362001)(83380400001)(36756003)(6506007)(5660300002)(508600001)(4326008)(6916009)(8676002)(316002)(6666004)(2616005)(6486002)(66556008)(66476007)(186003)(6512007)(8936002)(2906002)(26005)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RSQqoyoinG/d7fitLY9alwTwtzEgeW5Jhumht2Gdctep4M+ju4qe0VUFwQNkCrvGvPgG8s9Hmfue/uYkwzLG8Vnlr556WCJHXjwvDfHuCjTOiiemPyqCKVlp9V72zN5tBlWSD/KykunHFWbD82jNtZsA8Shkd4gPz591gZW3VNVlJs0Awx+9xDS3xRHrpKkqt1y+7n1vmk14G4sYp85n4v4rx6gtgciT+9p+TXB1Dbod5+U9YhlryUjzdJh+xvQnWe7TkRZ6/I56DYpEz32EGOag6afHldUYlJ3RY4XrlY/VBvbr1b8a8L37t6RDJqHYBD7DbtwyDNS8OlC2s2ZrIHNAshXFOH9jlisd/qvZ9e8NwvS2zXFOjsVoyz37PmEK9u7jUOQ1HuoFREz4gqHrwm/fIi8EXGL37boTR+PinxZiMre0D1OkNIYmOM/gw8F9rSRwYSXOYsGtOLQ0efksL2r3KnKa0GCMQx4GmvxDB7VjroBNGP55xVLfnFnqPLepHG7CH8tyVXKyHUBuoUDcIZevG0V/ScUVUyx/qlKQguQ5Ai6onKyWPSxD6YZAx4f938sq3Xs8mPQOP2PhIDwkwXdmjqhRDwBx/7hjvEyvDDxuvWxChn1J9hCs5qezRZbNSmStjv9kDozv7Nh37+hE4LLbJhZ7eydvbq0PY7StBkYgZX2hUzbczgrZb33Mt9NbBk2zBRqSTiH5uOGbwTJCzYrDgvM4wVh5l4taXYdrQU+/NYwLOI1E/5KGtq6lfG5KyePJ4ksjTkvr6/g/0ktfk31/Bc2zt3akDIVzWsO/Mpvj621gnan1vuZRmrKstg2eD+b+v97Us0JOYzmG8wYEVOqJJmkdwK4eAV5Gz3w3BuA/IifeR+COI8QpSOPtcOZWmatDVtmYAQ1FVRRcnkdsMIKwwM80ZcXKfndcj67zM0kaxOTYL67DMO2hNMsBFogpPvvmrck9wyHIkWY+WQCHF4kERJWgXz73hElG65j/6SiNi6ow0aqz6ITKdowHY4VTN8tJ3KQgvsQ0qptIODgXDVSWr9/DwxZktJFfzYglsHT+MZMbxgNbNR+O4GZnDGRfeTMaupVY4Ph08BIasWdoMKXq4EsbEl+BfzQhuvJvKMhc54e/YzW9dQiHUqEm9e6hFYygppJtnBB2ai8ZivKxewQfNKlCAudSfCxWOzYHyHfadIhmN5fg4x0sY10h3+89966HA8L5xvTJ37OqFWp9KNgsrm7Gq1A9wUTmAhJWco9ryC25+izMRelNZ1sKeImyDM5uyFCCrX2jOvDYHtJRLEW44njOV9eRwipQ0tOZ1uX9ntpkx2DMP8IwOcHn3Hs+6ZQWapadJM+y6rmzTQNo6qYO0/1NuboVsidyd2mBFUZDQhcCchROkhFz/KQl7ccSI5DJVb5ymuvbFkFlPsnaIutqciAM0NL7ye3Yep/k+LupkKDCr+o6l+J/+lJ2OuU4OyxLyb4bm5GlDUHmgnCGVdagkePUnf44GsIeIpcOGlecnlmNbYm4aeMn27BtyoS30zMOU3p36DVz1G47pc7zZzuL1c7UvzQijnRk36ZJ/R6PU6NOFKeu4/hSbIEU/VoHWlJIZ4VIxy+d3vLoYN0/hwomv7zq6PUaVMkjzSssIQc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25e71897-a38e-4c61-ce8b-08d9d5894ae7 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2022 05:06:29.4046 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MlZP6kouiGIvjIpKERRimRy1Y0ghyUCXXPEWpozAfjxtQ1BzyhI5ruxfump9zzSkZKhyoLimThaL/i2CKjHR4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3904 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10224 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 phishscore=0 mlxlogscore=999 spamscore=0 bulkscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201120029 X-Proofpoint-GUID: RU5x5wNuxnhSVeBf-qWNskcRMx7hzVIA X-Proofpoint-ORIG-GUID: RU5x5wNuxnhSVeBf-qWNskcRMx7hzVIA Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org After the commit (btrfs: harden identification of the stale device), we don't have to match the device path anymore. Instead, we match the dev_t. So pass in the dev_t instead of the device-path, in the call chain btrfs_forget_devices()->btrfs_free_stale_devices(). Signed-off-by: Anand Jain --- v5: Fix commit title; add a comment v4: Change log updated drop commit id Use name[0] instead of strlen() Change logic from !lookup_bdev() to lookup_bdev == 0 v3: - fs/btrfs/super.c | 8 +++++++- fs/btrfs/volumes.c | 49 +++++++++++++++++++++++++--------------------- fs/btrfs/volumes.h | 2 +- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 1ff03fb6c64a..6eca93096ca5 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2386,6 +2386,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, { struct btrfs_ioctl_vol_args *vol; struct btrfs_device *device = NULL; + dev_t devt = 0; int ret = -ENOTTY; if (!capable(CAP_SYS_ADMIN)) @@ -2405,7 +2406,12 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd, mutex_unlock(&uuid_mutex); break; case BTRFS_IOC_FORGET_DEV: - ret = btrfs_forget_devices(vol->name); + if (vol->name[0] != '\0') { + ret = lookup_bdev(vol->name, &devt); + if (ret) + break; + } + ret = btrfs_forget_devices(devt); break; case BTRFS_IOC_DEVICES_READY: mutex_lock(&uuid_mutex); diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 775d0cba2b9b..8cd273a9b325 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -542,11 +542,10 @@ btrfs_get_bdev_and_sb(const char *device_path, fmode_t flags, void *holder, * true If it is the same device. * false If it is not the same device or on error. */ -static bool device_matched(struct btrfs_device *device, const char *path) +static bool device_matched(struct btrfs_device *device, dev_t dev_new) { char *device_name; dev_t dev_old; - dev_t dev_new; int ret; /* @@ -570,10 +569,6 @@ static bool device_matched(struct btrfs_device *device, const char *path) if (ret) return false; - ret = lookup_bdev(path, &dev_new); - if (ret) - return false; - if (dev_old == dev_new) return true; @@ -583,16 +578,16 @@ static bool device_matched(struct btrfs_device *device, const char *path) /* * Search and remove all stale (devices which are not mounted) devices. * When both inputs are NULL, it will search and release all stale devices. - * path: Optional. When provided will it release all unmounted devices - * matching this path only. + * devt: Optional. When provided will it release all unmounted devices + * matching this devt only. * skip_dev: Optional. Will skip this device when searching for the stale * devices. - * Return: 0 for success or if @path is NULL. - * -EBUSY if @path is a mounted device. - * -ENOENT if @path does not match any device in the list. + * Return: 0 for success or if @devt is 0. + * -EBUSY if @devt is a mounted device. + * -ENOENT if @devt does not match any device in the list. */ -static int btrfs_free_stale_devices(const char *path, - struct btrfs_device *skip_device) +static int btrfs_free_stale_devices(dev_t devt, + struct btrfs_device *skip_device) { struct btrfs_fs_devices *fs_devices, *tmp_fs_devices; struct btrfs_device *device, *tmp_device; @@ -600,7 +595,7 @@ static int btrfs_free_stale_devices(const char *path, lockdep_assert_held(&uuid_mutex); - if (path) + if (devt) ret = -ENOENT; list_for_each_entry_safe(fs_devices, tmp_fs_devices, &fs_uuids, fs_list) { @@ -610,11 +605,11 @@ static int btrfs_free_stale_devices(const char *path, &fs_devices->devices, dev_list) { if (skip_device && skip_device == device) continue; - if (path && device_matched(device, path) == false) + if (devt && device_matched(device, devt) == false) continue; if (fs_devices->opened) { /* for an already deleted device return 0 */ - if (path && ret != 0) + if (devt && ret != 0) ret = -EBUSY; break; } @@ -1373,12 +1368,12 @@ static struct btrfs_super_block *btrfs_read_disk_super(struct block_device *bdev return disk_super; } -int btrfs_forget_devices(const char *path) +int btrfs_forget_devices(dev_t devt) { int ret; mutex_lock(&uuid_mutex); - ret = btrfs_free_stale_devices(strlen(path) ? path : NULL, NULL); + ret = btrfs_free_stale_devices(devt, NULL); mutex_unlock(&uuid_mutex); return ret; @@ -1427,9 +1422,15 @@ struct btrfs_device *btrfs_scan_one_device(const char *path, fmode_t flags, } device = device_list_add(path, disk_super, &new_device_added); - if (!IS_ERR(device)) { - if (new_device_added) - btrfs_free_stale_devices(path, device); + if (!IS_ERR(device) && new_device_added) { + dev_t devt; + + /* + * It is ok to ignore if we fail to free the stale device (if + * any). As there is nothing much that can be done about it. + */ + if (lookup_bdev(path, &devt) == 0) + btrfs_free_stale_devices(devt, device); } btrfs_release_disk_super(disk_super); @@ -2660,6 +2661,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path int ret = 0; bool seeding_dev = false; bool locked = false; + dev_t devt; if (sb_rdonly(sb) && !fs_devices->seeding) return -EROFS; @@ -2851,10 +2853,13 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path * Now that we have written a new super block to this device, check all * other fs_devices list if device_path alienates any other scanned * device. + * Skip forget_deivces if lookup_bdev() fails as there is nothing much + * that can do about it. * We can ignore the return value as it typically returns -EINVAL and * only succeeds if the device was an alien. */ - btrfs_forget_devices(device_path); + if (lookup_bdev(device_path, &devt) == 0) + btrfs_forget_devices(devt); /* Update ctime/mtime for blkid or udev */ update_dev_time(device_path); diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 98bbb293a3f9..76215de8ce34 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h @@ -529,7 +529,7 @@ int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, fmode_t flags, void *holder); struct btrfs_device *btrfs_scan_one_device(const char *path, fmode_t flags, void *holder); -int btrfs_forget_devices(const char *path); +int btrfs_forget_devices(dev_t devt); void btrfs_close_devices(struct btrfs_fs_devices *fs_devices); void btrfs_free_extra_devids(struct btrfs_fs_devices *fs_devices); void btrfs_assign_next_active_device(struct btrfs_device *device, From patchwork Wed Jan 12 05:06:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 12710931 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0948C433F5 for ; Wed, 12 Jan 2022 05:06:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232773AbiALFGt (ORCPT ); Wed, 12 Jan 2022 00:06:49 -0500 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:56028 "EHLO mx0a-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231239AbiALFGt (ORCPT ); Wed, 12 Jan 2022 00:06:49 -0500 Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20C4MuhA030467; Wed, 12 Jan 2022 05:06:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=sJjSvm/0zY1O4d2ItfaVihgbfiDDfVx3ac/NIYybDS8=; b=ghdAr8dm3MxpU346suCSKkfSGpTsDs3mbyzZkOe5YpXrG/K/AVu/iR0r+0GZ/BOFqajT l/xZ90BjRTmSieA7KQc+D5vTXHt2GnomUUvL5r/N/jl439BRGfmP82FkU3yu9u93Ab7M VXN9lOR7PRV+KEJpGkLWV3IxwfJjDPyTGQJ04LDP7wpCb+FHZCktPToXNQKDMte3nxEt JxB3NcpF6BrJAPkqSObCAYw7d7XtbThub9KMQjKiMBdB+2q/ZtjXzgkPADr6nDOJaV3q WxAwrN3HoPlNsg5TARUYRmNsKwmBXqkyLFAhoIJU1e/m7pB4MmwMAPAajEdy2s9olzOB 2A== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3dgjdbwcvs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:40 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 20C561cP021814; Wed, 12 Jan 2022 05:06:39 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam07lp2044.outbound.protection.outlook.com [104.47.56.44]) by aserp3020.oracle.com with ESMTP id 3df2e5rkux-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lA9/SusnCyz9aRqhCXRQrvCCT3gNAmm+cTr/XeGW5Z74PT1LTVHORR9on8T+j1hmb0VSWhfHN3NbXUZJ33MYFahI95cU+L6ZfJL5M65q2v6sx7qI4JawZTX+xvSU+nkCZAxqRKrFoPmdIwrEQkAOxnT8vmaP5frupcj6SYi6L9JG0/0I3LOTyM+oHybmqUmyI5U5G/HL1GXq6+6FoE68yj2gptHdoPxaeq+xK45ZFWFmVTe5UhQpBQn9hOa45AqMK9Kr/lAFiFT1lM7h3yCgAELsILO4XKh6aaVdv4LPAfksrMoCj0rhSmNOaf5TUsoQcbwm+mEhGzPPZnnOeJyiHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sJjSvm/0zY1O4d2ItfaVihgbfiDDfVx3ac/NIYybDS8=; b=dtPhJJUQc3Z7eptUNvQFpe3PM75p8xJDFH9Y8+gbqOFZDybCGz6vH3Y1fWWQCnHzSoBQZE/oxZGlX/zBXxtnY0H2QXyD1RFtXvxyjdig1RwBC+/fiHpibETDauoDyu/TTAF5OvacJbFsVV2Ga7weSTOqkQJZwJEWiBsoU25M89a/fH/wjJ+CgoGDJSLZUrm/XwTQd/nlFjxRJqtQ7FT8u0544UgwN/Xo8Idi0ZdSeXdtjI8rDdlBXl3UIwkL7Uq5bAr4laXWNuQojX9Sp0ogKJzzHKFEPgWJDy2HqRp51twEyuS9H/k4sohgXdAzagNL9xHCCvJo8/DR7YeMEYi9ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sJjSvm/0zY1O4d2ItfaVihgbfiDDfVx3ac/NIYybDS8=; b=tz5plTxo7QXFi3ZGDnl4PUuY6DLC4VMfpUHoxEnkA2tw+Dcg2exz/1LLMYZO/qFNdWyyyluB4V4ffyBUuBtANiP1pSTlxKGec4UnkDovDX25TTwgReWl+CXtMB7IRwf92UnR/WtBjDWTq67Qior5n63PQmtE31JYV09EQxAc9e0= Received: from MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) by MN2PR10MB3904.namprd10.prod.outlook.com (2603:10b6:208:1bb::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Wed, 12 Jan 2022 05:06:37 +0000 Received: from MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00]) by MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00%8]) with mapi id 15.20.4867.012; Wed, 12 Jan 2022 05:06:37 +0000 From: Anand Jain To: linux-btrfs@vger.kernel.org Cc: josef@toxicpanda.com, dsterba@suse.com, nborisov@suse.com, l@damenly.su, kreijack@libero.it Subject: [PATCH v5 3/4] btrfs: add device major-minor info in the struct btrfs_device Date: Wed, 12 Jan 2022 13:06:01 +0800 Message-Id: X-Mailer: git-send-email 2.33.1 In-Reply-To: References: X-ClientProxiedBy: SG2PR06CA0111.apcprd06.prod.outlook.com (2603:1096:1:1d::13) To MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d9ba896f-abb9-45e9-ab5a-08d9d5894faa X-MS-TrafficTypeDiagnostic: MN2PR10MB3904:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Mci6lqd89Yws5ev9L57Z8xgLJdkC1iRDbki0xavVq6uWG311Tc+VRfIYBhJEpcBazrslgALhXgypdiqMDMB7pOKGpIF1Rzf0u67Q/xCN4oi8h90uJ7Y3OWK5UzThC/09Gekfb5us/9xapf+FlxiDsV7eRWrL76UO6ZfUiETeRxMNHTEgcAZAPIK6JdQxmoXf3ph4vQu2SifTpsBOK4J438hys+IOvzi95hFmdVa/GI8Ji/gquwSwxkS13CXwQYaZJg/L0L2wWsHEkAJn0NO28gaJD9VIuj8+LqRx2N6m9UEaEY6NnQXPl52ErCfSnTi15N/VleEbRs4nlvbLEfeYHMuq0bcRQLPL3P2EKWIcgPBQ3vCkR9SMhGH8s8DwNlonqW6wKyn5itc9eKVqUg2NoUVm2UstC/GblM2CuMWR90F1sNHqSEM4Pw18axV9+L31O9i0zH5pHPGo701vTPdZVyLWTOEB7Xt7AhX//MP0lH5OqLdWhLUPoC8Rthy5WcwO0OzRsVmeyoPMHZmJTPVygG5ifOUdNHb7a/vnjZZnoFmjLauzAx/yIrdu1jOBe/3AZbPE+wmBmbnEwTIJSHDNHj5RKksDg8NVGCDSlJc4NNvGaD8bWRFuwL9eR0DifyfOJiXf2YVs7O+ocbEd3m1BQg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB4128.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(38100700002)(44832011)(86362001)(83380400001)(36756003)(6506007)(5660300002)(508600001)(4326008)(6916009)(8676002)(316002)(6666004)(2616005)(6486002)(66556008)(66476007)(186003)(6512007)(8936002)(2906002)(26005)(66946007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: efg6+GQHtud6vryz2zB3VhXq/DOI2RaaY1p2DSen/QZh87KQPLfYL/tAtiCrO8rHSyoDBiu/0hYIftacNQJBdSP12yPy1uiWj2m/XSPCn5Y7Qk+9ACjvznGG0kl+6GY2wy8oo+KofUzUIoOGDp7cYe0PhJg0l/8M9CX9XWItWKwcFeaNNJpHGNi6/hRO1lGNLpR/urtkxcy7Lo+p7l5Y0X6vPfxbw0jcpMOlulrfSvunfbSsRuZS1a4garYd4mGosKxDlSDmzc5aE62bQcmLVhHOqLgDF+OfoMRdxcjv8r7jeqllAhPiSe5D23oKyj1qnS/AuGX6dqJDGdnwE1iQ5AiNusZ1vvoMUOLs7vjrWAmRlHgWG/s+rIP1vatQYIOUxAnLm91w/OqtDCgn2C5q7LJkCCHxmYj88UKPmOs7BbZRf/BSnZLOD3DZ6Jlrsvk/XS4HXMicXd5Ji4YtSt/ed+OOMVHhMnRbOWIslhV6q3XEFKXtF1RBbl50tD+mgMYGnWmIXo4Mgkx9nZuAUH2KOs0U8/vh7Xcy5mfOCQylkVYb/siE2o8c/3kodVHwkMWgQ2TO9MfegKy7WNoxFVOTxsVexG3RC5enKSp69w4gMXuyRFkYmEmXSLM6K99W+2c3LRCZwJmfOq5JmkPVkBVnneJh3dD17T89OrphRgGBI8hS7VR0+u9YXNhS3angF1l6DmGpQZMLCuFvm3+BgYePRKIVrZdEkEn7voyfe/1mdX4jPkjWo42yeWYQPS2YdB2OnRpnAV4vAB+3VhZ+OVEcNZC7gQ/h9/dPtZz0YjS52kbXIhNRdp1GUmvA58ngXNfVjBCdkHocN50P2dph+doNrS7JfXYgW99Y+HXhYa7D8XBqaPMe/O1slLRVP9V9pdrUhuhs++8P4T8breLwmFDxUKCgxrjz1ONqRiY6ulJy8BIqT+wIFXVmooSt3j/cZEXadb36bt8EM3xXgoGPNhSQGKp+b0nkF+gqJAlqQV3FZ5vOK6feBcQT/lw6U4gdfZkbv4NtQVaViYlXBI5tuOlyTP8Oi2HBlwNw+2eCSxFvBEB69GEnNBADN3jKmhuIFyyC2KDHjOvjXBFenCslUCcdt0xHWatBGuhQn3Z4PCFeOwYcAPwxdkG9FgAoAsXCcSfOGU8ILzlwgkJkM5FLGUr4szYbUZsZ6xSqovz2ABxZKRPQyGwXiH80rrWHXc9YYldrR2KaTTKmJKa9SYTj5EaknUikOC8yaxdVjsh9YEMgWOBTOm9i1IDqjM+X9Pf29+SNJGCmHccaNqPy1w/IG2Qp/RFcPfd1L43SgT3IkFG4T8rhaeekshSgb23F1rMgKJ1vfJVUQUohca5xACI1I5roWcame7N4UEGS+cU1o2TPE9KBhnWaw89x8GNJDZnTJ9i6HHdOT2fUmC5URa/qOKOObsBH67YTxa6yAIm4F/yoYLmk/ipKbaum0waG5ppzHAbtHz8ZMHdCntq71dkKtKND45/wj9uf5xn0mKKUqcMi/gwjyhxF+MBtgY4tMqzQURFypEfA8zESoj9GKLKaxkhZ3SGUWi8/TUs4bXUBi+5AuDSJrtHHc6fEyV12+slbB1eRDPj1ZB6D/XBxaCSYLIAhcWpUewIBX+bJbQlMvj9RH6I= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9ba896f-abb9-45e9-ab5a-08d9d5894faa X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2022 05:06:37.4081 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6Lrwz2EP62Qhw3KwL4ANB91EowJv1ZPtsDeXUwH1GeAO364fqKrh5519AbX6ET8becrCrhu0IQDce4Nn3uFvdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3904 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10224 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201120029 X-Proofpoint-GUID: 8-ZOxe9PO9LTei_irlqyFeM_5mks6peA X-Proofpoint-ORIG-GUID: 8-ZOxe9PO9LTei_irlqyFeM_5mks6peA Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Internally it is common to use the major-minor number to identify a device and, at a few locations in btrfs, we use the major-minor number to match the device. So when we identify a new btrfs device through device add or device replace or device-scan/ready save the device's major-minor (dev_t) in the struct btrfs_device so that we don't have to call lookup_bdev() again. Signed-off-by: Anand Jain --- v5: Add more comment for the member btrfs_device::devt. v4: Add comment; And, use the logic lookup_bdev() == 0; v3: - fs/btrfs/dev-replace.c | 3 +++ fs/btrfs/volumes.c | 40 +++++++++++++++------------------------- fs/btrfs/volumes.h | 5 +++++ 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index 62b9651ea662..289d6cc1f5db 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c @@ -302,6 +302,9 @@ static int btrfs_init_dev_replace_tgtdev(struct btrfs_fs_info *fs_info, goto error; } rcu_assign_pointer(device->name, name); + ret = lookup_bdev(device_path, &device->devt); + if (ret) + goto error; set_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state); device->generation = 0; diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 8cd273a9b325..5044b8f9cfff 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -818,11 +818,17 @@ static noinline struct btrfs_device *device_list_add(const char *path, struct rcu_string *name; u64 found_transid = btrfs_super_generation(disk_super); u64 devid = btrfs_stack_device_id(&disk_super->dev_item); + dev_t path_devt; + int error; bool has_metadata_uuid = (btrfs_super_incompat_flags(disk_super) & BTRFS_FEATURE_INCOMPAT_METADATA_UUID); bool fsid_change_in_progress = (btrfs_super_flags(disk_super) & BTRFS_SUPER_FLAG_CHANGING_FSID_V2); + error = lookup_bdev(path, &path_devt); + if (error) + return ERR_PTR(error); + if (fsid_change_in_progress) { if (!has_metadata_uuid) fs_devices = find_fsid_inprogress(disk_super); @@ -905,6 +911,7 @@ static noinline struct btrfs_device *device_list_add(const char *path, return ERR_PTR(-ENOMEM); } rcu_assign_pointer(device->name, name); + device->devt = path_devt; list_add_rcu(&device->dev_list, &fs_devices->devices); fs_devices->num_devices++; @@ -967,16 +974,7 @@ static noinline struct btrfs_device *device_list_add(const char *path, * make sure it's the same device if the device is mounted */ if (device->bdev) { - int error; - dev_t path_dev; - - error = lookup_bdev(path, &path_dev); - if (error) { - mutex_unlock(&fs_devices->device_list_mutex); - return ERR_PTR(error); - } - - if (device->bdev->bd_dev != path_dev) { + if (device->devt != path_devt) { mutex_unlock(&fs_devices->device_list_mutex); /* * device->fs_info may not be reliable here, so @@ -1009,6 +1007,7 @@ static noinline struct btrfs_device *device_list_add(const char *path, fs_devices->missing_devices--; clear_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state); } + device->devt = path_devt; } /* @@ -1422,16 +1421,8 @@ struct btrfs_device *btrfs_scan_one_device(const char *path, fmode_t flags, } device = device_list_add(path, disk_super, &new_device_added); - if (!IS_ERR(device) && new_device_added) { - dev_t devt; - - /* - * It is ok to ignore if we fail to free the stale device (if - * any). As there is nothing much that can be done about it. - */ - if (lookup_bdev(path, &devt) == 0) - btrfs_free_stale_devices(devt, device); - } + if (!IS_ERR(device) && new_device_added) + btrfs_free_stale_devices(device->devt, device); btrfs_release_disk_super(disk_super); @@ -2661,7 +2652,6 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path int ret = 0; bool seeding_dev = false; bool locked = false; - dev_t devt; if (sb_rdonly(sb) && !fs_devices->seeding) return -EROFS; @@ -2711,6 +2701,9 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path device->fs_info = fs_info; device->bdev = bdev; + ret = lookup_bdev(device_path, &device->devt); + if (ret) + goto error_free_device; ret = btrfs_get_dev_zone_info(device, false); if (ret) @@ -2853,13 +2846,10 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path * Now that we have written a new super block to this device, check all * other fs_devices list if device_path alienates any other scanned * device. - * Skip forget_deivces if lookup_bdev() fails as there is nothing much - * that can do about it. * We can ignore the return value as it typically returns -EINVAL and * only succeeds if the device was an alien. */ - if (lookup_bdev(device_path, &devt) == 0) - btrfs_forget_devices(devt); + btrfs_forget_devices(device->devt); /* Update ctime/mtime for blkid or udev */ update_dev_time(device_path); diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 76215de8ce34..d0c6dfcfc0f6 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h @@ -73,6 +73,11 @@ struct btrfs_device { /* the mode sent to blkdev_get */ fmode_t mode; + /* + * Device's major-minor number. Must set even if the device is not + * opened (bdev == NULL), unless the device is missing. + */ + dev_t devt; unsigned long dev_state; blk_status_t last_flush_error; From patchwork Wed Jan 12 05:06:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anand Jain X-Patchwork-Id: 12710932 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A817C433F5 for ; Wed, 12 Jan 2022 05:06:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232787AbiALFG4 (ORCPT ); Wed, 12 Jan 2022 00:06:56 -0500 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:6824 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231239AbiALFGx (ORCPT ); Wed, 12 Jan 2022 00:06:53 -0500 Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 20C3xOuO025170; Wed, 12 Jan 2022 05:06:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=Myo70f23a2NbM1p1C4lKxSsNuF+s/7O23hYnng5G7Fk=; b=bXAVfnjvs0jaLVJeuJrZccSvuT5ktCWl8O13c6Pxvos//ZtZdcG3/obSRM4KqM7iPXaq eEKCvGBhnve/NKZMIhU4WRwDj6qZ4V/ykZhHBmTfQ2VQ9IeNOuLQUzQveB+dRYRxJ3UR gOmQx7FiaTV7q+aB+/pkKHeqzMCSi0b/22wzY/uy5TFFLPvSJ/a0PdVNFZ1fVIpfcbAv fzsoI6mv5LBJZmALLgsg+XZ7yb84IsdR/TUpXDg/Bj/q9UBaB3aCKMx3p2fE4mnkUYI2 dqU++l1iEJzatEZbHa5cP0p0vFl8jL3z7/EkHxJhff+mqo6BPiOJGHoTZz5uaLaL3AgB 6Q== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by mx0b-00069f02.pphosted.com with ESMTP id 3dgmk9d4gx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:46 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 20C56TE9178739; Wed, 12 Jan 2022 05:06:45 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by aserp3030.oracle.com with ESMTP id 3df0neyntf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 12 Jan 2022 05:06:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RImPwFDR/X0iVL4J6MdaQIANm2yOXGccYuO6FAdKPqJLYWVEF4CnP21Uxe5BNQtQA+zreoxMY7Z7Tx79PQFQbFTA1mIr4lEQAMpYRI9LNfOlP/PfsivrOdGRNYrZvwOmvX54JB0Xnt4CbIWMUPTNyu0dEVCsVIK0djCbjb8x+iUnom01MXytf6Xj6DttXBRIbadrbUTGWhVCFOOBSH1aNCMiYBd3C9nbg3YTqfC0RJb4BeyEnSSeWu0Moa601yb1tUSC9EdFjT4Sa3RzAXFENRw7eytqHzdTS8Aw4DxbpOdwmDQUvbn4qbCxOrG7tagBgqOM3aJrJ63OYnCM8w6g4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Myo70f23a2NbM1p1C4lKxSsNuF+s/7O23hYnng5G7Fk=; b=FeFWEshb7v0u5nCUH2lywx2hSQs8CmbcpLg9Vkd/P+yR4qUcUBTZTcVWU9ZwUtdiIG31WEJ038JAcmgNvIPqACzKR3I8sVkrO8qBmcNIPD9dTEVbeM+ZMs+It8bsUpvauK3Xy+rXdb10PgVZ2qw3aL1mrnrf+BCz7QxdJAS3RzRKP7u8NmTTD/0M0BkEHTuEg+7tioW1bLVQBfw9e8swYTgWl8TIzGkTVGKNf5BMMYsR+CUTKbVdGdRNDSahDo83pyLFlyN1id1oNmvqizgZhO1LX/QpF9Lk2SUeMJeI6aAzn0+yZ4XV90BQoiEAtLFD0HVnHISl4q6KZmxxWy4VxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Myo70f23a2NbM1p1C4lKxSsNuF+s/7O23hYnng5G7Fk=; b=BZ5pIZe9M1qvsqiwpVW7UxVOtABCWI87OAVtm+3GvuyN3wMAZQiFucSyc0tIHpWA3zlVS7wjMIpPi7k+Gff7RwSxD/qDg71REVSboGlBMSPFMVCw12BrnZ2mHj33Ccq+NV4MJkyjz0rnDWe+qmkjexPY0UqJvL1y+3ab3bZ3Jd4= Received: from MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) by MN2PR10MB4238.namprd10.prod.outlook.com (2603:10b6:208:1d3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.9; Wed, 12 Jan 2022 05:06:43 +0000 Received: from MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00]) by MN2PR10MB4128.namprd10.prod.outlook.com ([fe80::f450:87d2:4d68:5e00%8]) with mapi id 15.20.4867.012; Wed, 12 Jan 2022 05:06:43 +0000 From: Anand Jain To: linux-btrfs@vger.kernel.org Cc: josef@toxicpanda.com, dsterba@suse.com, nborisov@suse.com, l@damenly.su, kreijack@libero.it Subject: [PATCH v5 4/4] btrfs: use dev_t to match device in device_matched Date: Wed, 12 Jan 2022 13:06:02 +0800 Message-Id: <7cafdd3a0183bc4e14a4c418c1cd220230798a8c.1641963296.git.anand.jain@oracle.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: References: X-ClientProxiedBy: SG2P153CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096::11) To MN2PR10MB4128.namprd10.prod.outlook.com (2603:10b6:208:1d2::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2b358368-3bcf-48b2-3071-08d9d5895362 X-MS-TrafficTypeDiagnostic: MN2PR10MB4238:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: p8zV6voZHNwUz7RLSAE23DS5gTtjXJq5ZUx6VZAwAq9WQVhv8OfUcpHtZcjRqmo6PEA9wKxm0TK3HvugCYhLGAusJSqyDHm63i3z2KvKNFgCA04urLq/7BtcYryS/Xi40vk05VrB+zt8kvHMT6tCZQwVCD5tXWj/3xG5Ef20Vu0mCBhSQGVxht6p+8dGB7OyWUwh17kwheIyqQJgF1xxFKVBpHSyRuinF2YUtFQDKhlifCWR0DHKp44F3ubF7Dxaq2Kzr+Zs58kj/bB5Nh74fQrR6Vmk7OFI7or5FEJji+jN7odHaRMoL+DnDCYcoxWzz8GKnzmoXfADOtuA4CbtFHrGM6MKr3aXdOOklUmwPzM3mVdy8FyZa+jOnxcycHXQfrAv9aqYtWGA5qEDlyg0mYUUGILCy1Mywo/DH4C/XjeDIfnmmtzxpgc0lPYa0o5oLNO9KM5Bo9BT+pRW/bhfSUvOvGfvOmCA9/LOraOS9sVhrPUNt/m+RIxJKssKUR8hCtdr7f+OXSJXPjbAKo1GRRnsEl2RDpVkMAlyUUv2GnNJXESVOokwhK8gbUhWo9J4vBmapBu0H90hI0JGekjdq2mkVQi76zzeQKyQhf3V4AU5+Y9uRS8fEQBIUd26q4yBGpCDQJsSuf/mNS3xLxcIoQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB4128.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(86362001)(2616005)(44832011)(66476007)(36756003)(6916009)(83380400001)(66946007)(8936002)(6506007)(26005)(8676002)(186003)(66556008)(316002)(4326008)(6486002)(6666004)(5660300002)(38100700002)(508600001)(6512007)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: taacMhGYisRJEwr66E7eWtXowrQW5G0NqxMnjpOw18JqCANM6ohmKIuBn4dnr4oCSoBGVUH4KPONwqFLahyy7DkgNbiTrKkKY9DcC9y96XEe0feh9H5/IwlZcE1yISjsvoVKMcEkaxaU8SSoH+td2rvmUWBEcoWVi3/WZ3JwDuoXUYk7fIfQmaCg/KXzpvZKmPPibTOOdLZFveGdWjPoL6Uyb9Pa4myemEkl1hxeVJCa3ygiFG49Cg5KQGnP/BVrMRbYV8lIViJxtRxjGKZfD6svliQ1EhsX2P+wn3XbUn2yAK5tOSkSyXmmlHJHJX9WkIKZd8bCgnGmsF2TdzlDrGmBci/v+I7gqNf8s99+8aNwE0Y1paTbh5++T4L8I/njUjSRdx3+n4fuL7A4YrcoPWlobKD2V/lgNo/0Jha7AnWP3Wx3hO9zVpZK7851mWJ+el21w6xEEAq3hXVnWuzE++811X7qZo0zq1ZtbndhrajBj/duWfrEjTsvK2omOmc8molMyMLzOlSMTM4WnHOCF2TKfyx8qKjOPNPsY3Opxz0RCfoFEj5AZ5sTG6QmEZxlPBzSeHtU7PQJnKY5XzNzoLndzBb3/LoS4DqeGCLiBYUpJpr6UultQ4Ha8jFPowQcYEy0bZH2pC+9RwdxHV4fI026DUx2hoCPIUX7ffkdkrv1iMhCzgsRhb9VbF4tqLF0i9O0kj/tFGHttWuU0WFwPdJQeu7Vj+OD+wFKkYzN4zGHxDVSoo+gbNCPy3sRuJfwQ98M7vgfJifsmEKJk+sOXXsHiPudmgFmV//Syf4KWLxuzToY6+ggAu5+gIGSmk5v8/tgEKd2ivWJJz3+aWdGGI+h+RCzvNJW1vGtuIRisTyQK/qNULc9uqKsS/HCakGVzYvgFAMqzQ5GaRjluvD+69Hgz4/9OxRmg5Q+qCs5yYMN/wzjt2Wcw3oNV2F9pKm8lsmtfbnUzIGh/53XpOPmmO+i/H1pMYuDiMkj4e6JE5/1DLyP13GuoFqkdPPGKgwLvF8h/QQk//SuNqYDBWNeXR86w5dOSeXuX6E+PUuXx/5zRPnXhy8I+JpWJERS2Y83Pk3oDZchCY9N+VJaVYFWQJ4e7s2t50n7+4wIFOQwiCuikgDntwHOcmAXbU8iEaH/SBqIoQOGGId8Qqdn3YMEFdtwbkSScQw5PRYQ0zeJ0v4S14pyEcfBvK/PZyP0kW3vTCmop6ACqMTxE00sF7fr2X1RIjXHUPM42uMQkb+wgjpy987Lq9DmcFlaLlo5x+Xfe4rRfnG2ARWkuynuXtCnoJsB8TtDPv+YmivDRicH9HG1UY4c5p636FGDP/8b5eZANmF8SlBP/ks2c5iHPynUC8WdM3Ze6tq/mpTn8eBuB9+wld1JDbVzaz8znIdX2v1s6ji5sn3Jq9oQ2BYBPRNWY4TVRzN0N/1aapck/CXjQpqL51GIS8Fc2eXyGLg1BsPjt4001oYNN/LP16WSzAXZBX4A9cQ0XdyXcM86jfRF3mrsHjgdBs4PB7QujkAugOOIOhzHJDJ9sty+T1hM+JWhMBL9htVu6EZn83+02o+ZoFY0oJw14TiaDDk58v4ggu/rxd5f+Fo6cKnmzBgWJjoZ/XP15hjuQGUl0AhwzbBeaLU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b358368-3bcf-48b2-3071-08d9d5895362 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2022 05:06:43.6440 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 03OgPOTQggkfGaiPIUTGW+T4CjnCT0pxuo6gUAqx+/Gh0ehzDQAKgKJqwfd8KlBOICEj9iMyIjANCb7TgJYlpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4238 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10224 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 spamscore=0 phishscore=0 adultscore=0 suspectscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2201120029 X-Proofpoint-GUID: TjXeIETdtaOUxNvaZog2k4n4A0XRNU4R X-Proofpoint-ORIG-GUID: TjXeIETdtaOUxNvaZog2k4n4A0XRNU4R Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Commit 6531891b2bcb ("btrfs: add device major-minor info in the struct btrfs_device") saved the device major-minor number in the struct btrfs_device upon discovering it. So no need to lookup_bdev() again just match, which means device_matched() can go away. Signed-off-by: Anand Jain --- v5: - v4: - v3: - fs/btrfs/volumes.c | 42 +----------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 5044b8f9cfff..87d53b3a3377 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -535,46 +535,6 @@ btrfs_get_bdev_and_sb(const char *device_path, fmode_t flags, void *holder, return ret; } -/* - * Check if the device in the 'path' matches with the device in the given - * struct btrfs_device '*device'. - * Returns: - * true If it is the same device. - * false If it is not the same device or on error. - */ -static bool device_matched(struct btrfs_device *device, dev_t dev_new) -{ - char *device_name; - dev_t dev_old; - int ret; - - /* - * If we are looking for a device with the matching dev_t, then skip - * device without a name (a missing device). - */ - if (!device->name) - return false; - - device_name = kzalloc(BTRFS_PATH_NAME_MAX, GFP_KERNEL); - if (!device_name) - return false; - - rcu_read_lock(); - scnprintf(device_name, BTRFS_PATH_NAME_MAX, "%s", - rcu_str_deref(device->name)); - rcu_read_unlock(); - - ret = lookup_bdev(device_name, &dev_old); - kfree(device_name); - if (ret) - return false; - - if (dev_old == dev_new) - return true; - - return false; -} - /* * Search and remove all stale (devices which are not mounted) devices. * When both inputs are NULL, it will search and release all stale devices. @@ -605,7 +565,7 @@ static int btrfs_free_stale_devices(dev_t devt, &fs_devices->devices, dev_list) { if (skip_device && skip_device == device) continue; - if (devt && device_matched(device, devt) == false) + if (devt && devt != device->devt) continue; if (fs_devices->opened) { /* for an already deleted device return 0 */