Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 309209
b: refs/heads/master
c: 5efd611
h: refs/heads/master
i:
  309207: a9e32d5
v: v3
  • Loading branch information
Tejun Heo authored and Jens Axboe committed Mar 6, 2012
1 parent c93a015 commit 11f87af
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7ee9c5620504906e98451dc9a1945b2b9e892cb8
refs/heads/master: 5efd611351d1a847c72d74fb12ff4bd187c0cb2c
42 changes: 42 additions & 0 deletions trunk/block/blk-cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <linux/genhd.h>
#include <linux/delay.h>
#include "blk-cgroup.h"
#include "blk.h"

#define MAX_KEY_LEN 100

Expand Down Expand Up @@ -1459,6 +1460,47 @@ blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup)
return &blkcg->css;
}

/**
* blkcg_init_queue - initialize blkcg part of request queue
* @q: request_queue to initialize
*
* Called from blk_alloc_queue_node(). Responsible for initializing blkcg
* part of new request_queue @q.
*
* RETURNS:
* 0 on success, -errno on failure.
*/
int blkcg_init_queue(struct request_queue *q)
{
might_sleep();

return blk_throtl_init(q);
}

/**
* blkcg_drain_queue - drain blkcg part of request_queue
* @q: request_queue to drain
*
* Called from blk_drain_queue(). Responsible for draining blkcg part.
*/
void blkcg_drain_queue(struct request_queue *q)
{
lockdep_assert_held(q->queue_lock);

blk_throtl_drain(q);
}

/**
* blkcg_exit_queue - exit and release blkcg part of request_queue
* @q: request_queue being released
*
* Called from blk_release_queue(). Responsible for exiting blkcg part.
*/
void blkcg_exit_queue(struct request_queue *q)
{
blk_throtl_exit(q);
}

/*
* We cannot support shared io contexts, as we have no mean to support
* two tasks with the same ioc in two different groups without major rework
Expand Down
7 changes: 7 additions & 0 deletions trunk/block/blk-cgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,10 @@ struct blkio_policy_type {
enum blkio_policy_id plid;
};

extern int blkcg_init_queue(struct request_queue *q);
extern void blkcg_drain_queue(struct request_queue *q);
extern void blkcg_exit_queue(struct request_queue *q);

/* Blkio controller policy registration */
extern void blkio_policy_register(struct blkio_policy_type *);
extern void blkio_policy_unregister(struct blkio_policy_type *);
Expand All @@ -233,6 +237,9 @@ struct blkio_group {
struct blkio_policy_type {
};

static inline int blkcg_init_queue(struct request_queue *q) { return 0; }
static inline void blkcg_drain_queue(struct request_queue *q) { }
static inline void blkcg_exit_queue(struct request_queue *q) { }
static inline void blkio_policy_register(struct blkio_policy_type *blkiop) { }
static inline void blkio_policy_unregister(struct blkio_policy_type *blkiop) { }
static inline void blkg_destroy_all(struct request_queue *q) { }
Expand Down
7 changes: 4 additions & 3 deletions trunk/block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <trace/events/block.h>

#include "blk.h"
#include "blk-cgroup.h"

EXPORT_TRACEPOINT_SYMBOL_GPL(block_bio_remap);
EXPORT_TRACEPOINT_SYMBOL_GPL(block_rq_remap);
Expand Down Expand Up @@ -280,7 +281,7 @@ EXPORT_SYMBOL(blk_stop_queue);
*
* This function does not cancel any asynchronous activity arising
* out of elevator or throttling code. That would require elevaotor_exit()
* and blk_throtl_exit() to be called with queue lock initialized.
* and blkcg_exit_queue() to be called with queue lock initialized.
*
*/
void blk_sync_queue(struct request_queue *q)
Expand Down Expand Up @@ -372,7 +373,7 @@ void blk_drain_queue(struct request_queue *q, bool drain_all)
if (q->elevator)
elv_drain_elevator(q);

blk_throtl_drain(q);
blkcg_drain_queue(q);

/*
* This function might be called on a queue which failed
Expand Down Expand Up @@ -562,7 +563,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
*/
q->queue_lock = &q->__queue_lock;

if (blk_throtl_init(q))
if (blkcg_init_queue(q))
goto fail_id;

return q;
Expand Down
4 changes: 2 additions & 2 deletions trunk/block/blk-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <linux/blktrace_api.h>

#include "blk.h"
#include "blk-cgroup.h"

struct queue_sysfs_entry {
struct attribute attr;
Expand Down Expand Up @@ -486,15 +487,14 @@ static void blk_release_queue(struct kobject *kobj)
elevator_exit(q->elevator);
}

blk_throtl_exit(q);
blkcg_exit_queue(q);

if (rl->rq_pool)
mempool_destroy(rl->rq_pool);

if (q->queue_tags)
__blk_queue_free_tags(q);

blk_throtl_release(q);
blk_trace_shutdown(q);

bdi_destroy(&q->backing_dev_info);
Expand Down
3 changes: 0 additions & 3 deletions trunk/block/blk-throttle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1226,10 +1226,7 @@ void blk_throtl_exit(struct request_queue *q)
* it.
*/
throtl_shutdown_wq(q);
}

void blk_throtl_release(struct request_queue *q)
{
kfree(q->td);
}

Expand Down
2 changes: 0 additions & 2 deletions trunk/block/blk.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,6 @@ extern bool blk_throtl_bio(struct request_queue *q, struct bio *bio);
extern void blk_throtl_drain(struct request_queue *q);
extern int blk_throtl_init(struct request_queue *q);
extern void blk_throtl_exit(struct request_queue *q);
extern void blk_throtl_release(struct request_queue *q);
#else /* CONFIG_BLK_DEV_THROTTLING */
static inline bool blk_throtl_bio(struct request_queue *q, struct bio *bio)
{
Expand All @@ -245,7 +244,6 @@ static inline bool blk_throtl_bio(struct request_queue *q, struct bio *bio)
static inline void blk_throtl_drain(struct request_queue *q) { }
static inline int blk_throtl_init(struct request_queue *q) { return 0; }
static inline void blk_throtl_exit(struct request_queue *q) { }
static inline void blk_throtl_release(struct request_queue *q) { }
#endif /* CONFIG_BLK_DEV_THROTTLING */

#endif /* BLK_INTERNAL_H */

0 comments on commit 11f87af

Please sign in to comment.