diff options
Diffstat (limited to 'geo-replication')
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 13 | 
1 files changed, 5 insertions, 8 deletions
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index 45106af2c85..0ca023cd8c5 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -348,17 +348,14 @@ class Server(object):      @classmethod      @_pathguard      def gfid(cls, path): -        try: -            buf = Xattr.lgetxattr(path, cls.GFID_XATTR, 16) +        buf = errno_wrap(Xattr.lgetxattr, [path, cls.GFID_XATTR, 16], +                         [ENOENT], [ESTALE, ENODATA]) +        if buf == ENOENT: +            return buf +        else:              m = re.match('(.{8})(.{4})(.{4})(.{4})(.{12})', "".join(                  ['%02x' % x for x in struct.unpack(cls.GFID_FMTSTR, buf)]))              return '-'.join(m.groups()) -        except (IOError, OSError): -            ex = sys.exc_info()[1] -            if ex.errno == ENOENT: -                return ex.errno -            else: -                raise      @classmethod      @_pathguard  | 
