It seems a bad modification.
If a bad symbol link exist, something error happens.
http://git.savannah.gnu.org/cgit/gluster.git/commit/?id=4e5c297d7c3480d0d3ab
1c0c2a184c6a4fb801ef
diff --git a/xlators/storage/posix/src/posix.c
b/xlators/storage/posix/src/posix.c
index 534db05..c20c7fe 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -853,6 +853,7 @@ posix_unlink (call_frame_t *frame, xlator_t *this,
int32_t op_ret = -1;
int32_t op_errno = 0;
char * real_path = NULL;
+ int32_t fd = -1;
DECLARE_OLD_FS_ID_VAR;
@@ -863,6 +864,15 @@ posix_unlink (call_frame_t *frame, xlator_t *this,
SET_FS_ID (frame->root->uid, frame->root->gid);
MAKE_REAL_PATH (real_path, this, loc->path);
+ fd = open (real_path, O_RDONLY);
+ if (fd == -1) {
+ op_ret = -1;
+ op_errno = errno;
+ gf_log (this->name, GF_LOG_WARNING,
+ "open of %s failed: %s", loc->path,
strerror
(op_errno));
+ goto out;
+ }
+
op_ret = unlink (real_path);
if (op_ret == -1) {
op_errno = errno;
@@ -876,8 +886,13 @@ posix_unlink (call_frame_t *frame, xlator_t *this,
out:
SET_TO_OLD_FS_ID ();
frame->root->rsp_refs = NULL;
+
STACK_UNWIND (frame, op_ret, op_errno);
+ if (fd != -1) {
+ close (fd);
+ }
+
return 0;
}
-----Original Message-----
From: gluster-users-bounces at gluster.org
[mailto:gluster-users-bounces at gluster.org] On Behalf Of Kirby Zhou
Sent: Thursday, March 26, 2009 6:18 PM
To: gluster-users at gluster.org
Subject: [Gluster-users] 2.0.0rc7 can not remove symbol-links
2.0.0rc7 can not remove symbol-links
[root at xen-727057 ~]# mount.glusterfs ~/x.vol /mnt/
[root at xen-727057 ~]# ll /mnt/
log/ rpmbuild/ wxp/ XXX/
[root at xen-727057 ~]# ll /mnt/XXX/
total 0
lrwxrwxrwx 1 root root 1 Mar 26 18:13 X -> y
[root at xen-727057 ~]# rm /mnt/XXX/X
rm: remove symbolic link `/mnt/XXX/X'? y
rm: cannot remove `/mnt/XXX/X': No such file or directory
With a simple volume:
#server
volume brick1-posix
type storage/posix # POSIX FS translator
option directory /exports/disk1 # Export this directory
end-volume
volume brick1-locks
type features/locks
subvolumes brick1-posix
end-volume
volume brick1
type performance/io-threads
subvolumes brick1-locks
option thread-count 16
option cache-size 256m
end-volume
### Add network serving capability to above brick.
volume server
type protocol/server
option transport-type tcp/server # For TCP/IP transport
option listen-port 6986 # Default is 6996
option client-volume-filename /etc/glusterfs/glusterfs.vol
subvolumes brick1
option auth.ip.brick1.allow 10.10.*,10.11.*,10.15.*,192.168.*
end-volume
#client
volume 10.10.123.17-brick1
type protocol/client
option transport-type tcp/client
option remote-host 10.10.123.17
option remote-port 6986
option transport-timeout 5
option remote-subvolume brick1
end-volume
FYI
_______________________________________________
Gluster-users mailing list
Gluster-users at gluster.org
http://zresearch.com/cgi-bin/mailman/listinfo/gluster-users