diff mbox series

btrfs: Simplify len alignment calculation

Message ID 20191129093807.525-1-nborisov@suse.com (mailing list archive)
State New, archived
Headers show
Series btrfs: Simplify len alignment calculation | expand

Commit Message

Nikolay Borisov Nov. 29, 2019, 9:38 a.m. UTC
Use ALIGN() directly rather than achieving the same thing in a roundabout way.
No semantic changes.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/delalloc-space.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--
2.17.1

Comments

Omar Sandoval Dec. 3, 2019, 7:52 a.m. UTC | #1
On Fri, Nov 29, 2019 at 11:38:07AM +0200, Nikolay Borisov wrote:
> Use ALIGN() directly rather than achieving the same thing in a roundabout way.
> No semantic changes.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---
>  fs/btrfs/delalloc-space.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
> index 4cdac4d834f5..c08e905b0424 100644
> --- a/fs/btrfs/delalloc-space.c
> +++ b/fs/btrfs/delalloc-space.c
> @@ -142,8 +142,7 @@ int btrfs_check_data_free_space(struct inode *inode,
>  	int ret;
> 
>  	/* align the range */
> -	len = round_up(start + len, fs_info->sectorsize) -
> -	      round_down(start, fs_info->sectorsize);
> +	len = ALIGN(len, fs_info->sectorsize);

Consider sectorsize = 4096, start = 4095, len = 2. This range spans two
blocks, which is what the original compuation gives. Yours returns one
block instead.
Nikolay Borisov Dec. 3, 2019, 8:06 a.m. UTC | #2
On 3.12.19 г. 9:52 ч., Omar Sandoval wrote:
> On Fri, Nov 29, 2019 at 11:38:07AM +0200, Nikolay Borisov wrote:
>> Use ALIGN() directly rather than achieving the same thing in a roundabout way.
>> No semantic changes.
>>
>> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
>> ---
>>  fs/btrfs/delalloc-space.c | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
>> index 4cdac4d834f5..c08e905b0424 100644
>> --- a/fs/btrfs/delalloc-space.c
>> +++ b/fs/btrfs/delalloc-space.c
>> @@ -142,8 +142,7 @@ int btrfs_check_data_free_space(struct inode *inode,
>>  	int ret;
>>
>>  	/* align the range */
>> -	len = round_up(start + len, fs_info->sectorsize) -
>> -	      round_down(start, fs_info->sectorsize);
>> +	len = ALIGN(len, fs_info->sectorsize);
> 
> Consider sectorsize = 4096, start = 4095, len = 2. This range spans two
> blocks, which is what the original compuation gives. Yours returns one
> block instead.
> 

Doh, you are right. I copied this approach from your [RFC PATCH v3
09/12] btrfs: support different disk extent size for delalloc patch.
Doesn't it suffer from the same bug?
diff mbox series

Patch

diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 4cdac4d834f5..c08e905b0424 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -142,8 +142,7 @@  int btrfs_check_data_free_space(struct inode *inode,
 	int ret;

 	/* align the range */
-	len = round_up(start + len, fs_info->sectorsize) -
-	      round_down(start, fs_info->sectorsize);
+	len = ALIGN(len, fs_info->sectorsize);
 	start = round_down(start, fs_info->sectorsize);

 	ret = btrfs_alloc_data_chunk_ondemand(BTRFS_I(inode), len);