#include <linux/string.h>
#include <linux/scatterlist.h>
#include "drbd_int.h"
-#include "drbd_tracing.h"
#include "drbd_req.h"
#include "drbd_vli.h"
e->epoch = NULL;
e->flags = 0;
- trace_drbd_ee(mdev, e, "allocated");
-
return e;
fail2:
void drbd_free_ee(struct drbd_conf *mdev, struct drbd_epoch_entry *e)
{
struct bio *bio = e->private_bio;
- trace_drbd_ee(mdev, e, "freed");
drbd_pp_free_bio_pages(mdev, bio);
bio_put(bio);
D_ASSERT(hlist_unhashed(&e->colision));
* all ignore the last argument.
*/
list_for_each_entry_safe(e, t, &work_list, w.list) {
- trace_drbd_ee(mdev, e, "process_done_ee");
/* list_del not necessary, next/prev members not touched */
ok = e->w.cb(mdev, &e->w, !ok) && ok;
drbd_free_ee(mdev, e);
break;
}
- trace_drbd_epoch(mdev, epoch, ev);
-
if (epoch_size != 0 &&
atomic_read(&epoch->active) == 0 &&
test_bit(DE_HAVE_BARRIER_NUMBER, &epoch->flags) &&
list_del(&epoch->list);
ev = EV_BECAME_LAST | (ev & EV_CLEANUP);
mdev->epochs--;
- trace_drbd_epoch(mdev, epoch, EV_TRACE_FREE);
kfree(epoch);
if (rv == FE_STILL_LIVE)
struct flush_work *fw;
fw = kmalloc(sizeof(*fw), GFP_ATOMIC);
if (fw) {
- trace_drbd_epoch(mdev, epoch, EV_TRACE_FLUSH);
fw->w.cb = w_flush;
fw->epoch = epoch;
drbd_queue_work(&mdev->data.work, &fw->w);
list_add(&epoch->list, &mdev->current_epoch->list);
mdev->current_epoch = epoch;
mdev->epochs++;
- trace_drbd_epoch(mdev, epoch, EV_TRACE_ALLOC);
} else {
/* The current_epoch got recycled while we allocated this one... */
kfree(epoch);
list_add(&e->w.list, &mdev->sync_ee);
spin_unlock_irq(&mdev->req_lock);
- trace_drbd_ee(mdev, e, "submitting for (rs)write");
- trace_drbd_bio(mdev, "Sec", e->private_bio, 0, NULL);
drbd_generic_make_request(mdev, DRBD_FAULT_RS_WR, e->private_bio);
/* accounting done in endio */
epoch = list_entry(e->epoch->list.prev, struct drbd_epoch, list);
if (epoch == e->epoch) {
set_bit(DE_CONTAINS_A_BARRIER, &e->epoch->flags);
- trace_drbd_epoch(mdev, e->epoch, EV_TRACE_ADD_BARRIER);
rw |= (1<<BIO_RW_BARRIER);
e->flags |= EE_IS_BARRIER;
} else {
if (atomic_read(&epoch->epoch_size) > 1 ||
!test_bit(DE_CONTAINS_A_BARRIER, &epoch->flags)) {
set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &epoch->flags);
- trace_drbd_epoch(mdev, epoch, EV_TRACE_SETTING_BI);
set_bit(DE_CONTAINS_A_BARRIER, &e->epoch->flags);
- trace_drbd_epoch(mdev, e->epoch, EV_TRACE_ADD_BARRIER);
rw |= (1<<BIO_RW_BARRIER);
e->flags |= EE_IS_BARRIER;
}
}
e->private_bio->bi_rw = rw;
- trace_drbd_ee(mdev, e, "submitting for (data)write");
- trace_drbd_bio(mdev, "Sec", e->private_bio, 0, NULL);
drbd_generic_make_request(mdev, DRBD_FAULT_DT_WR, e->private_bio);
/* accounting done in endio */
inc_unacked(mdev);
- trace_drbd_ee(mdev, e, "submitting for read");
- trace_drbd_bio(mdev, "Sec", e->private_bio, 0, NULL);
drbd_generic_make_request(mdev, fault_type, e->private_bio);
maybe_kick_lo(mdev);
break;
}
/* Else fall through to one of the other strategies... */
- dev_warn(DEV, "Discard younger/older primary did not found a decision\n"
+ dev_warn(DEV, "Discard younger/older primary did not find a decision\n"
"Using discard-least-changes instead\n");
case ASB_DISCARD_ZERO_CHG:
if (ch_peer == 0 && ch_self == 0) {
*rule_nr = 80;
+ peer = mdev->p_uuid[UI_CURRENT] & ~((u64)1);
for (i = UI_HISTORY_START; i <= UI_HISTORY_END; i++) {
self = mdev->ldev->md.uuid[i] & ~((u64)1);
if (self == peer)
while (get_t_state(&mdev->receiver) == Running) {
drbd_thread_current_set_cpu(mdev);
- if (!drbd_recv_header(mdev, header))
+ if (!drbd_recv_header(mdev, header)) {
+ drbd_force_state(mdev, NS(conn, C_PROTOCOL_ERROR));
break;
+ }
if (header->command < P_MAX_CMD)
handler = drbd_cmd_handler[header->command];
drbd_force_state(mdev, NS(conn, C_PROTOCOL_ERROR));
break;
}
-
- trace_drbd_packet(mdev, mdev->data.socket, 2, &mdev->data.rbuf,
- __FILE__, __LINE__);
}
}
set_bit(STOP_SYNC_TIMER, &mdev->flags);
resync_timer_fn((unsigned long)mdev);
- /* so we can be sure that all remote or resync reads
- * made it at least to net_ee */
- wait_event(mdev->misc_wait, !atomic_read(&mdev->local_cnt));
-
/* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier,
* w_make_resync_request etc. which may still be on the worker queue
* to be "canceled" */
return 0;
}
- trace_drbd_packet(mdev, mdev->data.socket, 2, &mdev->data.rbuf,
- __FILE__, __LINE__);
-
p->protocol_min = be32_to_cpu(p->protocol_min);
p->protocol_max = be32_to_cpu(p->protocol_max);
if (p->protocol_max == 0)
goto disconnect;
}
expect = cmd->pkt_size;
- ERR_IF(len != expect-sizeof(struct p_header)) {
- trace_drbd_packet(mdev, mdev->meta.socket, 1, (void *)h, __FILE__, __LINE__);
+ ERR_IF(len != expect-sizeof(struct p_header))
goto reconnect;
- }
}
if (received == expect) {
D_ASSERT(cmd != NULL);
- trace_drbd_packet(mdev, mdev->meta.socket, 1, (void *)h, __FILE__, __LINE__);
if (!cmd->process(mdev, h))
goto reconnect;