e2fsck: properly account cluster size

Message ID 20180212120040.25441-1-artem.blagodarenko@gmail.com
State Rejected
Headers show
Series
  • e2fsck: properly account cluster size
Related show

Commit Message

Artem Blagodarenko Feb. 12, 2018, noon
From: Andrew Perepechko <anserper@ya.ru>

The patch fixes the quota_data_add() call so that
not num_blocks * block_size is passed, but instead
num_blocks * blocks_per_cluster * block_size.

Otherwise, any trivial test with -O bigalloc,quota
filesystem leads to check errors like

[QUOTA WARNING] Usage inconsistent for ID 0:actual (8192, 2) != expected
(131072, 2)
Update quota info for quota type 0<y>? cancelled!
[QUOTA WARNING] Usage inconsistent for ID 0:actual (8192, 2) != expected
(131072, 2)
Update quota info for quota type 1<y>? cancelled!

Cray-bug-id: LUS-5373

Signed-off-by: Andrew Perepechko <anserper@ya.ru>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
---
 e2fsck/pass1.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Artem Blagodarenko Feb. 15, 2018, 2:45 p.m. | #1
Sorry, this patch is duplicate of
[PATCH] e2fsck: fix quota accounting to use cluster units
from Eric W at 5 April.


> On 12 Feb 2018, at 15:00, Artem Blagodarenko <artem.blagodarenko@gmail.com> wrote:
> 
> From: Andrew Perepechko <anserper@ya.ru>
> 
> The patch fixes the quota_data_add() call so that
> not num_blocks * block_size is passed, but instead
> num_blocks * blocks_per_cluster * block_size.
> 
> Otherwise, any trivial test with -O bigalloc,quota
> filesystem leads to check errors like
> 
> [QUOTA WARNING] Usage inconsistent for ID 0:actual (8192, 2) != expected
> (131072, 2)
> Update quota info for quota type 0<y>? cancelled!
> [QUOTA WARNING] Usage inconsistent for ID 0:actual (8192, 2) != expected
> (131072, 2)
> Update quota info for quota type 1<y>? cancelled!
> 
> Cray-bug-id: LUS-5373
> 
> Signed-off-by: Andrew Perepechko <anserper@ya.ru>
> Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
> ---
> e2fsck/pass1.c | 2 ++
> 1 file changed, 2 insertions(+)
> 
> diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
> index 5015d938..471162ea 100644
> --- a/e2fsck/pass1.c
> +++ b/e2fsck/pass1.c
> @@ -3387,6 +3387,8 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
> 		}
> 	}
> 
> +	pb.num_blocks *= EXT2FS_CLUSTER_RATIO(fs);
> +
> 	if (ino != quota_type2inum(PRJQUOTA, fs->super) &&
> 	    (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super)) &&
> 	    !(inode->i_flags & EXT4_EA_INODE_FL)) {
> -- 
> 2.14.3 (Apple Git-98)
>
Theodore Y. Ts'o Feb. 15, 2018, 6:41 p.m. | #2
On Thu, Feb 15, 2018 at 05:45:34PM +0300, Благодаренко Артём wrote:
> Sorry, this patch is duplicate of
> [PATCH] e2fsck: fix quota accounting to use cluster units
> from Eric W at 5 April.

... and which is e2fsprogs 1.43.5 and newer....

    	      	 	   	      - Ted

Patch

diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 5015d938..471162ea 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -3387,6 +3387,8 @@  static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
 		}
 	}
 
+	pb.num_blocks *= EXT2FS_CLUSTER_RATIO(fs);
+
 	if (ino != quota_type2inum(PRJQUOTA, fs->super) &&
 	    (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super)) &&
 	    !(inode->i_flags & EXT4_EA_INODE_FL)) {