summaryrefslogtreecommitdiffstats
path: root/api/examples
diff options
context:
space:
mode:
authorBrian Foster <bfoster@redhat.com>2013-05-23 12:19:42 -0400
committerAnand Avati <avati@redhat.com>2013-06-13 14:37:43 -0700
commit17f287172413dc04244781aa5302a0e4f10e2777 (patch)
tree2acfc7097c92de32b19e82140befd8dc9fb2dad2 /api/examples
parentd1ccc4e400728d90f2ef7904661f53deb7199123 (diff)
glusterfs: discard (hole punch) support
Add support for the DISCARD file operation. Discard punches a hole in a file in the provided range. Block de-allocation is implemented via fallocate() (as requested via fuse and passed on to the brick fs) but a separate fop is created within gluster to emphasize the fact that discard changes file data (the discarded region is replaced with zeroes) and must invalidate caches where appropriate. BUG: 963678 Change-Id: I34633a0bfff2187afeab4292a15f3cc9adf261af Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-on: http://review.gluster.org/5090 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'api/examples')
-rwxr-xr-xapi/examples/gfapi.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/api/examples/gfapi.py b/api/examples/gfapi.py
index 8dfe2791d..8d9ed7329 100755
--- a/api/examples/gfapi.py
+++ b/api/examples/gfapi.py
@@ -100,6 +100,8 @@ class File(object):
def fallocate (self, mode, offset, len):
return api.glfs_fallocate(self.fd, mode, offset, len)
+ def discard (self, offset, len):
+ return api.glfs_discard(self.fd, offset, len)
class Dir(object):
@@ -357,10 +359,13 @@ if __name__ == "__main__":
fd = vol.creat(mypath,os.O_WRONLY|os.O_EXCL,0644)
if not fd:
return False, "creat error"
- rc = fd.fallocate(0, 0, 1024)
+ rc = fd.fallocate(0, 0, 1024*1024)
if rc != 0:
return False, "fallocate error"
- return True, "fallocate worked"
+ rc = fd.discard(4096, 4096)
+ if rc != 0:
+ return False, "discard error"
+ return True, "fallocate/discard worked"
test_list = (
test_create_write,