* [PATCH] f2fs: fix the fault of calculating blkstart twice
@ 2017-03-04 1:12 Kinglong Mee
2017-03-08 1:11 ` Jaegeuk Kim
0 siblings, 1 reply; 5+ messages in thread
From: Kinglong Mee @ 2017-03-04 1:12 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: linux-f2fs-devel
When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
calculated twice.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
---
fs/f2fs/segment.c | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 4bd7a8b..ed181d1 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -772,11 +772,6 @@ static int __f2fs_issue_discard_async(struct f2fs_sb_info *sbi,
trace_f2fs_issue_discard(bdev, blkstart, blklen);
- if (sbi->s_ndevs) {
- int devi = f2fs_target_device_index(sbi, blkstart);
-
- blkstart -= FDEV(devi).start_blk;
- }
err = __blkdev_issue_discard(bdev,
SECTOR_FROM_BLOCK(blkstart),
SECTOR_FROM_BLOCK(blklen),
@@ -796,12 +791,6 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
struct block_device *bdev, block_t blkstart, block_t blklen)
{
sector_t sector, nr_sects;
- int devi = 0;
-
- if (sbi->s_ndevs) {
- devi = f2fs_target_device_index(sbi, blkstart);
- blkstart -= FDEV(devi).start_blk;
- }
/*
* We need to know the type of the zone: for conventional zones,
@@ -822,8 +811,8 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
if (sector & (bdev_zone_sectors(bdev) - 1) ||
nr_sects != bdev_zone_sectors(bdev)) {
f2fs_msg(sbi->sb, KERN_INFO,
- "(%d) %s: Unaligned discard attempted (block %x + %x)",
- devi, sbi->s_ndevs ? FDEV(devi).path: "",
+ "Dev(%u:%u): Unaligned discard attempted (block %x + %x)",
+ MAJOR(bdev->bd_dev), MINOR(bdev->bd_dev),
blkstart, blklen);
return -EIO;
}
@@ -840,6 +829,13 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
static int __issue_discard_async(struct f2fs_sb_info *sbi,
struct block_device *bdev, block_t blkstart, block_t blklen)
{
+ int devi = 0;
+
+ if (sbi->s_ndevs) {
+ devi = f2fs_target_device_index(sbi, blkstart);
+ blkstart -= FDEV(devi).start_blk;
+ }
+
#ifdef CONFIG_BLK_DEV_ZONED
if (f2fs_sb_mounted_blkzoned(sbi->sb) &&
bdev_zoned_model(bdev) != BLK_ZONED_NONE)
--
2.9.3
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] f2fs: fix the fault of calculating blkstart twice
2017-03-04 1:12 [PATCH] f2fs: fix the fault of calculating blkstart twice Kinglong Mee
@ 2017-03-08 1:11 ` Jaegeuk Kim
2017-03-08 1:53 ` Kinglong Mee
0 siblings, 1 reply; 5+ messages in thread
From: Jaegeuk Kim @ 2017-03-08 1:11 UTC (permalink / raw)
To: Kinglong Mee; +Cc: linux-f2fs-devel
Hi,
On 03/04, Kinglong Mee wrote:
> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
> calculated twice.
>
> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
> ---
> fs/f2fs/segment.c | 22 +++++++++-------------
> 1 file changed, 9 insertions(+), 13 deletions(-)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 4bd7a8b..ed181d1 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -772,11 +772,6 @@ static int __f2fs_issue_discard_async(struct f2fs_sb_info *sbi,
>
> trace_f2fs_issue_discard(bdev, blkstart, blklen);
>
> - if (sbi->s_ndevs) {
> - int devi = f2fs_target_device_index(sbi, blkstart);
> -
> - blkstart -= FDEV(devi).start_blk;
> - }
No, you can't do this, since the blkstart will be used for dc->lstart.
So, it needs to do like this?
>From 01cfee96f3568590ba58f6d2b36150dce7054491 Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <jaegeuk@kernel.org>
Date: Tue, 7 Mar 2017 16:32:35 -0800
Subject: [PATCH] f2fs: fix the fault of calculating blkstart twice
When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
calculated twice.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/segment.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 401f25de80fb..2c512c6aa6f3 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -818,11 +818,6 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
sector_t sector, nr_sects;
int devi = 0;
- if (sbi->s_ndevs) {
- devi = f2fs_target_device_index(sbi, blkstart);
- blkstart -= FDEV(devi).start_blk;
- }
-
/*
* We need to know the type of the zone: for conventional zones,
* use regular discard if the drive supports it. For sequential
@@ -836,6 +831,12 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
return __f2fs_issue_discard_async(sbi, bdev, blkstart, blklen);
case BLK_ZONE_TYPE_SEQWRITE_REQ:
case BLK_ZONE_TYPE_SEQWRITE_PREF:
+
+ if (sbi->s_ndevs) {
+ devi = f2fs_target_device_index(sbi, blkstart);
+ blkstart -= FDEV(devi).start_blk;
+ }
+
sector = SECTOR_FROM_BLOCK(blkstart);
nr_sects = SECTOR_FROM_BLOCK(blklen);
--
2.11.0
------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] f2fs: fix the fault of calculating blkstart twice
2017-03-08 1:11 ` Jaegeuk Kim
@ 2017-03-08 1:53 ` Kinglong Mee
2017-03-08 2:07 ` Jaegeuk Kim
2017-03-09 6:53 ` Chao Yu
0 siblings, 2 replies; 5+ messages in thread
From: Kinglong Mee @ 2017-03-08 1:53 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: linux-f2fs-devel
On 3/8/2017 09:11, Jaegeuk Kim wrote:
> Hi,
>
> On 03/04, Kinglong Mee wrote:
>> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
>> calculated twice.
>>
>> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
>> ---
>> fs/f2fs/segment.c | 22 +++++++++-------------
>> 1 file changed, 9 insertions(+), 13 deletions(-)
>>
>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>> index 4bd7a8b..ed181d1 100644
>> --- a/fs/f2fs/segment.c
>> +++ b/fs/f2fs/segment.c
>> @@ -772,11 +772,6 @@ static int __f2fs_issue_discard_async(struct f2fs_sb_info *sbi,
>>
>> trace_f2fs_issue_discard(bdev, blkstart, blklen);
>>
>> - if (sbi->s_ndevs) {
>> - int devi = f2fs_target_device_index(sbi, blkstart);
>> -
>> - blkstart -= FDEV(devi).start_blk;
>> - }
>
> No, you can't do this, since the blkstart will be used for dc->lstart.
> So, it needs to do like this?
Sorry, I miss that.
But, get_blkz_type() needs the new blkaddr for blkz_type as
"FDEV(i).blkz_type[zno]", so that, the blkaddr must be calculated
in front of __f2fs_issue_discard_zone, just like this?
>From efd182428830898cc31d49f74d4bd2ab7455cec4 Mon Sep 17 00:00:00 2001
From: Kinglong Mee <kinglongmee@gmail.com>
Date: Wed, 8 Mar 2017 09:49:53 +0800
Subject: [PATCH] f2fs: fix the fault of calculating blkstart twice
When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
calculated twice.
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/segment.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 401f25d..dbd2e7a 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -816,6 +816,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
struct block_device *bdev, block_t blkstart, block_t blklen)
{
sector_t sector, nr_sects;
+ block_t lblkstart = blkstart;
int devi = 0;
if (sbi->s_ndevs) {
@@ -833,7 +834,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
case BLK_ZONE_TYPE_CONVENTIONAL:
if (!blk_queue_discard(bdev_get_queue(bdev)))
return 0;
- return __f2fs_issue_discard_async(sbi, bdev, blkstart, blklen);
+ return __f2fs_issue_discard_async(sbi, bdev, lblkstart, blklen);
case BLK_ZONE_TYPE_SEQWRITE_REQ:
case BLK_ZONE_TYPE_SEQWRITE_PREF:
sector = SECTOR_FROM_BLOCK(blkstart);
--
2.9.3
------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] f2fs: fix the fault of calculating blkstart twice
2017-03-08 1:53 ` Kinglong Mee
@ 2017-03-08 2:07 ` Jaegeuk Kim
2017-03-09 6:53 ` Chao Yu
1 sibling, 0 replies; 5+ messages in thread
From: Jaegeuk Kim @ 2017-03-08 2:07 UTC (permalink / raw)
To: Kinglong Mee; +Cc: linux-f2fs-devel
On 03/08, Kinglong Mee wrote:
> On 3/8/2017 09:11, Jaegeuk Kim wrote:
> > Hi,
> >
> > On 03/04, Kinglong Mee wrote:
> >> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
> >> calculated twice.
> >>
> >> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
> >> ---
> >> fs/f2fs/segment.c | 22 +++++++++-------------
> >> 1 file changed, 9 insertions(+), 13 deletions(-)
> >>
> >> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> >> index 4bd7a8b..ed181d1 100644
> >> --- a/fs/f2fs/segment.c
> >> +++ b/fs/f2fs/segment.c
> >> @@ -772,11 +772,6 @@ static int __f2fs_issue_discard_async(struct f2fs_sb_info *sbi,
> >>
> >> trace_f2fs_issue_discard(bdev, blkstart, blklen);
> >>
> >> - if (sbi->s_ndevs) {
> >> - int devi = f2fs_target_device_index(sbi, blkstart);
> >> -
> >> - blkstart -= FDEV(devi).start_blk;
> >> - }
> >
> > No, you can't do this, since the blkstart will be used for dc->lstart.
> > So, it needs to do like this?
>
> Sorry, I miss that.
>
> But, get_blkz_type() needs the new blkaddr for blkz_type as
> "FDEV(i).blkz_type[zno]", so that, the blkaddr must be calculated
> in front of __f2fs_issue_discard_zone, just like this?
Alright~
Added this. ;)
Thanks,
>
> >From efd182428830898cc31d49f74d4bd2ab7455cec4 Mon Sep 17 00:00:00 2001
> From: Kinglong Mee <kinglongmee@gmail.com>
> Date: Wed, 8 Mar 2017 09:49:53 +0800
> Subject: [PATCH] f2fs: fix the fault of calculating blkstart twice
>
> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
> calculated twice.
>
> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/segment.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 401f25d..dbd2e7a 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -816,6 +816,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
> struct block_device *bdev, block_t blkstart, block_t blklen)
> {
> sector_t sector, nr_sects;
> + block_t lblkstart = blkstart;
> int devi = 0;
>
> if (sbi->s_ndevs) {
> @@ -833,7 +834,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
> case BLK_ZONE_TYPE_CONVENTIONAL:
> if (!blk_queue_discard(bdev_get_queue(bdev)))
> return 0;
> - return __f2fs_issue_discard_async(sbi, bdev, blkstart, blklen);
> + return __f2fs_issue_discard_async(sbi, bdev, lblkstart, blklen);
> case BLK_ZONE_TYPE_SEQWRITE_REQ:
> case BLK_ZONE_TYPE_SEQWRITE_PREF:
> sector = SECTOR_FROM_BLOCK(blkstart);
> --
> 2.9.3
>
------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] f2fs: fix the fault of calculating blkstart twice
2017-03-08 1:53 ` Kinglong Mee
2017-03-08 2:07 ` Jaegeuk Kim
@ 2017-03-09 6:53 ` Chao Yu
1 sibling, 0 replies; 5+ messages in thread
From: Chao Yu @ 2017-03-09 6:53 UTC (permalink / raw)
To: Kinglong Mee, Jaegeuk Kim; +Cc: linux-f2fs-devel
On 2017/3/8 9:53, Kinglong Mee wrote:
> On 3/8/2017 09:11, Jaegeuk Kim wrote:
>> Hi,
>>
>> On 03/04, Kinglong Mee wrote:
>>> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
>>> calculated twice.
>>>
>>> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
>>> ---
>>> fs/f2fs/segment.c | 22 +++++++++-------------
>>> 1 file changed, 9 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>> index 4bd7a8b..ed181d1 100644
>>> --- a/fs/f2fs/segment.c
>>> +++ b/fs/f2fs/segment.c
>>> @@ -772,11 +772,6 @@ static int __f2fs_issue_discard_async(struct f2fs_sb_info *sbi,
>>>
>>> trace_f2fs_issue_discard(bdev, blkstart, blklen);
>>>
>>> - if (sbi->s_ndevs) {
>>> - int devi = f2fs_target_device_index(sbi, blkstart);
>>> -
>>> - blkstart -= FDEV(devi).start_blk;
>>> - }
>>
>> No, you can't do this, since the blkstart will be used for dc->lstart.
>> So, it needs to do like this?
>
> Sorry, I miss that.
>
> But, get_blkz_type() needs the new blkaddr for blkz_type as
> "FDEV(i).blkz_type[zno]", so that, the blkaddr must be calculated
> in front of __f2fs_issue_discard_zone, just like this?
>
>>From efd182428830898cc31d49f74d4bd2ab7455cec4 Mon Sep 17 00:00:00 2001
> From: Kinglong Mee <kinglongmee@gmail.com>
> Date: Wed, 8 Mar 2017 09:49:53 +0800
> Subject: [PATCH] f2fs: fix the fault of calculating blkstart twice
>
> When the zone type is BLK_ZONE_TYPE_CONVENTIONAL, the blkstart is
> calculated twice.
>
> Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Thanks,
> ---
> fs/f2fs/segment.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 401f25d..dbd2e7a 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -816,6 +816,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
> struct block_device *bdev, block_t blkstart, block_t blklen)
> {
> sector_t sector, nr_sects;
> + block_t lblkstart = blkstart;
> int devi = 0;
>
> if (sbi->s_ndevs) {
> @@ -833,7 +834,7 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi,
> case BLK_ZONE_TYPE_CONVENTIONAL:
> if (!blk_queue_discard(bdev_get_queue(bdev)))
> return 0;
> - return __f2fs_issue_discard_async(sbi, bdev, blkstart, blklen);
> + return __f2fs_issue_discard_async(sbi, bdev, lblkstart, blklen);
> case BLK_ZONE_TYPE_SEQWRITE_REQ:
> case BLK_ZONE_TYPE_SEQWRITE_PREF:
> sector = SECTOR_FROM_BLOCK(blkstart);
>
------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-03-09 6:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-04 1:12 [PATCH] f2fs: fix the fault of calculating blkstart twice Kinglong Mee
2017-03-08 1:11 ` Jaegeuk Kim
2017-03-08 1:53 ` Kinglong Mee
2017-03-08 2:07 ` Jaegeuk Kim
2017-03-09 6:53 ` 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).