* [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write
@ 2017-10-19 16:56 Jaegeuk Kim
2017-10-19 16:56 ` [PATCH 2/2] f2fs: relax EIO injection for quota file Jaegeuk Kim
2017-10-22 15:02 ` [f2fs-dev] [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Chao Yu
0 siblings, 2 replies; 8+ messages in thread
From: Jaegeuk Kim @ 2017-10-19 16:56 UTC (permalink / raw)
To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim
This gives another chance to read or write quota data.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/super.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index fc3b74e53670..2c6e9adce464 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1351,8 +1351,13 @@ static ssize_t f2fs_quota_read(struct super_block *sb, int type, char *data,
tocopy = min_t(unsigned long, sb->s_blocksize - offset, toread);
repeat:
page = read_mapping_page(mapping, blkidx, NULL);
- if (IS_ERR(page))
+ if (IS_ERR(page)) {
+ if (PTR_ERR(page) == -ENOMEM) {
+ congestion_wait(BLK_RW_ASYNC, HZ/50);
+ goto repeat;
+ }
return PTR_ERR(page);
+ }
lock_page(page);
@@ -1395,10 +1400,14 @@ static ssize_t f2fs_quota_write(struct super_block *sb, int type,
while (towrite > 0) {
tocopy = min_t(unsigned long, sb->s_blocksize - offset,
towrite);
-
+retry:
err = a_ops->write_begin(NULL, mapping, off, tocopy, 0,
&page, NULL);
if (unlikely(err)) {
+ if (err == -ENOMEM) {
+ congestion_wait(BLK_RW_ASYNC, HZ/50);
+ goto retry;
+ }
if (len == towrite)
return err;
break;
--
2.14.0.rc1.383.gd1ce394fe2-goog
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-19 16:56 [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Jaegeuk Kim
@ 2017-10-19 16:56 ` Jaegeuk Kim
2017-10-22 15:11 ` [f2fs-dev] " Chao Yu
2017-10-22 15:02 ` [f2fs-dev] [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Chao Yu
1 sibling, 1 reply; 8+ messages in thread
From: Jaegeuk Kim @ 2017-10-19 16:56 UTC (permalink / raw)
To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim
This case is not happening easily.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/f2fs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index e0ef31cb2cc6..6301ccca8888 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
return ret;
#ifdef CONFIG_F2FS_FAULT_INJECTION
- if (time_to_inject(sbi, FAULT_BLOCK)) {
+ if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
f2fs_show_injection_info(FAULT_BLOCK);
release = *count;
goto enospc;
--
2.14.0.rc1.383.gd1ce394fe2-goog
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write
2017-10-19 16:56 [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Jaegeuk Kim
2017-10-19 16:56 ` [PATCH 2/2] f2fs: relax EIO injection for quota file Jaegeuk Kim
@ 2017-10-22 15:02 ` Chao Yu
1 sibling, 0 replies; 8+ messages in thread
From: Chao Yu @ 2017-10-22 15:02 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
On 2017/10/20 0:56, Jaegeuk Kim wrote:
> This gives another chance to read or write quota data.
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Thanks,
> ---
> fs/f2fs/super.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index fc3b74e53670..2c6e9adce464 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -1351,8 +1351,13 @@ static ssize_t f2fs_quota_read(struct super_block *sb, int type, char *data,
> tocopy = min_t(unsigned long, sb->s_blocksize - offset, toread);
> repeat:
> page = read_mapping_page(mapping, blkidx, NULL);
> - if (IS_ERR(page))
> + if (IS_ERR(page)) {
> + if (PTR_ERR(page) == -ENOMEM) {
> + congestion_wait(BLK_RW_ASYNC, HZ/50);
> + goto repeat;
> + }
> return PTR_ERR(page);
> + }
>
> lock_page(page);
>
> @@ -1395,10 +1400,14 @@ static ssize_t f2fs_quota_write(struct super_block *sb, int type,
> while (towrite > 0) {
> tocopy = min_t(unsigned long, sb->s_blocksize - offset,
> towrite);
> -
> +retry:
> err = a_ops->write_begin(NULL, mapping, off, tocopy, 0,
> &page, NULL);
> if (unlikely(err)) {
> + if (err == -ENOMEM) {
> + congestion_wait(BLK_RW_ASYNC, HZ/50);
> + goto retry;
> + }
> if (len == towrite)
> return err;
> break;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-19 16:56 ` [PATCH 2/2] f2fs: relax EIO injection for quota file Jaegeuk Kim
@ 2017-10-22 15:11 ` Chao Yu
2017-10-22 16:51 ` Jaegeuk Kim
0 siblings, 1 reply; 8+ messages in thread
From: Chao Yu @ 2017-10-22 15:11 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
On 2017/10/20 0:56, Jaegeuk Kim wrote:
> This case is not happening easily.
Actually it can happen, so why not just keep it?
Thanks,
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/f2fs.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index e0ef31cb2cc6..6301ccca8888 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
> return ret;
>
> #ifdef CONFIG_F2FS_FAULT_INJECTION
> - if (time_to_inject(sbi, FAULT_BLOCK)) {
> + if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
> f2fs_show_injection_info(FAULT_BLOCK);
> release = *count;
> goto enospc;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-22 15:11 ` [f2fs-dev] " Chao Yu
@ 2017-10-22 16:51 ` Jaegeuk Kim
2017-10-28 9:22 ` Chao Yu
0 siblings, 1 reply; 8+ messages in thread
From: Jaegeuk Kim @ 2017-10-22 16:51 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-kernel, linux-fsdevel, linux-f2fs-devel
On 10/22, Chao Yu wrote:
> On 2017/10/20 0:56, Jaegeuk Kim wrote:
> > This case is not happening easily.
>
> Actually it can happen, so why not just keep it?
Okay, so let me keep this patch for local stress tests only.
Thanks,
>
> Thanks,
>
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/f2fs.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> > index e0ef31cb2cc6..6301ccca8888 100644
> > --- a/fs/f2fs/f2fs.h
> > +++ b/fs/f2fs/f2fs.h
> > @@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
> > return ret;
> >
> > #ifdef CONFIG_F2FS_FAULT_INJECTION
> > - if (time_to_inject(sbi, FAULT_BLOCK)) {
> > + if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
> > f2fs_show_injection_info(FAULT_BLOCK);
> > release = *count;
> > goto enospc;
> >
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-22 16:51 ` Jaegeuk Kim
@ 2017-10-28 9:22 ` Chao Yu
2017-10-30 9:21 ` Jaegeuk Kim
0 siblings, 1 reply; 8+ messages in thread
From: Chao Yu @ 2017-10-28 9:22 UTC (permalink / raw)
To: Jaegeuk Kim, Chao Yu; +Cc: linux-kernel, linux-fsdevel, linux-f2fs-devel
Hi Jaegeuk,
On 2017/10/23 0:51, Jaegeuk Kim wrote:
> On 10/22, Chao Yu wrote:
>> On 2017/10/20 0:56, Jaegeuk Kim wrote:
>>> This case is not happening easily.
>>
>> Actually it can happen, so why not just keep it?
>
> Okay, so let me keep this patch for local stress tests only.
May I ask which type and rate of fault injection you are using for
test now?
Thanks,
>
> Thanks,
>
>
>>
>> Thanks,
>>
>>>
>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>> ---
>>> fs/f2fs/f2fs.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>>> index e0ef31cb2cc6..6301ccca8888 100644
>>> --- a/fs/f2fs/f2fs.h
>>> +++ b/fs/f2fs/f2fs.h
>>> @@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
>>> return ret;
>>>
>>> #ifdef CONFIG_F2FS_FAULT_INJECTION
>>> - if (time_to_inject(sbi, FAULT_BLOCK)) {
>>> + if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
>>> f2fs_show_injection_info(FAULT_BLOCK);
>>> release = *count;
>>> goto enospc;
>>>
>
> .
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-28 9:22 ` Chao Yu
@ 2017-10-30 9:21 ` Jaegeuk Kim
2017-10-30 9:43 ` Chao Yu
0 siblings, 1 reply; 8+ messages in thread
From: Jaegeuk Kim @ 2017-10-30 9:21 UTC (permalink / raw)
To: Chao Yu; +Cc: Chao Yu, linux-kernel, linux-fsdevel, linux-f2fs-devel
On 10/28, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2017/10/23 0:51, Jaegeuk Kim wrote:
> > On 10/22, Chao Yu wrote:
> >> On 2017/10/20 0:56, Jaegeuk Kim wrote:
> >>> This case is not happening easily.
> >>
> >> Actually it can happen, so why not just keep it?
> >
> > Okay, so let me keep this patch for local stress tests only.
>
> May I ask which type and rate of fault injection you are using for
> test now?
I select random value between 3000 and 5000, and 255 for type.
Thanks,
>
> Thanks,
>
> >
> > Thanks,
> >
> >
> >>
> >> Thanks,
> >>
> >>>
> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >>> ---
> >>> fs/f2fs/f2fs.h | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> >>> index e0ef31cb2cc6..6301ccca8888 100644
> >>> --- a/fs/f2fs/f2fs.h
> >>> +++ b/fs/f2fs/f2fs.h
> >>> @@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
> >>> return ret;
> >>>
> >>> #ifdef CONFIG_F2FS_FAULT_INJECTION
> >>> - if (time_to_inject(sbi, FAULT_BLOCK)) {
> >>> + if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
> >>> f2fs_show_injection_info(FAULT_BLOCK);
> >>> release = *count;
> >>> goto enospc;
> >>>
> >
> > .
> >
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: relax EIO injection for quota file
2017-10-30 9:21 ` Jaegeuk Kim
@ 2017-10-30 9:43 ` Chao Yu
0 siblings, 0 replies; 8+ messages in thread
From: Chao Yu @ 2017-10-30 9:43 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: Chao Yu, linux-kernel, linux-fsdevel, linux-f2fs-devel
On 2017/10/30 17:21, Jaegeuk Kim wrote:
> On 10/28, Chao Yu wrote:
>> Hi Jaegeuk,
>>
>> On 2017/10/23 0:51, Jaegeuk Kim wrote:
>>> On 10/22, Chao Yu wrote:
>>>> On 2017/10/20 0:56, Jaegeuk Kim wrote:
>>>>> This case is not happening easily.
>>>>
>>>> Actually it can happen, so why not just keep it?
>>>
>>> Okay, so let me keep this patch for local stress tests only.
>>
>> May I ask which type and rate of fault injection you are using for
>> test now?
>
> I select random value between 3000 and 5000, and 255 for type.
Got it, thanks for your sharing. :)
Thanks,
>
> Thanks,
>
>>
>> Thanks,
>>
>>>
>>> Thanks,
>>>
>>>
>>>>
>>>> Thanks,
>>>>
>>>>>
>>>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>>>> ---
>>>>> fs/f2fs/f2fs.h | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>>>>> index e0ef31cb2cc6..6301ccca8888 100644
>>>>> --- a/fs/f2fs/f2fs.h
>>>>> +++ b/fs/f2fs/f2fs.h
>>>>> @@ -1544,7 +1544,7 @@ static inline int inc_valid_block_count(struct f2fs_sb_info *sbi,
>>>>> return ret;
>>>>>
>>>>> #ifdef CONFIG_F2FS_FAULT_INJECTION
>>>>> - if (time_to_inject(sbi, FAULT_BLOCK)) {
>>>>> + if (!IS_NOQUOTA(inode) && time_to_inject(sbi, FAULT_BLOCK)) {
>>>>> f2fs_show_injection_info(FAULT_BLOCK);
>>>>> release = *count;
>>>>> goto enospc;
>>>>>
>>>
>>> .
>>>
>
> .
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-10-30 9:43 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-19 16:56 [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Jaegeuk Kim
2017-10-19 16:56 ` [PATCH 2/2] f2fs: relax EIO injection for quota file Jaegeuk Kim
2017-10-22 15:11 ` [f2fs-dev] " Chao Yu
2017-10-22 16:51 ` Jaegeuk Kim
2017-10-28 9:22 ` Chao Yu
2017-10-30 9:21 ` Jaegeuk Kim
2017-10-30 9:43 ` Chao Yu
2017-10-22 15:02 ` [f2fs-dev] [PATCH 1/2] f2fs: retry ENOMEM for quota_read|write Chao Yu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).