Index: uspace/drv/block/ddisk/ddisk.c
===================================================================
--- uspace/drv/block/ddisk/ddisk.c	(revision 7b084d325a7bbc01c0685978df60ea61d02eea8b)
+++ uspace/drv/block/ddisk/ddisk.c	(revision c4f32fff51afe17fded1afe33532d2ca0b6005df)
@@ -96,12 +96,20 @@
 typedef struct {
 	fibril_mutex_t lock;
+
 	fibril_condvar_t io_cv;
 	bool io_busy;
+
+	ssize_t size;
+	size_t blocks;
+
+	uintptr_t dma_buffer_phys;
+	void *dma_buffer;
+
 	ddf_dev_t *dev;
 	ddf_fun_t *fun;
+
 	ddisk_res_t ddisk_res;
 	ddisk_regs_t *ddisk_regs;
-	uintptr_t dma_buffer_phys;
-	void *dma_buffer;
+
 	bd_srvs_t bds;
 } ddisk_dev_t;
@@ -196,5 +204,5 @@
 	    read, ba, buf);
 
-	if (ba >= pio_read_32(&ddisk_dev->ddisk_regs->size) / DDISK_BLOCK_SIZE)
+	if (ba >= ddisk_dev->blocks)
 		return ELIMIT;
 
@@ -268,5 +276,5 @@
 	ddisk_dev_t *ddisk_dev = (ddisk_dev_t *) bd->srvs->sarg;
 
-	*rnb = pio_read_32(&ddisk_dev->ddisk_regs->size) / DDISK_BLOCK_SIZE;
+	*rnb = ddisk_dev->blocks;
 	return EOK;	
 }
@@ -366,4 +374,5 @@
 	ddisk_dev->fun = NULL;
 	rc = EOK;
+
 error:
 	return rc;
@@ -405,4 +414,7 @@
 	int rc;
 
+	/*
+	 * Get our resources.
+	 */
 	rc = ddisk_get_res(dev, &res);
 	if (rc != EOK) {
@@ -411,4 +423,7 @@
 	}
 
+	/*
+	 * Allocate soft state.
+	 */
 	ddisk_dev = ddf_dev_data_alloc(dev, sizeof(ddisk_dev_t));
 	if (!ddisk_dev) {
@@ -418,9 +433,17 @@
 	}
 
+	/*
+	 * Initialize soft state.
+	 */
 	fibril_mutex_initialize(&ddisk_dev->lock);
+	ddisk_dev->dev = dev;
+	ddisk_dev->ddisk_res = res;
+
 	fibril_condvar_initialize(&ddisk_dev->io_cv);
 	ddisk_dev->io_busy = false;
-	ddisk_dev->dev = dev;
-	ddisk_dev->ddisk_res = res;
+
+	bd_srvs_init(&ddisk_dev->bds);
+	ddisk_dev->bds.ops = &ddisk_bd_ops;
+	ddisk_dev->bds.sarg = ddisk_dev;
 
 	/*
@@ -435,5 +458,8 @@
 	ddisk_dev->ddisk_regs = vaddr;
 
-	if ((int32_t) pio_read_32(&ddisk_dev->ddisk_regs->size) <= 0) {
+	ddisk_dev->size = (int32_t) pio_read_32(&ddisk_dev->ddisk_regs->size);
+	ddisk_dev->blocks = ddisk_dev->size / DDISK_BLOCK_SIZE;
+
+	if (ddisk_dev->size <= 0) {
 		ddf_msg(LVL_WARN, "No disk detected.");
 		rc = EIO;
@@ -456,8 +482,7 @@
 	    ddisk_dev->dma_buffer, (void *) ddisk_dev->dma_buffer_phys);
 
-	bd_srvs_init(&ddisk_dev->bds);
-	ddisk_dev->bds.ops = &ddisk_bd_ops;
-	ddisk_dev->bds.sarg = ddisk_dev;
-
+	/*
+	 * Create an exposed function.
+	 */
 	rc = ddisk_fun_create(ddisk_dev);
 	if (rc != EOK) {
@@ -485,10 +510,7 @@
 	 */
 	ddf_msg(LVL_NOTE,
-	    "Device at %p with %" PRIu32 " blocks (%" PRIu32
-	    "B) using interrupt %d",
-	    (void *) ddisk_dev->ddisk_res.base,
-	    pio_read_32(&ddisk_dev->ddisk_regs->size) / DDISK_BLOCK_SIZE,
-	    pio_read_32(&ddisk_dev->ddisk_regs->size),
-	    ddisk_dev->ddisk_res.irq);
+	    "Device at %p with %zd blocks (%zuB) using interrupt %d",
+	    (void *) ddisk_dev->ddisk_res.base, ddisk_dev->blocks,
+	    ddisk_dev->size, ddisk_dev->ddisk_res.irq);
 
 	return EOK;
@@ -499,4 +521,5 @@
 	if (ddisk_dev->dma_buffer)
 		dmamem_unmap_anonymous(ddisk_dev->dma_buffer);
+
 	return rc;
 }
