2012-11-03 06:29:07

by Namjae Jeon

[permalink] [raw]
Subject: [PATCH v2 3/3] fat: warn when discard request fails other than EOPNOTSUPP

FAT also warn user then the discard request fails
as ext4(http://patchwork.ozlabs.org/patch/192669/)

Signed-off-by: Namjae Jeon <[email protected]>
Signed-off-by: Amit Sahrawat <[email protected]>
---
fs/fat/fatent.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c
index 260705c..fc1f407 100644
--- a/fs/fat/fatent.c
+++ b/fs/fat/fatent.c
@@ -583,12 +583,15 @@ int fat_free_clusters(struct inode *inode, int cluster)
*/
if (cluster != fatent.entry + 1) {
int nr_clus = fatent.entry - first_cl + 1;
-
- sb_issue_discard(sb,
- fat_clus_to_blknr(sbi, first_cl),
- nr_clus * sbi->sec_per_clus,
- GFP_NOFS, 0);
-
+ sector_t sblk = fat_clus_to_blknr(sbi, first_cl);
+ sector_t nrblk = nr_clus * sbi->sec_per_clus;
+
+ err = sb_issue_discard(sb,
+ sblk, nrblk, GFP_NOFS, 0);
+ if (err && err != -EOPNOTSUPP)
+ fat_msg(sb, KERN_WARNING, "discard request for"
+ " block:%llu count:%llu failed"
+ " with %d", sblk, nrblk, err);
first_cl = cluster;
}
}
--
1.7.9.5


2012-11-05 10:53:55

by OGAWA Hirofumi

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] fat: warn when discard request fails other than EOPNOTSUPP

Namjae Jeon <[email protected]> writes:

> FAT also warn user then the discard request fails
> as ext4(http://patchwork.ozlabs.org/patch/192669/)

Why don't we do this at block layer like normal bio?

> Signed-off-by: Namjae Jeon <[email protected]>
> Signed-off-by: Amit Sahrawat <[email protected]>
> ---
> fs/fat/fatent.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c
> index 260705c..fc1f407 100644
> --- a/fs/fat/fatent.c
> +++ b/fs/fat/fatent.c
> @@ -583,12 +583,15 @@ int fat_free_clusters(struct inode *inode, int cluster)
> */
> if (cluster != fatent.entry + 1) {
> int nr_clus = fatent.entry - first_cl + 1;
> -
> - sb_issue_discard(sb,
> - fat_clus_to_blknr(sbi, first_cl),
> - nr_clus * sbi->sec_per_clus,
> - GFP_NOFS, 0);
> -
> + sector_t sblk = fat_clus_to_blknr(sbi, first_cl);
> + sector_t nrblk = nr_clus * sbi->sec_per_clus;
> +
> + err = sb_issue_discard(sb,
> + sblk, nrblk, GFP_NOFS, 0);
> + if (err && err != -EOPNOTSUPP)
> + fat_msg(sb, KERN_WARNING, "discard request for"
> + " block:%llu count:%llu failed"
> + " with %d", sblk, nrblk, err);
> first_cl = cluster;
> }
> }

--
OGAWA Hirofumi <[email protected]>

2012-11-11 11:39:29

by Namjae Jeon

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] fat: warn when discard request fails other than EOPNOTSUPP

2012/11/5 OGAWA Hirofumi <[email protected]>:
> Namjae Jeon <[email protected]> writes:
>
>> FAT also warn user then the discard request fails
>> as ext4(http://patchwork.ozlabs.org/patch/192669/)
>
> Why don't we do this at block layer like normal bio?
Yes, maybe it will be better than doing in filesystem.
I will check more.
Thanks.
>
>> Signed-off-by: Namjae Jeon <[email protected]>
>> Signed-off-by: Amit Sahrawat <[email protected]>
>> ---
>> fs/fat/fatent.c | 15 +++++++++------
>> 1 file changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c
>> index 260705c..fc1f407 100644
>> --- a/fs/fat/fatent.c
>> +++ b/fs/fat/fatent.c
>> @@ -583,12 +583,15 @@ int fat_free_clusters(struct inode *inode, int cluster)
>> */
>> if (cluster != fatent.entry + 1) {
>> int nr_clus = fatent.entry - first_cl + 1;
>> -
>> - sb_issue_discard(sb,
>> - fat_clus_to_blknr(sbi, first_cl),
>> - nr_clus * sbi->sec_per_clus,
>> - GFP_NOFS, 0);
>> -
>> + sector_t sblk = fat_clus_to_blknr(sbi, first_cl);
>> + sector_t nrblk = nr_clus * sbi->sec_per_clus;
>> +
>> + err = sb_issue_discard(sb,
>> + sblk, nrblk, GFP_NOFS, 0);
>> + if (err && err != -EOPNOTSUPP)
>> + fat_msg(sb, KERN_WARNING, "discard request for"
>> + " block:%llu count:%llu failed"
>> + " with %d", sblk, nrblk, err);
>> first_cl = cluster;
>> }
>> }
>
> --
> OGAWA Hirofumi <[email protected]>