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: 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