diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index 5cf3b775dc44e0332b1df092b217481060d28e98..96736b7a3898ca6d3efcb14531f6f800f347dd62 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -478,14 +478,23 @@ class LUInitCluster(LogicalUnit):
     if vgstatus:
       raise errors.OpPrereqError("Error: %s" % vgstatus)
 
+    self.op.file_storage_dir = os.path.normpath(self.op.file_storage_dir)
+
     if not os.path.isabs(self.op.file_storage_dir):
       raise errors.OpPrereqError("The file storage directory you have is"
                                  " not an absolute path.")
 
     if not os.path.exists(self.op.file_storage_dir):
-      raise errors.OpPrereqError("Default file storage directory '%s' does "
-                                 "not exist. Please create." %
-                                 self.op.file_storage_dir)
+      try:
+        os.makedirs(self.op.file_storage_dir, 0750)
+      except OSError, err:
+        raise errors.OpPrereqError("Cannot create file storage directory"
+                                   " '%s': %s" %
+                                   (self.op.file_storage_dir, err))
+
+    if not os.path.isdir(self.op.file_storage_dir):
+      raise errors.OpPrereqError("The file storage directory '%s' is not"
+                                 " a directory." % self.op.file_storage_dir)
 
     if not re.match("^[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}$",
                     self.op.mac_prefix):