diff options
| author | Amar Tumballi <amar@gluster.com> | 2010-10-13 00:12:49 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-10-19 06:30:31 -0700 | 
| commit | 51ddf878b1d74369434c6b95b49a76bce32fd4b1 (patch) | |
| tree | 537de2a80112486321f82a591ff54e3c5c5e35dd /xlators/storage/posix/src/posix.c | |
| parent | e788e2dec0c90c77a88b561636df569d94c8e638 (diff) | |
glusterd-rebalance: if file is open, don't do rebalance
Signed-off-by: Amar Tumballi <amar@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1934 (Server segfault with 3.1 platform ISO during volume expansion)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1934
Diffstat (limited to 'xlators/storage/posix/src/posix.c')
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 25 | 
1 files changed, 25 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index fbdc2a13d77..c69b7c872d5 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -3031,6 +3031,22 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,                  goto out;          } +        if (loc->inode && name && !strcmp (name, GLUSTERFS_OPEN_FD_COUNT)) { +		if (!list_empty (&loc->inode->fd_list)) { +			ret = dict_set_uint32 (dict, (char *)name, 1); +                        if (ret < 0) +                                gf_log (this->name, GF_LOG_WARNING, +                                        "Failed to set dictionary value for %s", +                                        name); +		} else { +			ret = dict_set_uint32 (dict, (char *)name, 0); +                        if (ret < 0) +                                gf_log (this->name, GF_LOG_WARNING, +                                        "Failed to set dictionary value for %s", +                                        name); +		} +                goto done; +        }  	if (loc->inode && IA_ISREG (loc->inode->ia_type) && name &&  	    (strcmp (name, GF_XATTR_PATHINFO_KEY) == 0)) {                  snprintf (host_buf, 1024, "%s:%s", priv->hostname, @@ -3171,6 +3187,15 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,                  goto out;          } +        if (name && !strcmp (name, GLUSTERFS_OPEN_FD_COUNT)) { +                ret = dict_set_uint32 (dict, (char *)name, 1); +                if (ret < 0) +                        gf_log (this->name, GF_LOG_WARNING, +                                "Failed to set dictionary value for %s", +                                name); +                goto done; +        } +          size = sys_flistxattr (_fd, NULL, 0);          if (size == -1) {                  op_errno = errno;  | 
