--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/cinder/patches/10-zfssa-free-space.patch Tue Jan 26 11:13:13 2016 -0800
@@ -0,0 +1,57 @@
+From 075ff30d7d8bbeca1af634718f3cb19099bc44b3 Mon Sep 17 00:00:00 2001
+From: Abhiram Moturi <[email protected]>
+Date: Mon, 10 Aug 2015 14:23:09 +0000
+Subject: [PATCH] ZFSSA driver to return project 'available' space
+
+This fix allows the iSCSI driver to return the 'available' space
+property at project level instead of the pool level which is more
+accurate in cases when storage is not thin provisioned.
+
+Change-Id: I52dec5e527eab393fd464fbc7f4f910fafb67268
+Closes-Bug: #1479342
+---
+--- cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssarest.py.~1~ 2015-11-08 22:01:48.358042338 -0800
++++ cinder-2014.2.2/cinder/volume/drivers/zfssa/zfssarest.py 2015-11-08 22:02:05.691920138 -0800
+@@ -82,7 +82,7 @@
+ 'ret.status': ret.status,
+ 'ret.data': ret.data})
+ LOG.error(exception_msg)
+- raise exception.InvalidVolume(reason=exception_msg)
++ raise exception.VolumeBackendAPIException(data=exception_msg)
+
+ val = json.loads(ret.data)
+
+@@ -95,10 +95,31 @@
+ LOG.error(exception_msg)
+ raise exception.InvalidInput(reason=pool)
+
+- avail = val['pool']['usage']['available']
+ total = val['pool']['usage']['total']
+
+- return avail, total
++ return total
++
++ def get_project_stats(self, pool, project):
++ """Get available space of a project."""
++ svc = '/api/storage/v1/pools/%s/projects/%s' % (pool, project)
++ ret = self.rclient.get(svc)
++ if ret.status != restclient.Status.OK:
++ exception_msg = (_('Error Getting Project Stats: '
++ 'Pool: %(pool)s '
++ 'Project: %(project)s '
++ 'Return code: %(ret.status)d '
++ 'Message: %(ret.data)s.')
++ % {'pool': pool,
++ 'project': project,
++ 'ret.status': ret.status,
++ 'ret.data': ret.data})
++ LOG.error(exception_msg)
++ raise exception.VolumeBackendAPIException(data=exception_msg)
++
++ val = json.loads(ret.data)
++ avail = val['project']['space_available']
++
++ return avail
+
+ def create_project(self, pool, project, compression=None, logbias=None):
+ """Create a project on a pool