Skip to content

Commit ecb5427

Browse files
fdmananakdave
authored andcommitted
btrfs: fix uninitialized return value from btrfs_reclaim_sweep()
The return variable 'ret' at btrfs_reclaim_sweep() is never assigned if none of the space infos is reclaimable (for example if periodic reclaim is disabled, which is the default), so we return an undefined value. This can be fixed my making btrfs_reclaim_sweep() not return any value as well as do_reclaim_sweep() because: 1) do_reclaim_sweep() always returns 0, so we can make it return void; 2) The only caller of btrfs_reclaim_sweep() (btrfs_reclaim_bgs()) doesn't care about its return value, and in its context there's nothing to do about any errors anyway. Therefore remove the return value from btrfs_reclaim_sweep() and do_reclaim_sweep(). Fixes: e4ca393 ("btrfs: periodic block_group reclaim") Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 10d9d8c commit ecb5427

2 files changed

Lines changed: 6 additions & 13 deletions

File tree

fs/btrfs/space-info.c

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,8 +1985,8 @@ static bool is_reclaim_urgent(struct btrfs_space_info *space_info)
19851985
return unalloc < data_chunk_size;
19861986
}
19871987

1988-
static int do_reclaim_sweep(struct btrfs_fs_info *fs_info,
1989-
struct btrfs_space_info *space_info, int raid)
1988+
static void do_reclaim_sweep(struct btrfs_fs_info *fs_info,
1989+
struct btrfs_space_info *space_info, int raid)
19901990
{
19911991
struct btrfs_block_group *bg;
19921992
int thresh_pct;
@@ -2031,7 +2031,6 @@ static int do_reclaim_sweep(struct btrfs_fs_info *fs_info,
20312031
}
20322032

20332033
up_read(&space_info->groups_sem);
2034-
return 0;
20352034
}
20362035

20372036
void btrfs_space_info_update_reclaimable(struct btrfs_space_info *space_info, s64 bytes)
@@ -2074,21 +2073,15 @@ bool btrfs_should_periodic_reclaim(struct btrfs_space_info *space_info)
20742073
return ret;
20752074
}
20762075

2077-
int btrfs_reclaim_sweep(struct btrfs_fs_info *fs_info)
2076+
void btrfs_reclaim_sweep(struct btrfs_fs_info *fs_info)
20782077
{
2079-
int ret;
20802078
int raid;
20812079
struct btrfs_space_info *space_info;
20822080

20832081
list_for_each_entry(space_info, &fs_info->space_info, list) {
20842082
if (!btrfs_should_periodic_reclaim(space_info))
20852083
continue;
2086-
for (raid = 0; raid < BTRFS_NR_RAID_TYPES; raid++) {
2087-
ret = do_reclaim_sweep(fs_info, space_info, raid);
2088-
if (ret)
2089-
return ret;
2090-
}
2084+
for (raid = 0; raid < BTRFS_NR_RAID_TYPES; raid++)
2085+
do_reclaim_sweep(fs_info, space_info, raid);
20912086
}
2092-
2093-
return ret;
20942087
}

fs/btrfs/space-info.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,6 @@ void btrfs_space_info_update_reclaimable(struct btrfs_space_info *space_info, s6
294294
void btrfs_set_periodic_reclaim_ready(struct btrfs_space_info *space_info, bool ready);
295295
bool btrfs_should_periodic_reclaim(struct btrfs_space_info *space_info);
296296
int btrfs_calc_reclaim_threshold(struct btrfs_space_info *space_info);
297-
int btrfs_reclaim_sweep(struct btrfs_fs_info *fs_info);
297+
void btrfs_reclaim_sweep(struct btrfs_fs_info *fs_info);
298298

299299
#endif /* BTRFS_SPACE_INFO_H */

0 commit comments

Comments
 (0)