Merge branch 'for-3.17/drivers' of git://git.kernel.dk/linux-block
Pull block driver changes from Jens Axboe:
"Nothing out of the ordinary here, this pull request contains:
- A big round of fixes for bcache from Kent Overstreet, Slava Pestov,
and Surbhi Palande. No new features, just a lot of fixes.
- The usual round of drbd updates from Andreas Gruenbacher, Lars
Ellenberg, and Philipp Reisner.
- virtio_blk was converted to blk-mq back in 3.13, but now Ming Lei
has taken it one step further and added support for actually using
more than one queue.
- Addition of an explicit SG_FLAG_Q_AT_HEAD for block/bsg, to
compliment the the default behavior of adding to the tail of the
queue. From Douglas Gilbert"
* 'for-3.17/drivers' of git://git.kernel.dk/linux-block: (86 commits)
bcache: Drop unneeded blk_sync_queue() calls
bcache: add mutex lock for bch_is_open
bcache: Correct printing of btree_gc_max_duration_ms
bcache: try to set b->parent properly
bcache: fix memory corruption in init error path
bcache: fix crash with incomplete cache set
bcache: Fix more early shutdown bugs
bcache: fix use-after-free in btree_gc_coalesce()
bcache: Fix an infinite loop in journal replay
bcache: fix crash in bcache_btree_node_alloc_fail tracepoint
bcache: bcache_write tracepoint was crashing
bcache: fix typo in bch_bkey_equal_header
bcache: Allocate bounce buffers with GFP_NOWAIT
bcache: Make sure to pass GFP_WAIT to mempool_alloc()
bcache: fix uninterruptible sleep in writeback thread
bcache: wait for buckets when allocating new btree root
bcache: fix crash on shutdown in passthrough mode
bcache: fix lockdep warnings on shutdown
bcache allocator: send discards with correct size
bcache: Fix to remove the rcu_sched stalls.
...
This commit is contained in:
+13
-10
@@ -169,7 +169,7 @@ out_fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void lc_free_by_index(struct lru_cache *lc, unsigned i)
|
||||
static void lc_free_by_index(struct lru_cache *lc, unsigned i)
|
||||
{
|
||||
void *p = lc->lc_element[i];
|
||||
WARN_ON(!p);
|
||||
@@ -643,9 +643,10 @@ void lc_set(struct lru_cache *lc, unsigned int enr, int index)
|
||||
* lc_dump - Dump a complete LRU cache to seq in textual form.
|
||||
* @lc: the lru cache to operate on
|
||||
* @seq: the &struct seq_file pointer to seq_printf into
|
||||
* @utext: user supplied "heading" or other info
|
||||
* @utext: user supplied additional "heading" or other info
|
||||
* @detail: function pointer the user may provide to dump further details
|
||||
* of the object the lc_element is embedded in.
|
||||
* of the object the lc_element is embedded in. May be NULL.
|
||||
* Note: a leading space ' ' and trailing newline '\n' is implied.
|
||||
*/
|
||||
void lc_seq_dump_details(struct seq_file *seq, struct lru_cache *lc, char *utext,
|
||||
void (*detail) (struct seq_file *, struct lc_element *))
|
||||
@@ -654,16 +655,18 @@ void lc_seq_dump_details(struct seq_file *seq, struct lru_cache *lc, char *utext
|
||||
struct lc_element *e;
|
||||
int i;
|
||||
|
||||
seq_printf(seq, "\tnn: lc_number refcnt %s\n ", utext);
|
||||
seq_printf(seq, "\tnn: lc_number (new nr) refcnt %s\n ", utext);
|
||||
for (i = 0; i < nr_elements; i++) {
|
||||
e = lc_element_by_index(lc, i);
|
||||
if (e->lc_number == LC_FREE) {
|
||||
seq_printf(seq, "\t%2d: FREE\n", i);
|
||||
} else {
|
||||
seq_printf(seq, "\t%2d: %4u %4u ", i,
|
||||
e->lc_number, e->refcnt);
|
||||
if (e->lc_number != e->lc_new_number)
|
||||
seq_printf(seq, "\t%5d: %6d %8d %6d ",
|
||||
i, e->lc_number, e->lc_new_number, e->refcnt);
|
||||
else
|
||||
seq_printf(seq, "\t%5d: %6d %-8s %6d ",
|
||||
i, e->lc_number, "-\"-", e->refcnt);
|
||||
if (detail)
|
||||
detail(seq, e);
|
||||
}
|
||||
seq_putc(seq, '\n');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user