that include some minor fixes and addresses all comments. Changelog: (most based on Vivek Goyal's comments) o renamed blkiocg_reset_write to blkiocg_reset_stats o more clarification in the documentation on io_service_time and io_wait_time o Initialize blkg->stats_lock o rename io_add_stat to blkio_add_stat and declare it static o use bool for direction and sync o derive direction and sync info from existing rq methods o use 12 for major:minor string length o define io_service_time better to cover the NCQ case o add a separate reset_stats interface o make the indexed stats a 2d array to simplify macro and function pointer code o blkio.time now exports in jiffies as before o Added stats description in patch description and Documentation/cgroup/blkio-controller.txt o Prefix all stats functions with blkio and make them static as applicable o replace IO_TYPE_MAX with IO_TYPE_TOTAL o Moved #define constant to top of blk-cgroup.c o Pass dev_t around instead of char * o Add note to documentation file about resetting stats o use BLK_CGROUP_MODULE in addition to BLK_CGROUP config option in #ifdef statements o Avoid struct request specific knowledge in blk-cgroup. blk-cgroup.h now has rq_direction() and rq_sync() functions which are used by CFQ and when using io-controller at a higher level, bio_* functions can be added.
Showing the changes to include/linux/blkdev.h (1 of 5 files). Show all
Unified · Split
| @@ -1209,9 +1209,27 @@ static inline void set_io_start_time_ns(struct request *req) · 1208 unmodified lines | ||
| 1209 | 1209 | { |
| 1210 | 1210 | req->io_start_time_ns = sched_clock(); |
| 1211 | 1211 | } |
| 1212 | + | |
| 1213 | +static inline uint64_t rq_start_time_ns(struct request *req) | |
| 1214 | +{ | |
| 1215 | + return req->start_time_ns; | |
| 1216 | +} | |
| 1217 | + | |
| 1218 | +static inline uint64_t rq_io_start_time_ns(struct request *req) | |
| 1219 | +{ | |
| 1220 | + return req->io_start_time_ns; | |
| 1221 | +} | |
| 1212 | 1222 | #else |
| 1213 | 1223 | static inline void set_start_time_ns(struct request *req) {} |
| 1214 | 1224 | static inline void set_io_start_time_ns(struct request *req) {} |
| 1225 | +static inline uint64_t rq_start_time_ns(struct request *req) | |
| 1226 | +{ | |
| 1227 | + return 0; | |
| 1228 | +} | |
| 1229 | +static inline uint64_t rq_io_start_time_ns(struct request *req) | |
| 1230 | +{ | |
| 1231 | + return 0; | |
| 1232 | +} | |
| 1215 | 1233 | #endif |
| 1216 | 1234 | |
| 1217 | 1235 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |