In order to correctly account/limit space usage, should initialize
quota info before calling quota related functions.
Signed-off-by: Chengguang Xu <[email protected]>
---
fs/ext2/xattr.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
index 943cc469f42f..913e5c4921ec 100644
--- a/fs/ext2/xattr.c
+++ b/fs/ext2/xattr.c
@@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,
name_len = strlen(name);
if (name_len > 255 || value_len > sb->s_blocksize)
return -ERANGE;
+ error = dquot_initialize(inode);
+ if (error)
+ return error;
down_write(&EXT2_I(inode)->xattr_sem);
if (EXT2_I(inode)->i_file_acl) {
/* The inode already has an extended attribute block. */
--
2.26.2
On 6/26/20 11:19 AM, Chengguang Xu wrote:
> In order to correctly account/limit space usage, should initialize
> quota info before calling quota related functions.
How did you encounter the problem?
Any test case got hit?
>
> Signed-off-by: Chengguang Xu <[email protected]>
LGTM, feel free to add
Reviewed-by: Reviewed-by: Ritesh Harjani <[email protected]>
> ---
> fs/ext2/xattr.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
> index 943cc469f42f..913e5c4921ec 100644
> --- a/fs/ext2/xattr.c
> +++ b/fs/ext2/xattr.c
> @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,
> name_len = strlen(name);
> if (name_len > 255 || value_len > sb->s_blocksize)
> return -ERANGE;
> + error = dquot_initialize(inode);
> + if (error)
> + return error;
> down_write(&EXT2_I(inode)->xattr_sem);
> if (EXT2_I(inode)->i_file_acl) {
> /* The inode already has an extended attribute block. */
>
On Wed 08-07-20 16:22:01, Ritesh Harjani wrote:
>
>
> On 6/26/20 11:19 AM, Chengguang Xu wrote:
> > In order to correctly account/limit space usage, should initialize
> > quota info before calling quota related functions.
>
> How did you encounter the problem?
> Any test case got hit?
>
> >
> > Signed-off-by: Chengguang Xu <[email protected]>
>
> LGTM, feel free to add
> Reviewed-by: Reviewed-by: Ritesh Harjani <[email protected]>
Thanks. I've added the patch to my tree.
Honza
>
>
> > ---
> > fs/ext2/xattr.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
> > index 943cc469f42f..913e5c4921ec 100644
> > --- a/fs/ext2/xattr.c
> > +++ b/fs/ext2/xattr.c
> > @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int name_index, const char *name,
> > name_len = strlen(name);
> > if (name_len > 255 || value_len > sb->s_blocksize)
> > return -ERANGE;
> > + error = dquot_initialize(inode);
> > + if (error)
> > + return error;
> > down_write(&EXT2_I(inode)->xattr_sem);
> > if (EXT2_I(inode)->i_file_acl) {
> > /* The inode already has an extended attribute block. */
> >
>
--
Jan Kara <[email protected]>
SUSE Labs, CR
在 7/8/2020 6:52 PM, Ritesh Harjani 写道:
>
>
> On 6/26/20 11:19 AM, Chengguang Xu wrote:
>> In order to correctly account/limit space usage, should initialize
>> quota info before calling quota related functions.
>
> How did you encounter the problem?
> Any test case got hit?
I found the issue by code inspecting when I was learning mbcache logic.
Thanks,
cgxu
>
>>
>> Signed-off-by: Chengguang Xu <[email protected]>
>
> LGTM, feel free to add
> Reviewed-by: Reviewed-by: Ritesh Harjani <[email protected]>
>
>
>> ---
>> fs/ext2/xattr.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
>> index 943cc469f42f..913e5c4921ec 100644
>> --- a/fs/ext2/xattr.c
>> +++ b/fs/ext2/xattr.c
>> @@ -437,6 +437,9 @@ ext2_xattr_set(struct inode *inode, int
>> name_index, const char *name,
>> name_len = strlen(name);
>> if (name_len > 255 || value_len > sb->s_blocksize)
>> return -ERANGE;
>> + error = dquot_initialize(inode);
>> + if (error)
>> + return error;
>> down_write(&EXT2_I(inode)->xattr_sem);
>> if (EXT2_I(inode)->i_file_acl) {
>> /* The inode already has an extended attribute block. */
>>