diff --git a/lxd/storage/drivers/driver_dir_utils.go b/lxd/storage/drivers/driver_dir_utils.go
index <HASH>..<HASH> 100644
--- a/lxd/storage/drivers/driver_dir_utils.go
+++ b/lxd/storage/drivers/driver_dir_utils.go
@@ -48,7 +48,7 @@ func (d *dir) setupInitialQuota(vol Volume) (func(), error) {
 	revert.Add(revertFunc)
 
 	// Set the quota.
-	err = d.setQuota(volPath, volID, vol.ExpandedConfig("size"))
+	err = d.setQuota(volPath, volID, d.volumeSize(vol))
 	if err != nil {
 		return nil, err
 	}
@@ -149,3 +149,15 @@ func (d *dir) setQuota(path string, volID int64, size string) error {
 
 	return quota.SetProjectQuota(path, d.quotaProjectID(volID), sizeBytes)
 }
+
+// volumeSize returns the size to use when creating new a volume.
+func (d *dir) volumeSize(vol Volume) string {
+	size := vol.ExpandedConfig("size")
+
+	// Block images always need a size.
+	if vol.contentType == ContentTypeBlock && (size == "" || size == "0") {
+		return defaultBlockSize
+	}
+
+	return size
+}
lxd/storage/drivers/driver/dir/utils: Adds volumeSize function

And updates setupInitialQuota to use it.