diff options
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index 275e9fd29ab..a608944f9be 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -797,6 +797,14 @@ class Server(object):                  if isinstance(st, int):                      blob = entry_pack_reg(                          gfid, bname, e['mode'], e['uid'], e['gid']) +                # Self healed hardlinks are recorded as MKNOD. +                # So if the gfid already exists, it should be +                # processed as hard link not mknod. +                elif op in ['MKNOD']: +                    cmd_ret = errno_wrap(os.link, +                                         [slink, entry], +                                         [ENOENT, EEXIST], [ESTALE]) +                    collect_failure(e, cmd_ret)              elif op == 'MKDIR':                  slink = os.path.join(pfx, gfid)                  st = lstat(slink)  | 
