From mboxrd@z Thu Jan 1 00:00:00 1970 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 901CAC3DA7A for ; Mon, 2 Jan 2023 09:58:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E0B808E0002; Mon, 2 Jan 2023 04:58:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D95C88E0001; Mon, 2 Jan 2023 04:58:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C5C458E0002; Mon, 2 Jan 2023 04:58:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id B29698E0001 for ; Mon, 2 Jan 2023 04:58:48 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A36F316076F for ; Mon, 2 Jan 2023 09:58:47 +0000 (UTC) X-FDA: 80309409894.24.5B6CEF7 Received: from mx1.veeam.com (mx1.veeam.com [216.253.77.21]) by imf17.hostedemail.com (Postfix) with ESMTP id B5EA24000C for ; Mon, 2 Jan 2023 09:58:45 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=veeam.com header.s=mx1-2022 header.b=vQPvKDGx; spf=pass (imf17.hostedemail.com: domain of sergei.shtepa@veeam.com designates 216.253.77.21 as permitted sender) smtp.mailfrom=sergei.shtepa@veeam.com; dmarc=pass (policy=reject) header.from=veeam.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672653525; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mlXog09AD8tM0bQkT/5+11IIdnU/V0C6NIq/OIo3ZEo=; b=P/7vxsbbj9Snel7lAq/SGdQqMg20cX+1Cyi2d9esZdtpzNOruIdY/U75HdrEmBCplyOSVp FybY4902iEapxGADfYgfEo4G1H39AapCLQc0wX7gOjzwLmJ8uBenxJhV1TslvVrttXLGD6 8mi3Hk+ynfs0QWZWpbW9i9Y3pLnOC6s= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=veeam.com header.s=mx1-2022 header.b=vQPvKDGx; spf=pass (imf17.hostedemail.com: domain of sergei.shtepa@veeam.com designates 216.253.77.21 as permitted sender) smtp.mailfrom=sergei.shtepa@veeam.com; dmarc=pass (policy=reject) header.from=veeam.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672653525; a=rsa-sha256; cv=none; b=ER0KivIBRZiTIdZaNPaQf+R8oVO3s5L3SDQaz8PJC5J0twEij4Dgg6tStu1P7SG0AWpv8I SseXZRwFr7HOL8otxLrP3LnxbgnmExbNTa/UT4tiONQHC50CAE7tZVGNwQYPapzaz3nFF4 whnQXi++RG8Cc2SStZBEmHJBVNciGpM= Received: from mail.veeam.com (prgmbx01.amust.local [172.24.128.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.veeam.com (Postfix) with ESMTPS id 7966941C5B; Mon, 2 Jan 2023 04:58:44 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=veeam.com; s=mx1-2022; t=1672653524; bh=mlXog09AD8tM0bQkT/5+11IIdnU/V0C6NIq/OIo3ZEo=; h=Date:Subject:To:CC:References:From:In-Reply-To:From; b=vQPvKDGx+dsUeqmwAS+yOXVPKMcvM7wStjooOWRzEzrg/UB+mX8h56lFKyTsNPVCX JwvhpibEdb16uEneUnBdkadywuPo40/DkqR7ekLOqxAsUCXfYbngxTrbBwoowg7VHh CempMb+YVloI7Z+xzB4NUBz4/7/pQUGlsEkCWTDM+pW59CTWoG8rWY0ZbyHXpzGUJW 2C4mN0CtZj3O8l1qbT73cZS7PYv3jM0aNMq7fqZYjDcSVW/g0wEOapsghFCduvFDsF ZCnnRMPt6nOaxtU1F9p92FX69Yn8mHwrUoX1qWAWNRs+vm6x1slsbYiy9CEKzMSkcy WQc6D4TaKsv1Q== Received: from [172.24.10.107] (172.24.10.107) by prgmbx01.amust.local (172.24.128.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Mon, 2 Jan 2023 10:58:40 +0100 Message-ID: <974ffb8c-8623-d249-f69f-ac5cfd498950@veeam.com> Date: Mon, 2 Jan 2023 10:58:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH v2 18/21] block, blksnap: snapshot Content-Language: en-US To: Hillf Danton CC: , , , References: <20221209142331.26395-1-sergei.shtepa@veeam.com> <20230101110542.3395-1-hdanton@sina.com> From: Sergei Shtepa In-Reply-To: <20230101110542.3395-1-hdanton@sina.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [172.24.10.107] X-ClientProxiedBy: colmbx02.amust.local (172.18.0.172) To prgmbx01.amust.local (172.24.128.102) X-EsetResult: clean, is OK X-EsetId: 37303A2924031555657167 X-Veeam-MMEX: True X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: B5EA24000C X-Stat-Signature: war9jcm3rismif7fko9jtmft8j7sskcn X-Rspam-User: X-HE-Tag: 1672653525-375167 X-HE-Meta: U2FsdGVkX19/NyOwXhb7CTpojszx1JJP6ryV3c5oA3YOZRUIb2td3zxskZ4uWlxXWf3WdIOLULXc7+49pvVYGGHhPwIM6UL1YBKcog9e2jsQz5qzouQha4iMCiJvagd87dka5iq409F6hOXz9EME+tHGLEMfPYk3suKSsV+fzgdkYkX7kPDnuKMIMUmv5Pa0zi2uD58dX9s2taj5Ja6Ts+uInnUx6/dcSKg2bAAacY6h90zXofaKnxkS8SRZqL7HBt99DNmIRVvpofAHSgz9c6fAkjtCrBczZPqeZV7oE7C+ixrF0j94x7ooQUYdBiKbUy+hBUoGTlCSeH+bxITOBrm5D6AG4HetL9/1Q38MmOIu+vhXDLrHWeE8NwnDzNQCK39iqT/SZ2oa444Fk32ObCFVX0890c/xnmb8OTAGfM4YpoAKv6wnxh+PmZk8Ht626E8/dCqCDosUZLpmQAulpjDswfSu5jTXnCaMWpUn2ribIm9ntpj1tc9Emyh6mJ2/KE0n4xO4iCvNZdIdobex28CcuL5mbFlebYk7VFX2ulA4ACg7qn0VXVCEx9wqJa0uq2mQxsmCH3rNii4Ad1hLBoyaKFvX2LlQHnYEwSQaWtuZhwTZoPGFe22CvvnlOwbnw/KMh9f5DnNHtaMnzTTveMYxrjNV8RMZ7j/0p1TgsDFWY2iUCw65Hbz7gfmJT0bZga8QHiBXoE6RRisnGrSApV3/2layv53RhVYri4nAo84RhpmLijOHL+IOHYdj7T2oe7hXFc/yCo0y6ennD2L4e6Q9PfkYPswQnOClpPByvQVyBnj1Fw20vtvtR5O5J5XZeaSkSFJx6J6RJnZdnOwYiOMsNXMub7SnpxdACvOquOU8Jo99E0sTIXoca+p6HVGY/TxYWxBbIU4= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 1/1/23 12:05, Hillf Danton wrote: > Subject: > Re: [PATCH v2 18/21] block, blksnap: snapshot > From: > Hillf Danton > Date: > 1/1/23, 12:05 > > To: > Sergei Shtepa > CC: > axboe@kernel.dk, corbet@lwn.net, linux-mm@kvack.org, linux-kernel@vger.kernel.org > > > On 9 Dec 2022 15:23:28 +0100 Sergei Shtepa >> +int snapshot_create(struct blk_snap_dev *dev_id_array, unsigned int count, >> + uuid_t *id) >> +{ >> + struct snapshot *snapshot = NULL; >> + int ret; >> + unsigned int inx; >> + >> + pr_info("Create snapshot for devices:\n"); >> + for (inx = 0; inx < count; ++inx) >> + pr_info("\t%u:%u\n", dev_id_array[inx].mj, >> + dev_id_array[inx].mn); >> + >> + ret = check_same_devices(dev_id_array, count); >> + if (ret) >> + return ret; >> + >> + snapshot = snapshot_new(count); >> + if (IS_ERR(snapshot)) { >> + pr_err("Unable to create snapshot: failed to allocate snapshot structure\n"); >> + return PTR_ERR(snapshot); >> + } >> + >> + ret = -ENODEV; >> + for (inx = 0; inx < count; ++inx) { >> + dev_t dev_id = >> + MKDEV(dev_id_array[inx].mj, dev_id_array[inx].mn); >> + struct tracker *tracker; >> + >> + tracker = tracker_create_or_get(dev_id); >> + if (IS_ERR(tracker)) { >> + pr_err("Unable to create snapshot\n"); >> + pr_err("Failed to add device [%u:%u] to snapshot tracking\n", >> + MAJOR(dev_id), MINOR(dev_id)); >> + ret = PTR_ERR(tracker); >> + goto fail; >> + } >> + >> + snapshot->tracker_array[inx] = tracker; >> + snapshot->count++; >> + } >> + >> + down_write(&snapshots_lock); >> + list_add_tail(&snapshots, &snapshot->link); >> + up_write(&snapshots_lock); > Given list_for_each_entry below, typo wrt &snapshots found in the fresh 2023? > Thanks. It seems I just swapped the parameters by mistake. It should be better: ``` down_write(&snapshots_lock); list_add_tail(&snapshot->link, &snapshots); up_write(&snapshots_lock); ``` >> + >> + uuid_copy(id, &snapshot->id); >> + pr_info("Snapshot %pUb was created\n", &snapshot->id); >> + return 0; >> +fail: >> + pr_err("Snapshot cannot be created\n"); >> + >> + snapshot_put(snapshot); >> + return ret; >> +} >> + >> +static struct snapshot *snapshot_get_by_id(uuid_t *id) >> +{ >> + struct snapshot *snapshot = NULL; >> + struct snapshot *s; >> + >> + down_read(&snapshots_lock); >> + if (list_empty(&snapshots)) >> + goto out; >> + >> + list_for_each_entry(s, &snapshots, link) { >> + if (uuid_equal(&s->id, id)) { >> + snapshot = s; >> + snapshot_get(snapshot); >> + break; >> + } >> + } >> +out: >> + up_read(&snapshots_lock); >> + return snapshot; >> +}