[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <9CF60D02-FF10-44FF-A31E-D4E99F627AF2@dilger.ca>
Date: Mon, 21 Dec 2015 10:27:37 -0700
From: Andreas Dilger <adilger@...ger.ca>
To: lokesh jaliminche <lokesh.jaliminche@...il.com>
Cc: linux-ext4@...r.kernel.org
Subject: Re: [PATCH] EXT4: optimizing group serch for inode allocation
On Dec 18, 2015, at 4:32 PM, lokesh jaliminche <lokesh.jaliminche@...il.com> wrote:
>
> From 9e09fef78b2fa552c883bf8124af873abfde0805 Mon Sep 17 00:00:00 2001
> From: Lokesh Nagappa Jaliminche <lokesh.jaliminche@...gate.com>
In the patch summary there is a typo - s/serch/search/
Also, it appears your email client has mangled the whitespace in the
patch. Please use "git send-email" to send your patch to the list:
git send-email --to tytso@....edu --cc linux-ext4@...r.kernel.org HEAD~1
so that it arrives intact. You probably need to set it up in ~/.gitconfig:
[sendemail]
confirm = compose
smtpdomain = {your client hostname}
smtpserver = {your SMTP server hostname}
Cheers, Andreas
> Added a check at the start of group search loop to
> avoid looping unecessarily in case of empty group.
> This also allow group search to jump directly to
> "found_flex_bg" with "stats" and "group" already set,
> so there is no need to go through the extra steps of
> setting "best_desc" and "best_group" and then break
> out of the loop just to set "stats" and "group" again.
>
> Signed-off-by: Lokesh N Jaliminche <lokesh.jaliminche@...il.com>
> ---
> fs/ext4/ialloc.c | 8 ++++++++
> 1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
> index 1b8024d..588bf8e 100644
> --- a/fs/ext4/ialloc.c
> +++ b/fs/ext4/ialloc.c
> @@ -446,6 +446,8 @@ static int find_group_orlov(struct super_block
> *sb, struct inode *parent,
> struct ext4_sb_info *sbi = EXT4_SB(sb);
> ext4_group_t real_ngroups = ext4_get_groups_count(sb);
> int inodes_per_group = EXT4_INODES_PER_GROUP(sb);
> + unsigned int inodes_per_flex_group;
> + long unsigned int blocks_per_clustre;
> unsigned int freei, avefreei, grp_free;
> ext4_fsblk_t freeb, avefreec;
> unsigned int ndirs;
> @@ -470,6 +472,8 @@ static int find_group_orlov(struct super_block
> *sb, struct inode *parent,
> percpu_counter_read_positive(&sbi->s_freeclusters_counter));
> avefreec = freeb;
> do_div(avefreec, ngroups);
> + inodes_per_flex_group = inodes_per_group * flex_size;
> + blocks_per_clustre = sbi->s_blocks_per_group * flex_size;
> ndirs = percpu_counter_read_positive(&sbi->s_dirs_counter);
>
> if (S_ISDIR(mode) &&
> @@ -489,6 +493,10 @@ static int find_group_orlov(struct super_block
> *sb, struct inode *parent,
> for (i = 0; i < ngroups; i++) {
> g = (parent_group + i) % ngroups;
> get_orlov_stats(sb, g, flex_size, &stats);
> + /* the group can't get any better than empty */
> + if (inodes_per_flex_group == stats.free_inodes &&
> + blocks_per_clustre == stats.free_clusters)
> + goto found_flex_bg;
> if (!stats.free_inodes)
> continue;
> if (stats.used_dirs >= best_ndir)
> --
> 1.7.1
> <0001-EXT4-optimizing-group-serch-for-inode-allocation.patch>
Cheers, Andreas
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists