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