diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2020-11-04 09:45:53 +0000 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2020-12-08 15:54:05 +0100 |
commit | df903e5d294f62e07280566e0afe9403a92879f0 (patch) | |
tree | 83f7e6680135e2de402852ee7a48d260726bc7ad /fs/btrfs/ctree.h | |
parent | 6e88f116bd4cf34406fc70a6d6bf5b4d49e1ab2d (diff) | |
download | lwn-df903e5d294f62e07280566e0afe9403a92879f0.tar.gz lwn-df903e5d294f62e07280566e0afe9403a92879f0.zip |
btrfs: don't miss async discards after scheduled work override
If btrfs_discard_schedule_work() is called with override=true, it sets
delay anew regardless how much time is left until the timer should have
fired. If delays are long (that can happen, for example, with low
kbps_limit), they might get constantly overridden without having a
chance to run the discard work.
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index fbbfe8afa980..461d1d52aaba 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -469,6 +469,7 @@ struct btrfs_discard_ctl { struct btrfs_block_group *block_group; struct list_head discard_list[BTRFS_NR_DISCARD_LISTS]; u64 prev_discard; + u64 prev_discard_time; atomic_t discardable_extents; atomic64_t discardable_bytes; u64 max_discard_size; |