diff --git a/doc/source/command-objects/quota.rst b/doc/source/command-objects/quota.rst
index 053fb47acc..5ea49f8c52 100644
--- a/doc/source/command-objects/quota.rst
+++ b/doc/source/command-objects/quota.rst
@@ -30,6 +30,7 @@ Set quotas for project
         [--gigabytes <new-gigabytes>]
         [--snapshots <new-snapshots>]
         [--volumes <new-volumes>]
+        [--volume-type <volume-type>]
 
         <project>
 
@@ -121,6 +122,10 @@ Set quotas for class
 
     New value for the snapshots quota
 
+.. option:: --volume-type <volume-type>
+
+    Set quotas for a specific <volume-type>
+
 quota show
 ----------
 
diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py
index dde4a9acb6..ea1dc38f58 100644
--- a/openstackclient/common/quota.py
+++ b/openstackclient/common/quota.py
@@ -82,6 +82,11 @@ class SetQuota(command.Command):
                 type=int,
                 help='New value for the %s quota' % v,
             )
+        parser.add_argument(
+            '--volume-type',
+            metavar='<volume-type>',
+            help='Set quotas for a specific <volume-type>',
+        )
         return parser
 
     def take_action(self, parsed_args):
@@ -97,8 +102,11 @@ class SetQuota(command.Command):
 
         volume_kwargs = {}
         for k, v in VOLUME_QUOTAS.items():
-            if v in parsed_args:
-                volume_kwargs[k] = getattr(parsed_args, v, None)
+            value = getattr(parsed_args, v, None)
+            if value is not None:
+                if parsed_args.volume_type:
+                    k = k + '_%s' % parsed_args.volume_type
+                volume_kwargs[k] = value
 
         if compute_kwargs == {} and volume_kwargs == {}:
             sys.stderr.write("No quotas updated")