return container_of(buffer, struct dmaengine_buffer, queue.buffer);
 }
 
-static void iio_dmaengine_buffer_block_done(void *data)
+static void iio_dmaengine_buffer_block_done(void *data,
+               const struct dmaengine_result *result)
 {
        struct iio_dma_buffer_block *block = data;
        unsigned long flags;
        spin_lock_irqsave(&block->queue->list_lock, flags);
        list_del(&block->head);
        spin_unlock_irqrestore(&block->queue->list_lock, flags);
+       block->bytes_used -= result->residue;
        iio_dma_buffer_block_done(block);
 }
 
        if (!desc)
                return -ENOMEM;
 
-       desc->callback = iio_dmaengine_buffer_block_done;
+       desc->callback_result = iio_dmaengine_buffer_block_done;
        desc->callback_param = block;
 
        cookie = dmaengine_submit(desc);