summaryrefslogtreecommitdiffstats
path: root/gluster
diff options
context:
space:
mode:
authorPrashanth Pai <ppai@redhat.com>2013-12-27 14:36:06 +0530
committerLuis Pabon <lpabon@redhat.com>2014-01-07 13:49:29 -0800
commitd1c7b1cc4b19a7a0c2c6a594dd47cf40f98223f9 (patch)
tree4a6a1f96ceae5bd748eecf36429cdac0aed3132c /gluster
parente280f91ff1c2978c617f912c7c83601a478ba359 (diff)
Handle ENOSPC on os.close() operation
It is quite possible that errors on a previous write() operation are first reported at the final close(). For fruther info, refer to: http://review.gluster.org/#/c/6269/ Change-Id: If0fbe2f5109d28c82cb493f2526fd5057f86b556 Signed-off-by: Prashanth Pai <ppai@redhat.com> Reviewed-on: http://review.gluster.org/6608 Reviewed-by: Luis Pabon <lpabon@redhat.com> Tested-by: Luis Pabon <lpabon@redhat.com>
Diffstat (limited to 'gluster')
-rw-r--r--gluster/swift/common/fs_utils.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/gluster/swift/common/fs_utils.py b/gluster/swift/common/fs_utils.py
index 1ef68ed..03c5a77 100644
--- a/gluster/swift/common/fs_utils.py
+++ b/gluster/swift/common/fs_utils.py
@@ -226,8 +226,14 @@ def do_close(fd):
try:
os.close(fd)
except OSError as err:
- raise GlusterFileSystemOSError(
- err.errno, '%s, os.close(%s)' % (err.strerror, fd))
+ if err.errno in (errno.ENOSPC, errno.EDQUOT):
+ filename = get_filename_from_fd(fd)
+ do_log_rl("do_close(%d) failed: %s : %s",
+ fd, err, filename)
+ raise DiskFileNoSpace()
+ else:
+ raise GlusterFileSystemOSError(
+ err.errno, '%s, os.close(%s)' % (err.strerror, fd))
def do_unlink(path, log=True):