Re: [PATCH] quota: set init_needed flag only when successfully getting dquot

2019-04-29 Thread cgxu519

On 4/30/19 5:49 AM, Jan Kara wrote:

On Sun 28-04-19 13:39:21, Chengguang Xu wrote:

Set init_needed flag only when successfully getting dquot,
so that we can skip unnecessary subsequent operation.

Signed-off-by: Chengguang Xu 

Thanks for the patch but I don't think it's really useful. It will be very
rare that we race with quotaoff of dqget() fails due to error. So the
additional overhead of iterating over dquots doesn't really matter in that
case.


Hi Jan,

Thanks for the comment, I got it.

Chengguang.



Re: [PATCH] quota: set init_needed flag only when successfully getting dquot

2019-04-29 Thread Jan Kara
On Sun 28-04-19 13:39:21, Chengguang Xu wrote:
> Set init_needed flag only when successfully getting dquot,
> so that we can skip unnecessary subsequent operation.
> 
> Signed-off-by: Chengguang Xu 

Thanks for the patch but I don't think it's really useful. It will be very
rare that we race with quotaoff of dqget() fails due to error. So the
additional overhead of iterating over dquots doesn't really matter in that
case.

Honza

> ---
>  fs/quota/dquot.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
> index fc20e06c56ba..8d4ce2a2b5c8 100644
> --- a/fs/quota/dquot.c
> +++ b/fs/quota/dquot.c
> @@ -1449,8 +1449,6 @@ static int __dquot_initialize(struct inode *inode, int 
> type)
>   if (!sb_has_quota_active(sb, cnt))
>   continue;
> 
> - init_needed = 1;
> -
>   switch (cnt) {
>   case USRQUOTA:
>   qid = make_kqid_uid(inode->i_uid);
> @@ -1475,6 +1473,9 @@ static int __dquot_initialize(struct inode *inode, int 
> type)
>   dquot = NULL;
>   }
>   got[cnt] = dquot;
> +
> + if (got[cnt])
> + init_needed = 1;
>   }
> 
>   /* All required i_dquot has been initialized */
> --
> 2.20.1
> 
> 
-- 
Jan Kara 
SUSE Labs, CR


[PATCH] quota: set init_needed flag only when successfully getting dquot

2019-04-27 Thread Chengguang Xu
Set init_needed flag only when successfully getting dquot,
so that we can skip unnecessary subsequent operation.

Signed-off-by: Chengguang Xu 
---
 fs/quota/dquot.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index fc20e06c56ba..8d4ce2a2b5c8 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1449,8 +1449,6 @@ static int __dquot_initialize(struct inode *inode, int 
type)
if (!sb_has_quota_active(sb, cnt))
continue;

-   init_needed = 1;
-
switch (cnt) {
case USRQUOTA:
qid = make_kqid_uid(inode->i_uid);
@@ -1475,6 +1473,9 @@ static int __dquot_initialize(struct inode *inode, int 
type)
dquot = NULL;
}
got[cnt] = dquot;
+
+   if (got[cnt])
+   init_needed = 1;
}

/* All required i_dquot has been initialized */
--
2.20.1