static void drbd_endio_read_sec_final(struct drbd_peer_request *peer_req) __releases(local)
{
unsigned long flags = 0;
- struct drbd_device *device = peer_req->dw.device;
+ struct drbd_device *device = peer_req->peer_device->device;
spin_lock_irqsave(&device->resource->req_lock, flags);
device->read_cnt += peer_req->i.size >> 9;
- list_del(&peer_req->dw.w.list);
+ list_del(&peer_req->w.list);
if (list_empty(&device->read_ee))
wake_up(&device->ee_wait);
if (test_bit(__EE_WAS_ERROR, &peer_req->flags))
spin_unlock_irqrestore(&device->resource->req_lock, flags);
drbd_queue_work(&first_peer_device(device)->connection->sender_work,
- &peer_req->dw.w);
+ &peer_req->w);
put_ldev(device);
}
static void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req) __releases(local)
{
unsigned long flags = 0;
- struct drbd_device *device = peer_req->dw.device;
+ struct drbd_device *device = peer_req->peer_device->device;
struct drbd_interval i;
int do_wake;
u64 block_id;
spin_lock_irqsave(&device->resource->req_lock, flags);
device->writ_cnt += peer_req->i.size >> 9;
- list_move_tail(&peer_req->dw.w.list, &device->done_ee);
+ list_move_tail(&peer_req->w.list, &device->done_ee);
/*
* Do not remove from the write_requests tree here: we did not send the
void drbd_peer_request_endio(struct bio *bio, int error)
{
struct drbd_peer_request *peer_req = bio->bi_private;
- struct drbd_device *device = peer_req->dw.device;
+ struct drbd_device *device = peer_req->peer_device->device;
int uptodate = bio_flagged(bio, BIO_UPTODATE);
int is_write = bio_data_dir(bio) == WRITE;
/* MAYBE merge common code with w_e_end_ov_req */
static int w_e_send_csum(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
int digest_size;
void *digest;
int err = 0;
if (!peer_req)
goto defer;
- peer_req->dw.w.cb = w_e_send_csum;
+ peer_req->w.cb = w_e_send_csum;
spin_lock_irq(&device->resource->req_lock);
- list_add(&peer_req->dw.w.list, &device->read_ee);
+ list_add(&peer_req->w.list, &device->read_ee);
spin_unlock_irq(&device->resource->req_lock);
atomic_add(size >> 9, &device->rs_sect_ev);
* retry may or may not help.
* If it does not, you may need to force disconnect. */
spin_lock_irq(&device->resource->req_lock);
- list_del(&peer_req->dw.w.list);
+ list_del(&peer_req->w.list);
spin_unlock_irq(&device->resource->req_lock);
drbd_free_peer_req(device, peer_req);
atomic_add(i, &device->pp_in_use_by_net);
atomic_sub(i, &device->pp_in_use);
spin_lock_irq(&device->resource->req_lock);
- list_add_tail(&peer_req->dw.w.list, &device->net_ee);
+ list_add_tail(&peer_req->w.list, &device->net_ee);
spin_unlock_irq(&device->resource->req_lock);
wake_up(&drbd_pp_wait);
} else
*/
int w_e_end_data_req(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
int err;
if (unlikely(cancel)) {
*/
int w_e_end_rsdata_req(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
int err;
if (unlikely(cancel)) {
int w_e_end_csum_rs_req(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
struct digest_info *di;
int digest_size;
void *digest = NULL;
int w_e_end_ov_req(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
sector_t sector = peer_req->i.sector;
unsigned int size = peer_req->i.size;
int digest_size;
int w_e_end_ov_reply(struct drbd_work *w, int cancel)
{
- struct drbd_device_work *dw = device_work(w);
- struct drbd_peer_request *peer_req = container_of(dw, struct drbd_peer_request, dw);
- struct drbd_device *device = dw->device;
+ struct drbd_peer_request *peer_req = container_of(w, struct drbd_peer_request, w);
+ struct drbd_device *device = peer_req->peer_device->device;
struct digest_info *di;
void *digest;
sector_t sector = peer_req->i.sector;