diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2014-05-06 09:02:05 -0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2014-07-10 12:35:18 -0400 |
commit | 944410e97cfcec38369eeb5f77d0e8da91d68afb (patch) | |
tree | 486f49038fa17542d14cda8028a9b122cf1df94a /drivers/block/drbd/drbd_receiver.c | |
parent | f418815f7adad4917e92e9d11fdc1ca21cd616a1 (diff) |
drbd: debugfs: add callback_history
Add a per-connection worker thread callback_history
with timing details, call site and callback function.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 9f6ed240e075..f972988291c5 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c | |||
@@ -2682,9 +2682,11 @@ static int receive_DataRequest(struct drbd_connection *connection, struct packet | |||
2682 | list_add_tail(&peer_req->w.list, &device->read_ee); | 2682 | list_add_tail(&peer_req->w.list, &device->read_ee); |
2683 | spin_unlock_irq(&device->resource->req_lock); | 2683 | spin_unlock_irq(&device->resource->req_lock); |
2684 | 2684 | ||
2685 | update_receiver_timing_details(connection, drbd_rs_should_slow_down); | ||
2685 | if (device->state.peer != R_PRIMARY | 2686 | if (device->state.peer != R_PRIMARY |
2686 | && drbd_rs_should_slow_down(device, sector, false)) | 2687 | && drbd_rs_should_slow_down(device, sector, false)) |
2687 | schedule_timeout_uninterruptible(HZ/10); | 2688 | schedule_timeout_uninterruptible(HZ/10); |
2689 | update_receiver_timing_details(connection, drbd_rs_begin_io); | ||
2688 | if (drbd_rs_begin_io(device, sector)) | 2690 | if (drbd_rs_begin_io(device, sector)) |
2689 | goto out_free_e; | 2691 | goto out_free_e; |
2690 | 2692 | ||
@@ -2692,6 +2694,7 @@ submit_for_resync: | |||
2692 | atomic_add(size >> 9, &device->rs_sect_ev); | 2694 | atomic_add(size >> 9, &device->rs_sect_ev); |
2693 | 2695 | ||
2694 | submit: | 2696 | submit: |
2697 | update_receiver_timing_details(connection, drbd_submit_peer_request); | ||
2695 | inc_unacked(device); | 2698 | inc_unacked(device); |
2696 | if (drbd_submit_peer_request(device, peer_req, READ, fault_type) == 0) | 2699 | if (drbd_submit_peer_request(device, peer_req, READ, fault_type) == 0) |
2697 | return 0; | 2700 | return 0; |
@@ -4601,6 +4604,7 @@ static void drbdd(struct drbd_connection *connection) | |||
4601 | struct data_cmd *cmd; | 4604 | struct data_cmd *cmd; |
4602 | 4605 | ||
4603 | drbd_thread_current_set_cpu(&connection->receiver); | 4606 | drbd_thread_current_set_cpu(&connection->receiver); |
4607 | update_receiver_timing_details(connection, drbd_recv_header); | ||
4604 | if (drbd_recv_header(connection, &pi)) | 4608 | if (drbd_recv_header(connection, &pi)) |
4605 | goto err_out; | 4609 | goto err_out; |
4606 | 4610 | ||
@@ -4619,12 +4623,14 @@ static void drbdd(struct drbd_connection *connection) | |||
4619 | } | 4623 | } |
4620 | 4624 | ||
4621 | if (shs) { | 4625 | if (shs) { |
4626 | update_receiver_timing_details(connection, drbd_recv_all_warn); | ||
4622 | err = drbd_recv_all_warn(connection, pi.data, shs); | 4627 | err = drbd_recv_all_warn(connection, pi.data, shs); |
4623 | if (err) | 4628 | if (err) |
4624 | goto err_out; | 4629 | goto err_out; |
4625 | pi.size -= shs; | 4630 | pi.size -= shs; |
4626 | } | 4631 | } |
4627 | 4632 | ||
4633 | update_receiver_timing_details(connection, cmd->fn); | ||
4628 | err = cmd->fn(connection, &pi); | 4634 | err = cmd->fn(connection, &pi); |
4629 | if (err) { | 4635 | if (err) { |
4630 | drbd_err(connection, "error receiving %s, e: %d l: %d!\n", | 4636 | drbd_err(connection, "error receiving %s, e: %d l: %d!\n", |