summaryrefslogtreecommitdiff
path: root/libbcache/writeback.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-03-19 15:56:34 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-03-19 17:31:47 -0800
commit5ec39af8eaba49aee7bafa44c661da39e2f40dc3 (patch)
tree1fb1a981602cbf22c7d2b2dba1168c715d7cecb5 /libbcache/writeback.h
parentbb1941de5378a7b8122d3575dcbc7d0aeb6326f0 (diff)
Rename from bcache-tools to bcachefs-tools
Diffstat (limited to 'libbcache/writeback.h')
-rw-r--r--libbcache/writeback.h122
1 files changed, 0 insertions, 122 deletions
diff --git a/libbcache/writeback.h b/libbcache/writeback.h
deleted file mode 100644
index 82ce306e..00000000
--- a/libbcache/writeback.h
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef _BCACHE_WRITEBACK_H
-#define _BCACHE_WRITEBACK_H
-
-#include "blockdev.h"
-#include "buckets.h"
-
-#define CUTOFF_WRITEBACK 60
-#define CUTOFF_WRITEBACK_SYNC 30
-
-static inline uint64_t bcache_dev_sectors_dirty(struct bcache_device *d)
-{
- uint64_t i, ret = 0;
-
- for (i = 0; i < d->nr_stripes; i++)
- ret += atomic_read(d->stripe_sectors_dirty + i);
-
- return ret;
-}
-
-static inline unsigned offset_to_stripe(struct bcache_device *d,
- uint64_t offset)
-{
- do_div(offset, d->stripe_size);
- return offset;
-}
-
-static inline bool bcache_dev_stripe_dirty(struct cached_dev *dc,
- uint64_t offset,
- unsigned nr_sectors)
-{
- unsigned stripe = offset_to_stripe(&dc->disk, offset);
-
- while (1) {
- if (atomic_read(dc->disk.stripe_sectors_dirty + stripe))
- return true;
-
- if (nr_sectors <= dc->disk.stripe_size)
- return false;
-
- nr_sectors -= dc->disk.stripe_size;
- stripe++;
- }
-}
-
-static inline bool should_writeback(struct cached_dev *dc, struct bio *bio,
- unsigned cache_mode, bool would_skip)
-{
- struct bch_fs *c = dc->disk.c;
- u64 available = sectors_available(c);
-
- if (cache_mode != CACHE_MODE_WRITEBACK ||
- test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags) ||
- available * 100 < c->capacity * CUTOFF_WRITEBACK_SYNC)
- return false;
-
- if (dc->partial_stripes_expensive &&
- bcache_dev_stripe_dirty(dc, bio->bi_iter.bi_sector,
- bio_sectors(bio)))
- return true;
-
- if (would_skip)
- return false;
-
- return bio->bi_opf & REQ_SYNC ||
- available * 100 < c->capacity * CUTOFF_WRITEBACK;
-}
-
-static inline void bch_writeback_queue(struct cached_dev *dc)
-{
- if (!IS_ERR_OR_NULL(dc->writeback_thread))
- wake_up_process(dc->writeback_thread);
-}
-
-static inline void bch_writeback_add(struct cached_dev *dc)
-{
- if (!atomic_read(&dc->has_dirty) &&
- !atomic_xchg(&dc->has_dirty, 1)) {
- atomic_inc(&dc->count);
-
- if (BDEV_STATE(dc->disk_sb.sb) != BDEV_STATE_DIRTY) {
- SET_BDEV_STATE(dc->disk_sb.sb, BDEV_STATE_DIRTY);
- /* XXX: should do this synchronously */
- bch_write_bdev_super(dc, NULL);
- }
-
- bch_writeback_queue(dc);
- }
-}
-
-#ifndef NO_BCACHE_WRITEBACK
-
-void bcache_dev_sectors_dirty_add(struct bch_fs *, unsigned, u64, int);
-
-void bch_writeback_recalc_oldest_gens(struct bch_fs *);
-void bch_sectors_dirty_init(struct cached_dev *, struct bch_fs *c);
-
-void bch_cached_dev_writeback_stop(struct cached_dev *);
-void bch_cached_dev_writeback_free(struct cached_dev *);
-int bch_cached_dev_writeback_init(struct cached_dev *);
-int bch_cached_dev_writeback_start(struct cached_dev *);
-
-#else
-
-static inline void bcache_dev_sectors_dirty_add(struct bch_fs *c,
- unsigned i, u64 o, int n) {}
-static inline void bch_writeback_recalc_oldest_gens(struct bch_fs *c) {}
-static inline void bch_sectors_dirty_init(struct cached_dev *dc,
- struct bch_fs *c) {}
-static inline void bch_cached_dev_writeback_stop(struct cached_dev *dc) {}
-static inline void bch_cached_dev_writeback_free(struct cached_dev *dc) {}
-static inline int bch_cached_dev_writeback_init(struct cached_dev *dc)
-{
- return 0;
-}
-static inline int bch_cached_dev_writeback_start(struct cached_dev *dc)
-{
- return 0;
-}
-
-#endif
-
-#endif