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):
diff --git a/test/unit/common/test_fs_utils.py b/test/unit/common/test_fs_utils.py
index 0f5f6f6..dbf052f 100644
--- a/test/unit/common/test_fs_utils.py
+++ b/test/unit/common/test_fs_utils.py
@@ -517,6 +517,15 @@ class TestFsUtils(unittest.TestCase):
         finally:
             os.remove(tmpfile)
 
+    def test_do_close_err_ENOSPC(self):
+
+        def _mock_os_close_enospc(fd):
+            raise OSError(errno.ENOSPC, os.strerror(errno.ENOSPC))
+
+        fd, tmpfile = mkstemp()
+        with patch('os.close', _mock_os_close_enospc):
+            self.assertRaises(DiskFileNoSpace, fs.do_close, fd)
+
     def test_do_unlink(self):
         fd, tmpfile = mkstemp()
         try: