struct sockaddr_in addr;
struct sockaddr_in6 addr6;
struct sockaddr_un addr_un;
- uint64_t udp_lost;
uint64_t udp_send_seq;
uint64_t udp_recv_seq;
};
us->seq = cpu_to_le64(nd->udp_send_seq++);
}
-static void verify_udp_seq(struct netio_data *nd, struct io_u *io_u)
+static void verify_udp_seq(struct thread_data *td, struct netio_data *nd,
+ struct io_u *io_u)
{
struct udp_seq *us;
uint64_t seq;
seq = le64_to_cpu(us->seq);
if (seq != nd->udp_recv_seq)
- nd->udp_lost += seq - nd->udp_recv_seq;
+ td->ts.drop_io_u[io_u->ddir] += seq - nd->udp_recv_seq;
nd->udp_recv_seq = seq + 1;
}
} while (1);
if (is_udp(o) && td->o.verify == VERIFY_NONE)
- verify_udp_seq(nd, io_u);
+ verify_udp_seq(td, nd, io_u);
return ret;
}
io_u_dist[3], io_u_dist[4],
io_u_dist[5], io_u_dist[6]);
log_info(" issued : total=r=%llu/w=%llu/d=%llu,"
- " short=r=%llu/w=%llu/d=%llu\n",
+ " short=r=%llu/w=%llu/d=%llu,"
+ " drop=r=%llu/w=%llu/d=%llu\n",
(unsigned long long) ts->total_io_u[0],
(unsigned long long) ts->total_io_u[1],
(unsigned long long) ts->total_io_u[2],
(unsigned long long) ts->short_io_u[0],
(unsigned long long) ts->short_io_u[1],
- (unsigned long long) ts->short_io_u[2]);
+ (unsigned long long) ts->short_io_u[2],
+ (unsigned long long) ts->drop_io_u[0],
+ (unsigned long long) ts->drop_io_u[1],
+ (unsigned long long) ts->drop_io_u[2]);
if (ts->continue_on_error) {
log_info(" errors : total=%llu, first_error=%d/<%s>\n",
(unsigned long long)ts->total_err_count,
if (!dst->unified_rw_rep) {
dst->total_io_u[k] += src->total_io_u[k];
dst->short_io_u[k] += src->short_io_u[k];
+ dst->drop_io_u[k] += src->drop_io_u[k];
} else {
dst->total_io_u[0] += src->total_io_u[k];
dst->short_io_u[0] += src->short_io_u[k];
+ dst->drop_io_u[0] += src->drop_io_u[k];
}
}
for (i = 0; i < 3; i++) {
ts->total_io_u[i] = 0;
ts->short_io_u[i] = 0;
+ ts->drop_io_u[i] = 0;
}
}