From patchwork Tue Dec 30 23:41:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1133 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138304; bh=aLe3RM6+uT9W1qyKrcMdHuW3lkGXWAR6YuMJq53EQXo=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=cho2pUkP3VU6Xu1vu6B6k6NFFeqw9Ltl5qPBZDe7JRTjwHSaTQrZFoSXecrr+1DDd MsYsucg0fHHLugngKzSYqqrpB3IAFieDTkCc96QIwnrUvhNzY+EHmgBXtyfMkeGuYJ 4uiv7MyRU+gktMZuv7k0IIdt8026d4RnjAxlvtugmYDDP5bxPN0xZW4d2UrBd+2+aH /JaZ0cL5ndt4h0JaUI1EARmlF5x76HQEFwmSGIyXVnZAM1n6v9kgAbUWsAUaj4RZt1 7lx5sbCBq6RpxCBDXYe5chLYqe4tq6UMhbDMwDhLrXMYfDuvzkshs5uS1/O72PjuTN gzIm3saqa65Bw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D2C1368F8E for ; Tue, 30 Dec 2025 16:45:04 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id CC8cf_Npr1De for ; Tue, 30 Dec 2025 16:45:04 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138304; bh=aLe3RM6+uT9W1qyKrcMdHuW3lkGXWAR6YuMJq53EQXo=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=cho2pUkP3VU6Xu1vu6B6k6NFFeqw9Ltl5qPBZDe7JRTjwHSaTQrZFoSXecrr+1DDd MsYsucg0fHHLugngKzSYqqrpB3IAFieDTkCc96QIwnrUvhNzY+EHmgBXtyfMkeGuYJ 4uiv7MyRU+gktMZuv7k0IIdt8026d4RnjAxlvtugmYDDP5bxPN0xZW4d2UrBd+2+aH /JaZ0cL5ndt4h0JaUI1EARmlF5x76HQEFwmSGIyXVnZAM1n6v9kgAbUWsAUaj4RZt1 7lx5sbCBq6RpxCBDXYe5chLYqe4tq6UMhbDMwDhLrXMYfDuvzkshs5uS1/O72PjuTN gzIm3saqa65Bw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id B917B68C57 for ; Tue, 30 Dec 2025 16:45:04 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138302; bh=/yoq94/3OIeTYhhfbBOAFf8NquxxsEBMtUCbANBMafk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OUgb+yJnwr60ZmbDAwBawKy9NN//PMzhGwSSrp0Mf0zbLaAhw1+d1QUQxeJhAdcNm pNKnrlnhXGnBq6K9DC41hAZErNs9wlsKgAikFgVqxXyr/dCqDncOQxgvklKlnVcRqq 7PzUim5JNz7K4pOCTw47P7Pj+H23Wwz8r5p6QyjdXMK3bsB6YaUx1r6xmW805kJA4T gpeYwFY1uuwbFuYjdQpu80HNi1LIHjiJ3jZW/IRad6CN3krvHmpYbC6BgKUEN+SIaT kkPoR0pnQ6rUcXkkMF3k+mnz5yy8yYViGEo9BGnt7NDLxp5x48iAtSl4PipBSwSJed PlI8sFNZ/Q+BA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id DD98B68C57; Tue, 30 Dec 2025 16:45:02 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id n1qoE0qvwxlA; Tue, 30 Dec 2025 16:45:02 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1767138298; bh=jjQBUVGS/6HnMsnLH69hkJAHc3Ip4hdrfh3aQGoE8ao=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vEqMz9A0wdoIaQo/WtP6gHuckAuxj/V4EbGwSlQ1sIfBccYFUZm8AOhazrCmY3dYI vtUsn4Z7jN50Cy8GBh7wyFeooNpBO9bSPctAU2HrFderqB+o56He3m+RVhHJZQ8nyu oP5aoeAHsm1zvJzsR5hT4p8gEmNgGTAZ5j0//AKRQS5qgAH6F/W0ckpDGvgJN92aeN 77f4twEbEig1WIp0eACTDz8MEpYGCotVj+SrsJvIQNbOES1DwmBM/Uk7uUjCTBO0I8 F8mQi/SQ2tyq8UNSt+OLXS5Jf/xX3fGJOgQElELO/7oUYj0x5J/UyjTdnVc7QGEpZw rcvoJ7d4jAqCA== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 8644468C0F; Tue, 30 Dec 2025 16:44:58 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Tue, 30 Dec 2025 16:41:22 -0700 Message-ID: <20251230234134.906477-11-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251230234134.906477-1-sjg@u-boot.org> References: <20251230234134.906477-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: 6T3H2WZT55XY2FKXSBK3T2G6BEOOTMZP X-Message-ID-Hash: 6T3H2WZT55XY2FKXSBK3T2G6BEOOTMZP X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , Claude X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 10/15] ext4l: Fix dquot functions to update i_blocks List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The dquot_alloc_block(), dquot_free_block() and dquot_alloc_block_nofail() functions are stubs that do nothing. These functions are called by ext4 when allocating and freeing blocks, and they should update the inode's i_blocks field. Fix these functions to properly track block allocation in i_blocks, which is stored in 512-byte units. Co-developed-by: Claude Signed-off-by: Simon Glass --- fs/ext4l/ext4_uboot.h | 3 ++- fs/ext4l/stub.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h index 610fe34b556..c5eddca3aef 100644 --- a/fs/ext4l/ext4_uboot.h +++ b/fs/ext4l/ext4_uboot.h @@ -375,7 +375,8 @@ struct buffer_head *sb_getblk(struct super_block *sb, sector_t block); /* Quota operations - stubs (only define if quotaops.h not included) */ #ifndef _LINUX_QUOTAOPS_H -#define dquot_alloc_block_nofail(inode, nr) ({ (void)(inode); (void)(nr); 0; }) +#define dquot_alloc_block_nofail(inode, nr) \ + ({ (inode)->i_blocks += (nr) << ((inode)->i_blkbits - 9); 0; }) #define dquot_initialize(inode) ({ (void)(inode); 0; }) #define dquot_free_inode(inode) do { (void)(inode); } while (0) #define dquot_alloc_inode(inode) ({ (void)(inode); 0; }) diff --git a/fs/ext4l/stub.c b/fs/ext4l/stub.c index 2d066be4af3..ce68ec28b20 100644 --- a/fs/ext4l/stub.c +++ b/fs/ext4l/stub.c @@ -669,11 +669,22 @@ void dquot_free_space_nodirty(struct inode *inode, loff_t size) int dquot_alloc_block(struct inode *inode, loff_t nr) { + /* + * Update i_blocks to reflect the allocated blocks. + * i_blocks is in 512-byte units, so convert from fs blocks. + */ + inode->i_blocks += nr << (inode->i_blkbits - 9); + return 0; } void dquot_free_block(struct inode *inode, loff_t nr) { + /* + * Update i_blocks to reflect the freed blocks. + * i_blocks is in 512-byte units, so convert from fs blocks. + */ + inode->i_blocks -= nr << (inode->i_blkbits - 9); } /*