[Gluster-users] AFR self-heal bug with rmdir (Directory not empty)

Corentin Chary corentin.chary at gmail.com
Mon Sep 28 13:49:06 UTC 2009


Hi,
I'm trying to use glusterfs with afr.
My setup have 2 servers and 2 clients. / is mounted with user_xattr.
It seems that if you shutdown a server, remove a directory with one or
more childs, then restart the server, the changes won't be replicated
because rmdir is not recursive in afr-self-heal-entry.c

Here is my test case:
$ bin/clients.sh  # launch 2 clients

$ tree mnt/ export/
mnt/
|-- 1
`-- 2
export/
|-- 1
`-- 2

$ mkdir + touch

$ tree mnt/1
mnt/1
|-- dir-empty
|-- dir-with-file
|   `-- file
`-- dir-with-subdir
    `-- subdir

$ kill server 2

$ rm mnt/1/dir* -rf

$ start server 2

$ tree mnt/
mnt/
|-- 1
`-- 2

$ tree export/
export/
|-- 1
|-- 2
    |-- dir-with-file
    |   `-- file
    `-- dir-with-subdir
        `-- subdir

Log:
[2009-09-28 15:30:09] D
[afr-self-heal-entry.c:1865:afr_sh_entry_sync_prepare] afr:
self-healing directory / from subvolume brick1 to 1 other
[2009-09-28 15:30:09] D
[afr-self-heal-entry.c:455:afr_sh_entry_expunge_remove_cbk] afr:
removing /dir-with-subdir on brick2 failed (Directory not empty)
[2009-09-28 15:30:09] D
[afr-self-heal-entry.c:455:afr_sh_entry_expunge_remove_cbk] afr:
removing /dir-with-file on brick2 failed (Directory not empty)
[2009-09-28 15:30:09] D
[afr-self-heal-entry.c:449:afr_sh_entry_expunge_remove_cbk] afr:
removed /dir-empty on brick2


# server-x.vol
volume brick
  type storage/posix
  option directory /home/iksaif/tmp/glusterfs/export/1
end-volume

volume brick-lock
  type features/posix-locks
  option mandatory-locks on
  subvolumes brick
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option transport.socket.bind-address 127.0.0.1
  option transport.socket.listen-port 7001
  subvolumes brick-lock
  option auth.addr.brick-lock.allow *
end-volume

# client.vol
volume brick1
 type protocol/client
 option transport-type tcp
 option remote-host 127.0.0.1
 option remote-port 7001
 option remote-subvolume brick-lock
end-volume

volume brick2
 type protocol/client
 option transport-type tcp
 option remote-host 127.0.0.1
 option remote-port 7002
 option remote-subvolume brick-lock
end-volume

volume afr
 type cluster/afr
 subvolumes brick1 brick2
end-volume

Thanks;
-- 
Corentin Chary
http://xf.iksaif.net



More information about the Gluster-users mailing list