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 724EAC3DA7D for ; Sun, 1 Jan 2023 11:06:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6ECF38E0002; Sun, 1 Jan 2023 06:06:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 69CF58E0001; Sun, 1 Jan 2023 06:06:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 58CE28E0002; Sun, 1 Jan 2023 06:06:00 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 49D1F8E0001 for ; Sun, 1 Jan 2023 06:06:00 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 204FF4073C for ; Sun, 1 Jan 2023 11:06:00 +0000 (UTC) X-FDA: 80305950480.07.33D384A Received: from r3-19.sinamail.sina.com.cn (r3-19.sinamail.sina.com.cn [202.108.3.19]) by imf15.hostedemail.com (Postfix) with ESMTP id DCBF1A000D for ; Sun, 1 Jan 2023 11:05:56 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=none; spf=pass (imf15.hostedemail.com: domain of hdanton@sina.com designates 202.108.3.19 as permitted sender) smtp.mailfrom=hdanton@sina.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672571158; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yTUgvhhK7bKYsc7lk2uS1al/LASs4c5idCiixUsVplg=; b=qVqSzBnqMvU7ioWfwyc8C2M9X/qVYcAkheYPRQVhZz1+0ENwAaZ8RGoFbEhWAA2tfGeBtD PPxDiUwCEHD7nc2yZOYjJ03h/TWTMpCttv1meqOzNk5Ju+PKetDbGY1shLzWAqZ1Wyryw/ jMeZz0wCphTRJ1E2V3sxVvW4yutD9FA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; spf=pass (imf15.hostedemail.com: domain of hdanton@sina.com designates 202.108.3.19 as permitted sender) smtp.mailfrom=hdanton@sina.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672571158; a=rsa-sha256; cv=none; b=Xcmy8oC20xkTZ3PyfuFBULfjyp7DIvTLHLmNQARdG8SfPTNqDsQdYtppJq1MVb5PuKykLz isgVmgQWormiunAQR/WTZ1zWl8rcXfC6gmbGpDxxJ3j4z3N/pG/ToXzkJyEcQ9IFLVCY0V e37yK2LAbJp0BdJqxgnDpPLhqBLpgLY= Received: from unknown (HELO localhost.localdomain)([114.249.57.238]) by sina.com (172.16.97.35) with ESMTP id 63B1684F00031253; Sun, 1 Jan 2023 19:02:41 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com X-SMAIL-MID: 23209215073439 From: Hillf Danton To: Sergei Shtepa Cc: axboe@kernel.dk, corbet@lwn.net, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 18/21] block, blksnap: snapshot Date: Sun, 1 Jan 2023 19:05:42 +0800 Message-Id: <20230101110542.3395-1-hdanton@sina.com> In-Reply-To: <20221209142331.26395-19-sergei.shtepa@veeam.com> References: <20221209142331.26395-1-sergei.shtepa@veeam.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: jin1cykn5b3wxayhbnjndeh7hxbrita4 X-Rspam-User: X-Rspamd-Queue-Id: DCBF1A000D X-Rspamd-Server: rspam06 X-HE-Tag: 1672571156-383619 X-HE-Meta: U2FsdGVkX1+XWJqkVbgJRSpc+5oHJ1U99z+VJEhy7OLSRN78nO2OSCvV6AYHQ0zfcxoQTSiA2PmH04IGLVAlJlkRq7hXZ69gfs8Ni3BRGmcq/9+aOQGU1TDuPzn6RKYQ3vSk1ThzaJorA8uIxGGF6hRh63MDU51g/wVaDELOraWeqkpyC0neK/mIyzoMoWwEjLBO2AeN/tpzBRwYs9UF75EFZqHgRCVHS9aQyu/mgaTXmaKFtghlXigryG86JQ/sz3UWULGDJQAnQW+hqTt0/LJNRJ+21oJYPimvNzhC9fds86nTQ9yiK9iqQJKwSTFHYLjLSj5TJTzNiaRhW4/ZNBVMkHstCn5mDZheOh4nw3m0r7nepPf30XrIu1AXHDSI6FvuX0UNtP4gAsWbPTGXA9U1w+PMTH35gLVVRmxqwU/Jt9P9wLF+GSWyG0Taw2x9CZlomvFsb7ZQfx/1yN0Xxt9OHwi0VzOiaX0ICmWO/rXao20VkDuCenk17yR7thgL/o4lFDPIncK6lJ/BJZOfqHZY8qleuiapdprrCu/vcl3ivJIeSTdKVIGmlE3UUXNywcMkEWoZZwQNc4LSQFtDQB/f0+FXu5w/T600o+9zdkh6gCxLzpr4TJWvASHkEcD5D4sgYBbhcYqK4/dc62SCGDmZdhzkdbBBcN5JZ4ls+Y7ubuDF49GTafBz7gqSu/qRgUpuNrZXKwYZIFBhdu6abUDZUB/8Zi5J4ENtyEWWy23Wr1DJqdA4lkVdxh4BIw4pvtbGr3j4UDDNKSayhdRIZh49rsPvL1eZE8+6nSlGPDY= 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 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? > + > + 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; > +}