atomic_read(&device->rs_sect_ev);
 
        if (atomic_read(&device->ap_actlog_cnt)
-           || !device->rs_last_events || curr_events - device->rs_last_events > 64) {
+           || curr_events - device->rs_last_events > 64) {
                unsigned long rs_left;
                int i;
 
 
 
                set_ov_position(device, ns.conn);
                device->rs_start = now;
-               device->rs_last_events = 0;
                device->rs_last_sect_ev = 0;
                device->ov_last_oos_size = 0;
                device->ov_last_oos_start = 0;
 
 
 void drbd_rs_controller_reset(struct drbd_device *device)
 {
+       struct gendisk *disk = device->ldev->backing_bdev->bd_contains->bd_disk;
        struct fifo_buffer *plan;
 
        atomic_set(&device->rs_sect_in, 0);
        atomic_set(&device->rs_sect_ev, 0);
        device->rs_in_flight = 0;
+       device->rs_last_events =
+               (int)part_stat_read(&disk->part0, sectors[0]) +
+               (int)part_stat_read(&disk->part0, sectors[1]);
 
        /* Updating the RCU protected object in place is necessary since
           this function gets called from atomic context.
                device->rs_failed    = 0;
                device->rs_paused    = 0;
                device->rs_same_csum = 0;
-               device->rs_last_events = 0;
                device->rs_last_sect_ev = 0;
                device->rs_total     = tw;
                device->rs_start     = now;