From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 112008017D for ; Wed, 23 Sep 2026 12:52:25 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68NCp7eC000934; Wed, 23 Sep 2026 15:51:07 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68NCp7eC000934 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="wa6LOyf/" Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 68NCp4ZR000926 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Wed, 23 Sep 2026 15:51:04 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 68NCp4ZR000926 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47d81cf0c4cso682111f8f.2 for ; Wed, 23 Sep 2026 05:51:04 -0700 (PDT) X-Gm-Message-State: AFuF++lRfBKVlgWy/rpQhwAb29ryTqMtGIQIZNyRqhniVDGDu4k8LBnP zhLA4PfRmnKiGRPE55Max0xZX8YnHqh7+OJSsOugsc7QxcTXOGI4l9G+7fHzxsmr3fmJlPxtYDC LNvWkBWw18UJNv1YTVMoj9OulauPJTaMMk3gGy4KRBlIDr8UbR6mXQA== X-Gm-Gg: AYBFou27bS0r9qrp+zGmZCzKXUKbIbyfPWYwJ00Dw/QHqElgRGlnXektdIY3lLi5kWj Eae7kZRP+EA+KCZQtOnQq92meW4UZ0ROx5ZeFf5x/1WBJBT5Wv9QZpw+2GlaVcWlaaZVwKY7gZB LOg8kPJTnBo8XDOEnIellIOvVKq9nPur2EzmGpcMVqqKf8jeIJVZgkgE4rvVWAKvNtFZ01MPBcz 48E1BO2b6ex4eADcdkNzeEVOOXtEnMwc4Qo9xP92ZnyBoGkiJFoFJjVJJDq59aEPtVVeCgulf+w 8j2kGBgT7YHarRgpcRqEY9FIqpfCwJeedEgf/t6bfPKent/oZONc2oYPBizLbqjRHbVODJNCuyj IvXKoqb7HQ8ro2+ff X-Received: by 2002:a5d:5f53:0:b0:487:765:7550 with SMTP id ffacd0b85a97d-48867042418mr5086012f8f.4.1790167864331; Wed, 23 Sep 2026 05:51:04 -0700 (PDT) X-Received: by 2002:a5d:5f53:0:b0:487:765:7550 with SMTP id ffacd0b85a97d-48867042418mr5085973f8f.4.1790167863902; Wed, 23 Sep 2026 05:51:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1790167863; cv=none; d=google.com; s=arc-20260327; b=iw9Xt492LuJLldTVULjZ/8GcoY8VVze4gCjzA0l070lDnNRV74ND79DxQXZrEFN8JX qOrX6m7DvX+hS0QKVPdLlew7FO7GvFL9Sj/G9bS/uWsmuDAjFhxcFI1xb5BiYYjqhfPQ xfShUGynBAgBugrgfTgTsuftHzLr4Ir8bTiCrFLB8IResXeAZngWQJImfG/Q8G5i+ncj RaiE7k/ykcoOxr18ED1kFTWKbjl7mtHzj5WSvojpeKdhQQFboOh8VoVsveSm8Jgf724W mTh3cG9BohMoB2s38LFZo6Pxjhs+TNyFzo+3W4RNWTxIosYOhxBb3Ti45dLWCQTnRYx4 6a1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:dkim-signature; bh=HxJfs0wlaZa8B4lQwCrQEJk1M9lR7k/r9bhUS9RQ4xk=; fh=6JpqpGxFeFNaDh+k4t2UfZyo3rKe/54dyQ52T8vVmSc=; b=bZfyeoj7KUJU7tm2z+9r0HG+jppsbTOu0KsMcj0Lyr5s/pPHb7OdG+ebura+eDgbvb hcCaU+oaUB88x+r8Zs9vveKVTmnUwaW84v6RuGnLCFLACuR0IKf+mY5hHOyRr8Y4Oi7O tj0obcBV+5esk3KVV70IuFSF/yaveB8ATFfPqhvOqcj6gPRQ0uUEY/22ZqPv9IBeJHVj 08TAS3dWGDqQCLxNGfEVgZ1BkJSv+CEjwaGaLFXYQ0H1or/dHRUzu9/uBpadKN5XpjlF Xrt/4hm5RVGT5L5VVm2Yz+oYXl6R39xHAVg8ShS2n2YNd1Kv16xLkhSfBl3dIFqrcmlR LpWw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b="wa6LOyf/"; spf=pass (google.com: domain of kui.liu@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=kui.liu@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-488688d8bd7si4261834f8f.341.2026.09.23.05.51.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Sep 2026 05:51:03 -0700 (PDT) Received-SPF: pass (google.com: domain of kui.liu@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b="wa6LOyf/"; spf=pass (google.com: domain of kui.liu@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=kui.liu@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Content-Type:MIME-Version:Subject:Date :From; bh=HxJfs0wlaZa8B4lQwCrQEJk1M9lR7k/r9bhUS9RQ4xk=; b=wa6LOyf/8gWgwhVPQQ7 8KmqTUeuCrbT8C4O+a45iVG0771jtvfVScte806aaL00fAasYZFR1j3kqjXzjbX7Qcvj2/MXj8/9D fVaFctPnnTbvdeWhPtCHVnlDX9OVt6oelyg5/19yHMVLVk4Hp2ZqZD45ctA1uFOTnV+enVXIY4TQA RFCwG2IFuNa+vewkdH9LkerozHPaL+CMFnQKzcsXLvxA0Q4X6Gej6aKeDojlQfBQmyryJ/mjHtHju kWKcR4N/L0sbiOItc8y1PEVBZZqYko8vRPOD6P6ux1zgeo/cdvugAP8V3mmBllNu0q9as4zcb0csS fXJb0l1eOcTRzog==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=LK-MBP.local) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1x9MOI-003Xz8-0Q; Wed, 23 Sep 2026 14:51:02 +0200 From: Liu Kui Date: Wed, 23 Sep 2026 20:50:41 +0800 MIME-Version: 1.0 Message-Id: <20260923-vstor-145614-unify-v1-2-3907084ba107@virtuozzo.com> References: <20260923-vstor-145614-unify-v1-0-3907084ba107@virtuozzo.com> In-Reply-To: <20260923-vstor-145614-unify-v1-0-3907084ba107@virtuozzo.com> To: Konstantin Khorenko X-Mailer: b4 0.16.0 X-OZ-Fwd: true Cc: azaitsev@virtuozzo.com, devel@openvz.org, Liu Kui Subject: [Devel] [PATCH hci-8.0 2/2] fs/fuse: unify dropping the fuse file reference of a writeback request X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org The drop of the wpa's fuse file reference is split between two functions: fuse_writepage_finish() puts it on close_wait mounts, fuse_writepage_free() on !close_wait ones. The split requires that every wpa owning a reference passes through fuse_writepage_finish() before being freed on close_wait, an invariant silently broken by the rebase to mainline commit 4046d3adcca4 ("fuse: move fuse file initialization to wpa allocation time"), which makes every wpa own its reference from allocation time. Then there are two cases where wpas are freed without going through fuse_writepage_finish(): the temp page swap case in fuse_writepage_add() and the killed aux request chain in fuse_send_writepage(), leaking ff->count, so fuse_release() can hang forever waiting for ff->count to drain. Fix the leak by dropping the split: release the reference unconditionally in fuse_writepage_free(), which every wpa death path passes exactly once, via fuse_release_ff(), which already handles the close_wait accounting. The allocation-time ownership model of the mainline commit stays unmodified, which additionally keeps an aux wpa's args->ff pinned between creation and promotion. https://virtuozzo.atlassian.net/browse/VSTOR-145614 Signed-off-by: Liu Kui --- fs/fuse/file.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 180f60fc539a..0a7c6d03b13d 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -2181,7 +2181,6 @@ static ssize_t fuse_splice_write(struct pipe_inode_info *pipe, struct file *out, static void fuse_writepage_free(struct fuse_writepage_args *wpa) { struct fuse_args_pages *ap = &wpa->ia.ap; - struct fuse_conn *fc = wpa->ia.ff->fm->fc; int i; if (wpa->bucket) @@ -2190,8 +2189,7 @@ static void fuse_writepage_free(struct fuse_writepage_args *wpa) for (i = 0; i < ap->num_pages; i++) __free_page(ap->pages[i]); - if (wpa->ia.ff && !fc->close_wait) - fuse_file_put(wpa->ia.ff, false); + fuse_release_ff(wpa->inode, wpa->ia.ff); kfree(ap->pages); kfree(wpa); @@ -2211,12 +2209,8 @@ static void fuse_writepage_finish(struct fuse_writepage_args *wpa) struct fuse_args_pages *ap = &wpa->ia.ap; struct inode *inode = wpa->inode; struct fuse_inode *fi = get_fuse_inode(inode); - struct fuse_conn *fc = get_fuse_conn(inode); int i; - if (wpa->ia.ff && fc->close_wait) - __fuse_file_put(wpa->ia.ff); - for (i = 0; i < ap->num_pages; i++) fuse_writepage_finish_stat(inode, ap->pages[i]); -- Git-155) _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel