aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2014-05-06 09:02:05 -0400
committerPhilipp Reisner <philipp.reisner@linbit.com>2014-07-10 12:35:18 -0400
commit944410e97cfcec38369eeb5f77d0e8da91d68afb (patch)
tree486f49038fa17542d14cda8028a9b122cf1df94a /drivers/block/drbd/drbd_receiver.c
parentf418815f7adad4917e92e9d11fdc1ca21cd616a1 (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.c6
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
2694submit: 2696submit:
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",