From a43de0dc5b0c6781c86a8da05d3ebe31f992510e Mon Sep 17 00:00:00 2001 From: Prashanth Pai Date: Wed, 30 Oct 2013 16:13:50 +0530 Subject: Improve logging and raising DiskFileNoSpace This commit only improves logging whenever ENOSPC (No space on disk) or EDQUOT (Quota limit exceeded) is returned by glusterfs Also, added methods to: - get filename from file descriptor - log with rate limit Caveat: Although raising DiskFileNoSpace results in object-server returning HTTPInsufficientStorage[507] correctly, the swift proxy-server invokes "best_response" method that returns [503] to the user. When write-behind translator is turned on in glusterfs, it may set errno to EIO instead of ENOSPC/EDQUOT. This is documented in BZ 986812 BUG: 985862, 985253, 1020724 Change-Id: Ib0c5e41c11a8cdccc2077f71c31d8a23229452bb Signed-off-by: Prashanth Pai Reviewed-on: http://review.gluster.org/6199 Reviewed-by: Luis Pabon Tested-by: Luis Pabon --- gluster/swift/obj/diskfile.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gluster/swift/obj') diff --git a/gluster/swift/obj/diskfile.py b/gluster/swift/obj/diskfile.py index 0e0abef..0a3d95e 100644 --- a/gluster/swift/obj/diskfile.py +++ b/gluster/swift/obj/diskfile.py @@ -700,8 +700,9 @@ class DiskFile(SwiftDiskFile): fd = do_open(tmppath, os.O_WRONLY | os.O_CREAT | os.O_EXCL | O_CLOEXEC) except GlusterFileSystemOSError as gerr: - if gerr.errno == errno.ENOSPC: - # Raise DiskFileNoSpace to be handled by upper layers + if gerr.errno in (errno.ENOSPC, errno.EDQUOT): + # Raise DiskFileNoSpace to be handled by upper layers when + # there is no space on disk OR when quota is exceeded raise DiskFileNoSpace() if gerr.errno not in (errno.ENOENT, errno.EEXIST, errno.EIO): # FIXME: Other cases we should handle? -- cgit