cregit-Linux how code gets into the kernel

Release 4.13 block/blk-wbt.h

Directory: block
#ifndef WB_THROTTLE_H

#define WB_THROTTLE_H

#include <linux/kernel.h>
#include <linux/atomic.h>
#include <linux/wait.h>
#include <linux/timer.h>
#include <linux/ktime.h>

#include "blk-stat.h"


enum wbt_flags {
	
WBT_TRACKED		= 1,	/* write, tracked for throttling */
	
WBT_READ		= 2,	/* read */
	
WBT_KSWAPD		= 4,	/* write, from kswapd */

	
WBT_NR_BITS		= 3,	/* number of bits */
};

enum {
	
WBT_NUM_RWQ		= 2,
};

/*
 * Enable states. Either off, or on by default (done at init time),
 * or on through manual setup in sysfs.
 */
enum {
	
WBT_STATE_ON_DEFAULT	= 1,
	
WBT_STATE_ON_MANUAL	= 2,
};


static inline void wbt_clear_state(struct blk_issue_stat *stat) { stat->stat &= ~BLK_STAT_RES_MASK; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe1684.21%150.00%
Shaohua Li315.79%150.00%
Total19100.00%2100.00%


static inline enum wbt_flags wbt_stat_to_mask(struct blk_issue_stat *stat) { return (stat->stat & BLK_STAT_RES_MASK) >> BLK_STAT_RES_SHIFT; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe2187.50%150.00%
Shaohua Li312.50%150.00%
Total24100.00%2100.00%


static inline void wbt_track(struct blk_issue_stat *stat, enum wbt_flags wb_acct) { stat->stat |= ((u64) wb_acct) << BLK_STAT_RES_SHIFT; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe2793.10%150.00%
Shaohua Li26.90%150.00%
Total29100.00%2100.00%


static inline bool wbt_is_tracked(struct blk_issue_stat *stat) { return (stat->stat >> BLK_STAT_RES_SHIFT) & WBT_TRACKED; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe2191.30%150.00%
Shaohua Li28.70%150.00%
Total23100.00%2100.00%


static inline bool wbt_is_read(struct blk_issue_stat *stat) { return (stat->stat >> BLK_STAT_RES_SHIFT) & WBT_READ; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe2191.30%150.00%
Shaohua Li28.70%150.00%
Total23100.00%2100.00%

struct rq_wait { wait_queue_head_t wait; atomic_t inflight; }; struct rq_wb { /* * Settings that govern how we throttle */ unsigned int wb_background; /* background writeback */ unsigned int wb_normal; /* normal writeback */ unsigned int wb_max; /* max throughput writeback */ int scale_step; bool scaled_max; short enable_state; /* WBT_STATE_* */ /* * Number of consecutive periods where we don't have enough * information to make a firm scale up/down decision. */ unsigned int unknown_cnt; u64 win_nsec; /* default window size */ u64 cur_win_nsec; /* current window size */ struct blk_stat_callback *cb; s64 sync_issue; void *sync_cookie; unsigned int wc; unsigned int queue_depth; unsigned long last_issue; /* last non-throttled issue */ unsigned long last_comp; /* last non-throttled comp */ unsigned long min_lat_nsec; struct request_queue *queue; struct rq_wait rq_wait[WBT_NUM_RWQ]; };
static inline unsigned int wbt_inflight(struct rq_wb *rwb) { unsigned int i, ret = 0; for (i = 0; i < WBT_NUM_RWQ; i++) ret += atomic_read(&rwb->rq_wait[i].inflight); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe52100.00%1100.00%
Total52100.00%1100.00%

#ifdef CONFIG_BLK_WBT void __wbt_done(struct rq_wb *, enum wbt_flags); void wbt_done(struct rq_wb *, struct blk_issue_stat *); enum wbt_flags wbt_wait(struct rq_wb *, struct bio *, spinlock_t *); int wbt_init(struct request_queue *); void wbt_exit(struct request_queue *); void wbt_update_limits(struct rq_wb *); void wbt_requeue(struct rq_wb *, struct blk_issue_stat *); void wbt_issue(struct rq_wb *, struct blk_issue_stat *); void wbt_disable_default(struct request_queue *); void wbt_enable_default(struct request_queue *); void wbt_set_queue_depth(struct rq_wb *, unsigned int); void wbt_set_write_cache(struct rq_wb *, bool); u64 wbt_default_latency_nsec(struct request_queue *); #else
static inline void __wbt_done(struct rq_wb *rwb, enum wbt_flags flags) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe15100.00%1100.00%
Total15100.00%1100.00%


static inline void wbt_done(struct rq_wb *rwb, struct blk_issue_stat *stat) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe16100.00%1100.00%
Total16100.00%1100.00%


static inline enum wbt_flags wbt_wait(struct rq_wb *rwb, struct bio *bio, spinlock_t *lock) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe25100.00%1100.00%
Total25100.00%1100.00%


static inline int wbt_init(struct request_queue *q) { return -EINVAL; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe16100.00%1100.00%
Total16100.00%1100.00%


static inline void wbt_exit(struct request_queue *q) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe11100.00%1100.00%
Total11100.00%1100.00%


static inline void wbt_update_limits(struct rq_wb *rwb) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe11100.00%1100.00%
Total11100.00%1100.00%


static inline void wbt_requeue(struct rq_wb *rwb, struct blk_issue_stat *stat) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe16100.00%1100.00%
Total16100.00%1100.00%


static inline void wbt_issue(struct rq_wb *rwb, struct blk_issue_stat *stat) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe16100.00%1100.00%
Total16100.00%1100.00%


static inline void wbt_disable_default(struct request_queue *q) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe763.64%266.67%
Jan Kara436.36%133.33%
Total11100.00%3100.00%


static inline void wbt_enable_default(struct request_queue *q) { }

Contributors

PersonTokensPropCommitsCommitProp
Jan Kara763.64%133.33%
Jens Axboe436.36%266.67%
Total11100.00%3100.00%


static inline void wbt_set_queue_depth(struct rq_wb *rwb, unsigned int depth) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe15100.00%1100.00%
Total15100.00%1100.00%


static inline void wbt_set_write_cache(struct rq_wb *rwb, bool wc) { }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe14100.00%1100.00%
Total14100.00%1100.00%


static inline u64 wbt_default_latency_nsec(struct request_queue *q) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe15100.00%1100.00%
Total15100.00%1100.00%

#endif /* CONFIG_BLK_WBT */ #endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Jens Axboe63994.95%562.50%
Jan Kara192.82%112.50%
Shaohua Li121.78%112.50%
Omar Sandoval30.45%112.50%
Total673100.00%8100.00%
Directory: block
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.