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 E723F8015C for ; Mon, 7 Sep 2026 14:11:29 +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 687EACdg028555; Mon, 7 Sep 2026 17:10:14 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 687EACdg028555 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="KvnE2N44" Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 687EABWu028551 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Mon, 7 Sep 2026 17:10:11 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 687EABWu028551 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-48439eea716so2404983f8f.2 for ; Mon, 07 Sep 2026 07:10:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByR//ZyF/avmrJLhpQG3yeApT9V+ZS16JmZqDXj9aIDoG72ZOXGPmzl/7xhM3iLCGbJV52hmg==@openvz.org X-Gm-Message-State: AFuF++lHeVORkKvKG+asfnBjc+MA9Nybg14E92Z3pnbI7mnahpFRoUni LZ82kcTo5vnCTXnf6CTX+04No1xa4JFejo5FGjXd/2pDWgzH8h6a8bACW7QRTHDul1jHJqDiqY8 R3R4Z8raVryQo3CATTKt/xJB1voFsrIFRpBrGBDxD36g12WueSy2nAg== X-Gm-Gg: AYBFou3VmOpXee1C2uR3llv7G2VwPUn7PdyQghGDTt0+ngRhh5RTxXYNwkMSwyATyMF WW6OU7+H17LlknFfWRIo830mjxd8YklGpxlfRRhh7Ri4FtXiA4Z+r+FcxZtlNgJV3wX19Ryskms MNBJu++COWxrG2PZGSpPiLA0wJMYZrvBPZA2JxD5hp4YtcHcz9EdQIs2sTw45TDDP02oj4Gu0sV fAHVzTypOAVd8djq8pcQi4bKirUx9eRDFyADP/vfXIdeElOiBNoCl/gE87Wag6YukH9W2ipsUBs F+eq9FJwznNccl9qIMUGPZ7K7702ht5ssK1tLxLmir0g4qGaxfnuuA/FqrlzoExX49Xf/CGTVya MVstgYn5HVScqjWMA X-Received: by 2002:a05:6000:4a1a:b0:485:8c17:976c with SMTP id ffacd0b85a97d-4858c17994cmr19386927f8f.46.1788790210945; Mon, 07 Sep 2026 07:10:10 -0700 (PDT) X-Received: by 2002:a05:6000:4a1a:b0:485:8c17:976c with SMTP id ffacd0b85a97d-4858c17994cmr19386864f8f.46.1788790210339; Mon, 07 Sep 2026 07:10:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788790210; cv=none; d=google.com; s=arc-20260327; b=likr7GZTosxdW/73+qSyU6jTZG9n4j0Anb4eh+jQVLBnEBjpEtMM+u5xidDEXVffsz jnC+T/lLP8bM/q2wUl59TPUojOuqI+/SAM6K2Xa+1+/+LE7x8H8vBmzDlMUKARQcxu13 PeLRxe52JH6OG6dWwtg5tM8VpE24xCTiDoK4BTvUxzS4LXNLE7zvS9THytF57wLj7Vba vXmjglkF5npVfm/1xja0NR5a2/dspKNjoU/6Rerc/KDaTO0RstwxHtPwx54fvupD3+UM 4+kn3eKvxKam6S19tWaff9oJ5bhrEUOIAehLIysU8XJJCu18XS3LYE7g/gOIJPezpUUi Ht5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=KkeXKRCsfjgUm47f3bAFyLKtKqPm1q4Rh3VCdFDpTB0=; fh=ziA7gh903p3ahSzu6+d2OdycaBhNoOmK0/GlcBFmGv8=; b=ZbrjJTMtlEGYXOiMV91bYWBqnRr4FGlW8Yymde2SiLFBZfPUIC93kDt+uIUAuQ7GGC BPzeGFw6qgWvPRz08jUFpQPxTkn/ZhDpDN7oAOe24y76pa/CO8cayP7FCulGxy/f65OV fvVEARiTD07cPqumNqdVWZB/VGcfTJWqac6TJfICt/8/ZmcOizC8eUJ9yy29oxHRDohY z2OcW6xycVOWPJnnqJ8dB51A+bqzNNaqQs43GKQC57CGMkKSxWNDl3I4uppq460SY00V Q+vBELYxZBzJLKcz50TWiw3FeAKa0kP0o5YC71t4hNodUdcv6XYtOLr4nLoujOhXYKeV 5W9w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=KvnE2N44; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@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-485885dd798si21252952f8f.400.2026.09.07.07.10.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Sep 2026 07:10:10 -0700 (PDT) Received-SPF: pass (google.com: domain of khorenko@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=KvnE2N44; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@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=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=KkeXKRCsfjgUm47f3bAFyLKtKqPm1q4Rh3VCdFDpTB0=; b=KvnE2N44T40t uSnOb+SOpJGMCDWnRMMb5ZeR+4WnlwrCzxFfvy5efrqBgDNr2xkL+vMmEwKGDOKP0kif99hLfZ28e e47pvtJUBsDFbEyZ4QDn+YcqJoAiBojirv+hO75O9NR67hfY/qgHrxrdrHNyOE9uSCXQP8MPotzeh kpuMEsDbZ9Jm/y4WTsgF+ui4Q+878h3vI63p00EVROwm6HArqdVbt0yYRpflDL8NflSknoMz5x36b 5qqyKaDlAPDzAFfHeUID0N4lyJX4iYVNLRjt7bNFN4EEUds7xvAiOEf9KIFHAZPPmtgqRwBG/8nYZ le7bElpqc1TWTi+wJ6e0Lg==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=f0.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1x3a0S-000nmO-36; Mon, 07 Sep 2026 16:10:01 +0200 From: Konstantin Khorenko To: Alexey Kuznetsov , OpenVZ devel list Date: Mon, 7 Sep 2026 16:10:09 +0200 Message-ID: <20260907141009.1728909-1-khorenko@virtuozzo.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-OZ-Fwd: true Cc: "Denis V. Lunev" Subject: [Devel] [PATCH vz10 v3] fs/ext4: let FALLOC_FL_PREALLOCATE through the vfs_fallocate mode switch 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 From: Alexey Kuznetsov Upstream commit 57413d8e172c ("fs: sort out the fallocate mode vs flag mess") replaced the FALLOC_FL_SUPPORTED_MASK check in vfs_fallocate() with a switch over FALLOC_FL_MODE_MASK that rejects unlisted modes with EOPNOTSUPP, and ext4_fallocate() got a dedicated ALLOCATE_RANGE path. The vz10 port of FALLOC_FL_PREALLOCATE only added the bit to the mask, so fallocate(FALLOC_FL_PREALLOCATE) fails with EOPNOTSUPP before it reaches ext4, and vstorage falls back to the slow path, which halves its write performance. Accept the mode in vfs_fallocate() and route it to ext4_do_fallocate() together with plain allocation; ext4_alloc_file_blocks() already honours the flag. The falloc_prealloc description in the commit being fixed has the two middle cases inverted and states its sizes in bytes where the code counts blocks. Corrected: khorenko@: logic is the following: if FALLOC_FL_PREALLOCATE preallocation enabled for all "len" if !FALLOC_FL_PREALLOCATE if len <= falloc_prealloc preallocation enabled if falloc_prealloc < len <= EXT_UNWRITTEN_MAX_LEN preallocation disabled if len > EXT_UNWRITTEN_MAX_LEN preallocation enabled So if FALLOC_FL_PREALLOCATE is used, fallocate() behaves like write(), i.e. always uses preallocation, the falloc_prealloc value is ignored. If FALLOC_FL_PREALLOCATE is NOT used: - stock fallocate() disables preallocation for len sizes <= EXT_UNWRITTEN_MAX_LEN, that is 32767 blocks. - introduced falloc_prealloc allows to make an experiment: if we set non-zero falloc_prealloc parameter (in blocks), preallocation will be disabled for sizes falloc_prealloc .. EXT_UNWRITTEN_MAX_LEN. The idea behind: if you perform a small fallocate, you probably do not mean to fragment the file. Fixes: 275be8b96ddf ("fs/ext4: introduce FALLOC_FL_PREALLOCATE flag to fallocate") https://virtuozzo.atlassian.net/browse/VSTOR-142784 Signed-off-by: Alexey Kuznetsov Feature: ext4: preallocation flag for small fallocates --- v2 -> v3: commit message enhanced --- fs/ext4/extents.c | 3 ++- fs/open.c | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index b771cb594c061..38f50770f6585 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4769,7 +4769,8 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (ret) goto out_inode_lock; - if ((mode & FALLOC_FL_MODE_MASK) == FALLOC_FL_ALLOCATE_RANGE) { + if ((mode & FALLOC_FL_MODE_MASK) == FALLOC_FL_ALLOCATE_RANGE || + (mode & FALLOC_FL_MODE_MASK) == FALLOC_FL_PREALLOCATE) { ret = ext4_do_fallocate(file, offset, len, mode); goto out_inode_lock; } diff --git a/fs/open.c b/fs/open.c index 91f4785b89f3c..fc72ad09e7e81 100644 --- a/fs/open.c +++ b/fs/open.c @@ -267,6 +267,7 @@ int vfs_fallocate(struct file *file, int mode, loff_t offset, loff_t len) case FALLOC_FL_ALLOCATE_RANGE: case FALLOC_FL_UNSHARE_RANGE: case FALLOC_FL_ZERO_RANGE: + case FALLOC_FL_PREALLOCATE: break; case FALLOC_FL_PUNCH_HOLE: if (!(mode & FALLOC_FL_KEEP_SIZE)) -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel