diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index a3bfebcf31efeb72f3a6de690d82f412eaa5218b..cfb1fff3787caafd63fe05a2c36587bfdb8f19a5 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -314,6 +314,11 @@ dasd_increase_state(struct dasd_device *device)
 	    device->target >= DASD_STATE_READY)
 		rc = dasd_state_basic_to_ready(device);
 
+	if (!rc &&
+	    device->state == DASD_STATE_UNFMT &&
+	    device->target > DASD_STATE_UNFMT)
+		rc = -EPERM;
+
 	if (!rc &&
 	    device->state == DASD_STATE_READY &&
 	    device->target >= DASD_STATE_ONLINE)