2012-05-15 14:46:45

by Namjae Jeon

[permalink] [raw]
Subject: [PATCH 2/2] fat: use fat_msg_ratelimit in fat__get_entry.

When application tried to lookup(opendir/readdir/stat) 5000 files in plugging usb device formatted by FAT, If unplugging usb device while lookup files, so many message occured like the below log. and currently it make app slow.
So this patch use fat_msg_ratelimit function about this message to decrease this messages.

#> ./file_lookup_testcase ./files_directory/
[ 57.768000] usb 2-1.4: USB disconnect, device number 4
[ 57.812000] FAT-fs (sda1): FAT read failed (blocknr 2631)
stat failed
[ 57.816000] FAT-fs (sda1): Directory bread(block 396816) failed
[ 57.824000] FAT-fs (sda1): Directory bread(block 396817) failed
: No such file [ 57.832000] FAT-fs (sda1): Directory bread(block 396818) failed
or directory
[ 57.840000] FAT-fs (sda1): Directory bread(block 396819) failed
[ 57.848000] FAT-fs (sda1): Directory bread(block 396820) failed
[ 57.860000] FAT-fs (sda1): Directory bread(block 396821) failed
[ 57.876000] FAT-fs (sda1): Directory bread(block 396822) failed
[ 57.892000] FAT-fs (sda1): Directory bread(block 396823) failed
[ 57.904000] FAT-fs (sda1): Directory bread(block 406824) failed
[ 57.920000] FAT-fs (sda1): Directory bread(block 406825) failed
[ 57.932000] FAT-fs (sda1): Directory bread(block 406826) failed
[ 57.940000] FAT-fs (sda1): Directory bread(block 406827) failed
[ 57.952000] FAT-fs (sda1): Directory bread(block 406828) failed
[ 57.960000] FAT-fs (sda1): Directory bread(block 406829) failed
[ 57.964000] FAT-fs (sda1): Directory bread(block 406830) failed
[ 57.972000] FAT-fs (sda1): Directory bread(block 406831) failed
[ 57.976000] FAT-fs (sda1): Directory bread(block 417696) failed
[ 57.984000] FAT-fs (sda1): Directory bread(block 417697) failed
[ 57.988000] FAT-fs (sda1): Directory bread(block 417698) failed
[ 57.996000] FAT-fs (sda1): Directory bread(block 417699) failed
[ 58.000000] FAT-fs (sda1): Directory bread(block 417700) failed
[ 58.004000] FAT-fs (sda1): Directory bread(block 417701) failed
[ 58.012000] FAT-fs (sda1): Directory bread(block 417702) failed
[ 58.016000] FAT-fs (sda1): Directory bread(block 417703) failed
[ 58.024000] FAT-fs (sda1): FAT read failed (blocknr 2631)
stat[ 58.028000] FAT-fs (sda1): Directory bread(block 396816) failed
[ 58.036000] FAT-fs (sda1): Directory bread(block 396817) failed
[ 58.040000] FAT-fs (sda1): Directory bread(block 396818) failed
[ 58.048000] FAT-fs (sda1): Directory bread(block 396819) failed
[ 58.052000] FAT-fs (sda1): Directory bread(block 396820) failed
[ 58.060000] FAT-fs (sda1): Directory bread(block 396821) failed

Signed-off-by: Namjae Jeon <[email protected]>
Signed-off-by: Amit Sahrawat <[email protected]>
Acked-by: OGAWA Hirofumi <[email protected]>
---
fs/fat/dir.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/fat/dir.c b/fs/fat/dir.c
index aca191b..6eaa28c 100644
--- a/fs/fat/dir.c
+++ b/fs/fat/dir.c
@@ -98,8 +98,8 @@ next:

*bh = sb_bread(sb, phys);
if (*bh == NULL) {
- fat_msg(sb, KERN_ERR, "Directory bread(block %llu) failed",
- (llu)phys);
+ fat_msg_ratelimit(sb, KERN_ERR,
+ "Directory bread(block %llu) failed", (llu)phys);
/* skip this block */
*pos = (iblock + 1) << sb->s_blocksize_bits;
goto next;
--
1.7.5.4


2012-05-15 15:11:37

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: [PATCH 2/2] fat: use fat_msg_ratelimit in fat__get_entry.

Namjae Jeon <[email protected]> writes:

> When application tried to lookup(opendir/readdir/stat) 5000 files in plugging usb device formatted by FAT, If unplugging usb device while lookup files, so many message occured like the below log. and currently it make app slow.
> So this patch use fat_msg_ratelimit function about this message to decrease this messages.
>
> #> ./file_lookup_testcase ./files_directory/
> [ 57.768000] usb 2-1.4: USB disconnect, device number 4

[...]

> [ 58.040000] FAT-fs (sda1): Directory bread(block 396818) failed
> [ 58.048000] FAT-fs (sda1): Directory bread(block 396819) failed
> [ 58.052000] FAT-fs (sda1): Directory bread(block 396820) failed
> [ 58.060000] FAT-fs (sda1): Directory bread(block 396821) failed

Thanks.

Please handle those patches, Andrew.

> Signed-off-by: Namjae Jeon <[email protected]>
> Signed-off-by: Amit Sahrawat <[email protected]>
> Acked-by: OGAWA Hirofumi <[email protected]>
> ---
> fs/fat/dir.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/fat/dir.c b/fs/fat/dir.c
> index aca191b..6eaa28c 100644
> --- a/fs/fat/dir.c
> +++ b/fs/fat/dir.c
> @@ -98,8 +98,8 @@ next:
>
> *bh = sb_bread(sb, phys);
> if (*bh == NULL) {
> - fat_msg(sb, KERN_ERR, "Directory bread(block %llu) failed",
> - (llu)phys);
> + fat_msg_ratelimit(sb, KERN_ERR,
> + "Directory bread(block %llu) failed", (llu)phys);
> /* skip this block */
> *pos = (iblock + 1) << sb->s_blocksize_bits;
> goto next;

--
OGAWA Hirofumi <[email protected]>