summaryrefslogtreecommitdiffstats
path: root/gluster
diff options
context:
space:
mode:
Diffstat (limited to 'gluster')
-rw-r--r--gluster/swift/common/DiskDir.py14
-rw-r--r--gluster/swift/common/utils.py26
2 files changed, 22 insertions, 18 deletions
diff --git a/gluster/swift/common/DiskDir.py b/gluster/swift/common/DiskDir.py
index 204ae1d..4f4a2ef 100644
--- a/gluster/swift/common/DiskDir.py
+++ b/gluster/swift/common/DiskDir.py
@@ -14,6 +14,7 @@
# limitations under the License.
import os
+import stat
import errno
from gluster.swift.common.fs_utils import dir_empty, mkdirs, do_chown, \
@@ -177,7 +178,7 @@ class DiskCommon(object):
self.logger = logger
self.account = account
self.datadir = os.path.join(root, drive)
- self._dir_exists = None
+ self._dir_exists = False
# nthread=0 is intentional. This ensures that no green pool is
# used. Call to force_run_in_thread() will ensure that the method
@@ -186,7 +187,7 @@ class DiskCommon(object):
self.threadpool = ThreadPool(nthreads=0)
def _dir_exists_read_metadata(self):
- self._dir_exists = do_exists(self.datadir)
+ self._dir_exists = os.path.isdir(self.datadir)
if self._dir_exists:
try:
self.metadata = _read_metadata(self.datadir)
@@ -199,7 +200,7 @@ class DiskCommon(object):
def is_deleted(self):
# The intention of this method is to check the file system to see if
# the directory actually exists.
- return not do_exists(self.datadir)
+ return not self._dir_exists
def empty(self):
# If it does not exist, then it is empty. A value of True is
@@ -356,6 +357,8 @@ class DiskDir(DiskCommon):
# object count and bytes used. Return immediately before metadata
# validation and creation happens.
info = do_stat(self.datadir)
+ if info and stat.S_ISDIR(info.st_mode):
+ self._dir_exists = True
if not info:
# Container no longer exists.
return
@@ -526,7 +529,7 @@ class DiskDir(DiskCommon):
return objects
def get_info_is_deleted(self):
- if not do_exists(self.datadir):
+ if not self._dir_exists:
return {}, True
info = self.get_info()
return info, False
@@ -622,6 +625,7 @@ class DiskDir(DiskCommon):
# where created by the code, but not by the
# caller as objects
rmobjdir(self.datadir)
+ self._dir_exists = False
def set_x_container_sync_points(self, sync_point1, sync_point2):
self.metadata['x_container_sync_point1'] = sync_point1
@@ -679,6 +683,8 @@ class DiskAccount(DiskCommon):
# used. Return immediately before metadata validation and
# creation happens.
info = do_stat(self.datadir)
+ if info and stat.S_ISDIR(info.st_mode):
+ self._dir_exists = True
semi_fake_md = {
'X-Object-Count': (0, 0),
'X-Container-Count': (0, 0),
diff --git a/gluster/swift/common/utils.py b/gluster/swift/common/utils.py
index a27aaf0..8f68319 100644
--- a/gluster/swift/common/utils.py
+++ b/gluster/swift/common/utils.py
@@ -28,9 +28,9 @@ from gluster.swift.common.exceptions import GlusterFileSystemIOError
from swift.common.exceptions import DiskFileNoSpace
from swift.common.db import utf8encodekeys
from gluster.swift.common.fs_utils import do_getctime, do_getmtime, do_stat, \
- do_rmdir, do_log_rl, get_filename_from_fd, do_open, \
- do_isdir, do_getsize, do_getxattr, do_setxattr, do_removexattr, do_read, \
- do_close, do_dup, do_lseek, do_fstat, do_fsync, do_rename
+ do_rmdir, do_log_rl, get_filename_from_fd, do_open, do_getsize, \
+ do_getxattr, do_setxattr, do_removexattr, do_read, do_close, do_dup, \
+ do_lseek, do_fstat, do_fsync, do_rename
from gluster.swift.common import Glusterfs
try:
@@ -371,13 +371,12 @@ def get_container_details(cont_path):
object_count = 0
obj_list = []
- if do_isdir(cont_path):
- for (path, dirs, files) in gf_walk(cont_path):
- object_count, bytes_used = update_list(path, cont_path, dirs,
- files, object_count,
- bytes_used, obj_list)
+ for (path, dirs, files) in gf_walk(cont_path):
+ object_count, bytes_used = update_list(path, cont_path, dirs,
+ files, object_count,
+ bytes_used, obj_list)
- sleep()
+ sleep()
return obj_list, object_count, bytes_used
@@ -445,11 +444,10 @@ def get_account_details(acc_path):
"""
container_list = []
- if os.path.isdir(acc_path):
- for entry in gf_listdir(acc_path):
- if entry.is_dir() and \
- entry.name not in (TEMP_DIR, ASYNCDIR, TRASHCAN):
- container_list.append(entry.name)
+ for entry in gf_listdir(acc_path):
+ if entry.is_dir() and \
+ entry.name not in (TEMP_DIR, ASYNCDIR, TRASHCAN):
+ container_list.append(entry.name)
return container_list, len(container_list)