Update to glusterfs 3.2.5. This is a bug-fix release
This commit is contained in:
parent
6cc12c90a2
commit
49f1bffa12
13 changed files with 134 additions and 629 deletions
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: CHANGES-2011,v 1.3066 2011/11/28 08:33:16 manu Exp $
|
||||
$NetBSD: CHANGES-2011,v 1.3067 2011/11/28 08:42:38 manu Exp $
|
||||
|
||||
Changes to the packages collection and infrastructure in 2011:
|
||||
|
||||
|
@ -4865,3 +4865,4 @@ Changes to the packages collection and infrastructure in 2011:
|
|||
Updated lang/runawk to 1.4.0 [cheusov 2011-11-27]
|
||||
Updated pkgtools/pbulk-base to 0.44 [joerg 2011-11-27]
|
||||
Updated filesystems/perfuse to 20111128 [manu 2011-11-28]
|
||||
Updated filesystems/glusterfs to 3.2.5 [manu 2011-11-28]
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
# $NetBSD: Makefile,v 1.23 2011/11/24 05:36:36 manu Exp $
|
||||
# $NetBSD: Makefile,v 1.24 2011/11/28 08:42:38 manu Exp $
|
||||
#
|
||||
|
||||
DISTNAME= glusterfs-3.2.3
|
||||
PKGREVISION= 8
|
||||
DISTNAME= glusterfs-3.2.5
|
||||
CATEGORIES= filesystems
|
||||
MASTER_SITES= http://download.gluster.com/pub/gluster/glusterfs/3.2/3.2.3/
|
||||
MASTER_SITES= http://download.gluster.com/pub/gluster/glusterfs/3.2/3.2.5/
|
||||
|
||||
MAINTAINER= pkgsrc-users@NetBSD.org
|
||||
HOMEPAGE= http://www.gluster.org/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@comment $NetBSD: PLIST,v 1.8 2011/09/27 12:45:02 manu Exp $
|
||||
@comment $NetBSD: PLIST,v 1.9 2011/11/28 08:42:38 manu Exp $
|
||||
etc/glusterfs/xattr-init.sh
|
||||
etc/glusterfs/glusterfs.vol.sample
|
||||
etc/glusterfs/glusterfsd.vol.sample
|
||||
|
@ -7,44 +7,44 @@ etc/glusterfs/xattr-init.sh
|
|||
lib/libglusterfs.la
|
||||
lib/libgfrpc.la
|
||||
lib/libgfxdr.la
|
||||
lib/glusterfs/3.2.3/auth/addr.la
|
||||
lib/glusterfs/3.2.3/auth/login.la
|
||||
lib/glusterfs/3.2.3/rpc-transport/socket.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/afr.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/dht.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/distribute.so
|
||||
lib/glusterfs/3.2.3/xlator/cluster/nufa.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/pump.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/replicate.so
|
||||
lib/glusterfs/3.2.3/xlator/cluster/stripe.la
|
||||
lib/glusterfs/3.2.3/xlator/cluster/switch.la
|
||||
lib/glusterfs/3.2.3/xlator/debug/error-gen.la
|
||||
lib/glusterfs/3.2.3/xlator/debug/io-stats.la
|
||||
lib/glusterfs/3.2.3/xlator/debug/trace.la
|
||||
lib/glusterfs/3.2.3/xlator/encryption/rot-13.la
|
||||
lib/glusterfs/3.2.3/xlator/features/access-control.so
|
||||
lib/glusterfs/3.2.3/xlator/features/locks.la
|
||||
lib/glusterfs/3.2.3/xlator/features/mac-compat.la
|
||||
lib/glusterfs/3.2.3/xlator/features/marker.la
|
||||
lib/glusterfs/3.2.3/xlator/features/posix-locks.so
|
||||
lib/glusterfs/3.2.3/xlator/features/quiesce.la
|
||||
lib/glusterfs/3.2.3/xlator/features/quota.la
|
||||
lib/glusterfs/3.2.3/xlator/features/read-only.la
|
||||
lib/glusterfs/3.2.3/xlator/mgmt/glusterd.la
|
||||
lib/glusterfs/3.2.3/xlator/mount/fuse.la
|
||||
lib/glusterfs/3.2.3/xlator/nfs/server.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/io-cache.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/io-threads.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/quick-read.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/read-ahead.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/stat-prefetch.la
|
||||
lib/glusterfs/3.2.3/xlator/performance/write-behind.la
|
||||
lib/glusterfs/3.2.3/xlator/protocol/client.la
|
||||
lib/glusterfs/3.2.3/xlator/protocol/server.la
|
||||
lib/glusterfs/3.2.3/xlator/storage/posix.la
|
||||
lib/glusterfs/3.2.3/xlator/system/posix-acl.la
|
||||
lib/glusterfs/3.2.3/xlator/testing/features/trash.la
|
||||
lib/glusterfs/3.2.3/xlator/testing/performance/symlink-cache.la
|
||||
lib/glusterfs/3.2.5/auth/addr.la
|
||||
lib/glusterfs/3.2.5/auth/login.la
|
||||
lib/glusterfs/3.2.5/rpc-transport/socket.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/afr.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/dht.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/distribute.so
|
||||
lib/glusterfs/3.2.5/xlator/cluster/nufa.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/pump.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/replicate.so
|
||||
lib/glusterfs/3.2.5/xlator/cluster/stripe.la
|
||||
lib/glusterfs/3.2.5/xlator/cluster/switch.la
|
||||
lib/glusterfs/3.2.5/xlator/debug/error-gen.la
|
||||
lib/glusterfs/3.2.5/xlator/debug/io-stats.la
|
||||
lib/glusterfs/3.2.5/xlator/debug/trace.la
|
||||
lib/glusterfs/3.2.5/xlator/encryption/rot-13.la
|
||||
lib/glusterfs/3.2.5/xlator/features/access-control.so
|
||||
lib/glusterfs/3.2.5/xlator/features/locks.la
|
||||
lib/glusterfs/3.2.5/xlator/features/mac-compat.la
|
||||
lib/glusterfs/3.2.5/xlator/features/marker.la
|
||||
lib/glusterfs/3.2.5/xlator/features/posix-locks.so
|
||||
lib/glusterfs/3.2.5/xlator/features/quiesce.la
|
||||
lib/glusterfs/3.2.5/xlator/features/quota.la
|
||||
lib/glusterfs/3.2.5/xlator/features/read-only.la
|
||||
lib/glusterfs/3.2.5/xlator/mgmt/glusterd.la
|
||||
lib/glusterfs/3.2.5/xlator/mount/fuse.la
|
||||
lib/glusterfs/3.2.5/xlator/nfs/server.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/io-cache.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/io-threads.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/quick-read.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/read-ahead.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/stat-prefetch.la
|
||||
lib/glusterfs/3.2.5/xlator/performance/write-behind.la
|
||||
lib/glusterfs/3.2.5/xlator/protocol/client.la
|
||||
lib/glusterfs/3.2.5/xlator/protocol/server.la
|
||||
lib/glusterfs/3.2.5/xlator/storage/posix.la
|
||||
lib/glusterfs/3.2.5/xlator/system/posix-acl.la
|
||||
lib/glusterfs/3.2.5/xlator/testing/features/trash.la
|
||||
lib/glusterfs/3.2.5/xlator/testing/performance/symlink-cache.la
|
||||
man/man8/glusterfs.8
|
||||
man/man8/mount.glusterfs.8
|
||||
man/man8/gluster.8
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
$NetBSD: distinfo,v 1.19 2011/11/24 05:36:36 manu Exp $
|
||||
$NetBSD: distinfo,v 1.20 2011/11/28 08:42:38 manu Exp $
|
||||
|
||||
SHA1 (glusterfs-3.2.3.tar.gz) = 7a36e496d9ac3fbf11123bb42884445334d07f06
|
||||
RMD160 (glusterfs-3.2.3.tar.gz) = 89d6a5f9c1362e1fe4d88e69465311069552d319
|
||||
Size (glusterfs-3.2.3.tar.gz) = 2376000 bytes
|
||||
SHA1 (glusterfs-3.2.5.tar.gz) = 10f2e81ec7f118432c279236509fc3d89ab8f690
|
||||
RMD160 (glusterfs-3.2.5.tar.gz) = 13d0f8c1a2a1e7d39a43899bc9d09f7f13fea844
|
||||
Size (glusterfs-3.2.5.tar.gz) = 2413509 bytes
|
||||
SHA1 (patch-aa) = bfd1dbcb6945dd387d88bd96616e4bc29c3e0628
|
||||
SHA1 (patch-ab) = d240bfd8bd8e5994f612a3387cd75f30bb91c8d7
|
||||
SHA1 (patch-ac) = 21d86775c2174ea630404a1a329dfd49c7f493d9
|
||||
SHA1 (patch-ae) = 98c7ae07209e0870851007cda087ec381bd1f551
|
||||
SHA1 (patch-ae) = d5d0dce5cb82c61fbb02289123d0be34ce835e18
|
||||
SHA1 (patch-af) = ac9333cc55ad0cf42233e3c69b32e22c483c077a
|
||||
SHA1 (patch-an) = 21f56d5379023bd2ea3432b4e3e3f9a0979c496f
|
||||
SHA1 (patch-ao) = 26e350655e276c8cb3ecb3cc9b7c0a4e7ab2ff7b
|
||||
SHA1 (patch-ar) = 27d0288083d06623a328e851a776095aa1f1d2df
|
||||
SHA1 (patch-as) = a2c637bf52151e85969927f281e432693ac539ba
|
||||
SHA1 (patch-ax) = 054942de06c3df60ffc0c190dd2702f77edd9ec6
|
||||
SHA1 (patch-ba) = dba2b6826b42c398fc590b91d1f58b88c7bcc7f2
|
||||
SHA1 (patch-bb) = f7b79676322064396242b0f3e6cd81c180c7dd8e
|
||||
SHA1 (patch-be) = 72fd161c97ac384b93411e120c4f4b798e45d975
|
||||
SHA1 (patch-be) = f178ee8106c349354f7f21bc37fca3ca47ca9e44
|
||||
SHA1 (patch-bf) = 0f182ccd632b5e622237bd95c9978c113f8ce531
|
||||
SHA1 (patch-bh) = d88d4e8b863f36b2c27c4f5eff2fdc235ef76fd8
|
||||
SHA1 (patch-bj) = 9b8b2374d4c197e60a1990b09be1117bf0c0a552
|
||||
|
@ -25,12 +24,12 @@ SHA1 (patch-bm) = 401fe1c2bbf71474e2238c3e6c3fe5a5c614c4f5
|
|||
SHA1 (patch-bn) = 98ce48be2239f42edc4ef8e26644305f6aa0a5eb
|
||||
SHA1 (patch-bo) = be0dcdcc0acb6a5e54664372c34a28f1307fbd00
|
||||
SHA1 (patch-bp) = 77463ea7d739d532e20dbe5bd66d58c22ba0c248
|
||||
SHA1 (patch-bq) = 7a59abc6ea5966a9f99be86fe31e3507f02b932a
|
||||
SHA1 (patch-br) = c60d583f8f658ff56717a00b3cc1b5bd983611e6
|
||||
SHA1 (patch-bq) = 083f22383b88890f9e6f2c90a4435657ccd10579
|
||||
SHA1 (patch-br) = 5cd1d2692e34173f7e9f60b170373d499067d224
|
||||
SHA1 (patch-bs) = d2f79ef19143f74f5a12187ea2dfd9e1ed92b726
|
||||
SHA1 (patch-bt) = 58f8e5ce66e6b691dd9972bd649dc18f7d5a258a
|
||||
SHA1 (patch-bu) = 006a6802958fad3950eadad456e362b7f4c2ca4a
|
||||
SHA1 (patch-bv) = 2c3b654e5858bf0948307ca6ae7048e276fca9ef
|
||||
SHA1 (patch-bw) = dca12eb81163fd1a0ada13165e990ddcb8fefbf2
|
||||
SHA1 (patch-bx) = b2aca473091bb64d14c6da046379d33ca8a5785e
|
||||
SHA1 (patch-by) = 0ad488ceea4d388636fb2cc732e6dfadecf0afbf
|
||||
SHA1 (patch-bz) = 1b5756377e6eabfb93e07a8aab8007fca40e8a38
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: patch-ae,v 1.9 2011/11/24 05:36:36 manu Exp $
|
||||
$NetBSD: patch-ae,v 1.10 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
On NetBSD use libperfuse(3), rename umount2(2) as unmount(2), and skip
|
||||
inexistant /etc/mtab management.
|
||||
|
@ -7,8 +7,8 @@ Include <signal.h> for sigprocmask(2)
|
|||
|
||||
Use /sbin/mount on NetBSD, not /bin/mount
|
||||
|
||||
--- contrib/fuse-lib/mount.c.orig 2011-08-23 14:31:36.000000000 +0200
|
||||
+++ contrib/fuse-lib/mount.c 2011-11-24 03:31:11.000000000 +0100
|
||||
--- contrib/fuse-lib/mount.c.orig 2011-11-14 14:45:58.000000000 +0100
|
||||
+++ contrib/fuse-lib/mount.c 2011-11-27 08:53:09.000000000 +0100
|
||||
@@ -19,16 +19,30 @@
|
||||
#include <limits.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -78,3 +78,24 @@ Use /sbin/mount on NetBSD, not /bin/mount
|
|||
}
|
||||
res = waitpid (res, &status, 0);
|
||||
if (res == -1)
|
||||
@@ -562,8 +580,9 @@
|
||||
goto out;
|
||||
else
|
||||
mounted = 1;
|
||||
|
||||
+#ifndef __NetBSD__
|
||||
if (geteuid () == 0) {
|
||||
char *newmnt = fuse_mnt_resolve_path ("fuse", mountpoint);
|
||||
|
||||
if (!newmnt) {
|
||||
@@ -580,8 +599,9 @@
|
||||
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
+#endif /* __NetBSD__ */
|
||||
|
||||
out:
|
||||
if (ret == -1) {
|
||||
if (mounted)
|
||||
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
$NetBSD: patch-ba,v 1.7 2011/09/18 01:36:06 manu Exp $
|
||||
|
||||
glibc dirname() modify the string it is given and returns it.
|
||||
glusterfs takes this behavior for granted, and assume that if it
|
||||
gives a malloc'ed string to dirname(), then it can free()) the
|
||||
return value.
|
||||
|
||||
Here is what SUSv2 says:
|
||||
http://opengroup.org/onlinepubs/007908799/xsh/dirname.html
|
||||
"The dirname() function may modify the string pointed to by path,
|
||||
and may return a pointer to static storage"
|
||||
|
||||
At least NetBSD returns a static storage. glusterfs will return it to
|
||||
a calling function that has the responsability to free it, causing
|
||||
a SIGSEGV.
|
||||
|
||||
--- xlators/performance/stat-prefetch/src/stat-prefetch.c.orig 2011-08-23 14:31:41.000000000 +0200
|
||||
+++ xlators/performance/stat-prefetch/src/stat-prefetch.c 2011-09-17 15:45:29.000000000 +0200
|
||||
@@ -949,18 +949,24 @@
|
||||
path = dirname (cpy);
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
- *parent = path;
|
||||
+ *parent = gf_strdup (path);
|
||||
+ if (*parent == NULL)
|
||||
+ goto out;
|
||||
break;
|
||||
case 1:
|
||||
- *grand_parent = path;
|
||||
+ *grand_parent = gf_strdup (path);
|
||||
+ if (*grand_parent == NULL)
|
||||
+ goto out;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
out:
|
||||
+ if (cpy != NULL)
|
||||
+ GF_FREE(cpy);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
$NetBSD: patch-be,v 1.6 2011/07/23 01:14:44 manu Exp $
|
||||
$NetBSD: patch-be,v 1.7 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
basename() and dirname() are not supposed to be thread-safe, and NetBSD's
|
||||
implementation is not. glusterfs assume the functions are thread-safe.
|
||||
Borrow basename() and rdirname() form glibc and make NetBSD use them.
|
||||
|
||||
--- libglusterfs/src/compat.c.orig 2011-07-14 14:21:10.000000000 +0200
|
||||
+++ libglusterfs/src/compat.c 2011-07-22 09:00:15.000000000 +0200
|
||||
@@ -529,8 +529,412 @@
|
||||
--- libglusterfs/src/compat.c.orig 2011-11-27 07:55:13.000000000 +0100
|
||||
+++ libglusterfs/src/compat.c 2011-11-27 07:55:13.000000000 +0100
|
||||
@@ -550,8 +550,412 @@
|
||||
|
||||
|
||||
}
|
||||
#endif /* GF_SOLARIS_HOST_OS */
|
||||
|
||||
+#ifdef __NetBSD__
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
$NetBSD: patch-bq,v 1.7 2011/10/06 02:19:06 manu Exp $
|
||||
$NetBSD: patch-bq,v 1.8 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
Make sure gluseterfsd listens on the same address family as glusterd
|
||||
|
||||
--- xlators/mgmt/glusterd/src/glusterd-utils.c.orig 2011-08-23 14:31:40.000000000 +0200
|
||||
+++ xlators/mgmt/glusterd/src/glusterd-utils.c 2011-09-17 15:45:30.000000000 +0200
|
||||
--- xlators/mgmt/glusterd/src/glusterd-utils.c.orig 2011-11-27 07:38:16.000000000 +0100
|
||||
+++ xlators/mgmt/glusterd/src/glusterd-utils.c 2011-11-27 07:38:16.000000000 +0100
|
||||
@@ -88,8 +88,52 @@
|
||||
//TODO: set timestamp
|
||||
return 0;
|
||||
|
@ -57,7 +57,7 @@ Make sure gluseterfsd listens on the same address family as glusterd
|
|||
glusterd_is_loopback_localhost (const struct sockaddr *sa, char *hostname)
|
||||
{
|
||||
GF_ASSERT (sa);
|
||||
@@ -1030,8 +1074,10 @@
|
||||
@@ -1032,8 +1076,10 @@
|
||||
int rdma_port = 0;
|
||||
FILE *file = NULL;
|
||||
gf_boolean_t is_locked = _gf_false;
|
||||
|
@ -68,7 +68,7 @@ Make sure gluseterfsd listens on the same address family as glusterd
|
|||
GF_ASSERT (volinfo);
|
||||
GF_ASSERT (brickinfo);
|
||||
|
||||
@@ -1110,14 +1156,19 @@
|
||||
@@ -1112,14 +1158,19 @@
|
||||
port = brickinfo->port;
|
||||
if (!port)
|
||||
port = pmap_registry_alloc (THIS);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: patch-br,v 1.8 2011/10/30 05:07:15 manu Exp $
|
||||
$NetBSD: patch-br,v 1.9 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
Use linkat(2) if available so that we can make a hardlink to symlink
|
||||
itself, instead of symlink destination, like link(2) does. This is
|
||||
|
@ -8,11 +8,10 @@ glusterfsd really wants to hardlink the symlink and not its target.
|
|||
If linkat(2) is inavailable, then moving a symlink on distributed
|
||||
volumes fails.
|
||||
|
||||
Also pull upstreampatch that fix inode generation so that values
|
||||
are reliable
|
||||
Correctly cas gfid when producing inode to avoid it getting garbled
|
||||
|
||||
--- xlators/storage/posix/src/posix.c.orig 2011-08-23 14:31:42.000000000 +0200
|
||||
+++ xlators/storage/posix/src/posix.c 2011-10-28 14:59:13.000000000 +0200
|
||||
--- xlators/storage/posix/src/posix.c.orig 2011-11-14 14:46:03.000000000 +0100
|
||||
+++ xlators/storage/posix/src/posix.c 2011-11-27 10:09:03.000000000 +0100
|
||||
@@ -36,8 +36,12 @@
|
||||
#ifndef GF_BSD_HOST_OS
|
||||
#include <alloca.h>
|
||||
|
@ -26,53 +25,18 @@ are reliable
|
|||
#include "md5.h"
|
||||
#include "checksum.h"
|
||||
#include "dict.h"
|
||||
@@ -244,8 +248,23 @@
|
||||
@@ -286,9 +290,9 @@
|
||||
int i = 0;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
+void
|
||||
+posix_fill_ino_from_gfid (xlator_t *this, struct iatt *buf)
|
||||
+{
|
||||
+ uint64_t temp_ino = 0;
|
||||
+ int j = 0;
|
||||
+ int i = 0;
|
||||
+
|
||||
+ /* consider least significant 8 bytes of value out of gfid */
|
||||
+ for (i = 15; i > (15 - 8); i--) {
|
||||
/* consider least significant 8 bytes of value out of gfid */
|
||||
for (i = 15; i > (15 - 8); i--) {
|
||||
- temp_ino += buf->ia_gfid[i] << j;
|
||||
+ temp_ino += (uint64_t)(buf->ia_gfid[i]) << j;
|
||||
+ j += 8;
|
||||
+ }
|
||||
+
|
||||
+ buf->ia_ino = temp_ino;
|
||||
+}
|
||||
j += 8;
|
||||
}
|
||||
|
||||
int
|
||||
posix_lstat_with_gfid (xlator_t *this, const char *path, struct iatt *stbuf_p)
|
||||
{
|
||||
@@ -265,8 +284,10 @@
|
||||
ret = posix_fill_gfid_path (this, path, &stbuf);
|
||||
if (ret)
|
||||
gf_log_callingfn (this->name, GF_LOG_DEBUG, "failed to get gfid");
|
||||
|
||||
+ posix_fill_ino_from_gfid (this, &stbuf);
|
||||
+
|
||||
if (stbuf_p)
|
||||
*stbuf_p = stbuf;
|
||||
out:
|
||||
return ret;
|
||||
@@ -292,8 +313,10 @@
|
||||
ret = posix_fill_gfid_fd (this, fd, &stbuf);
|
||||
if (ret)
|
||||
gf_log_callingfn (this->name, GF_LOG_DEBUG, "failed to get gfid");
|
||||
|
||||
+ posix_fill_ino_from_gfid (this, &stbuf);
|
||||
+
|
||||
if (stbuf_p)
|
||||
*stbuf_p = stbuf;
|
||||
|
||||
out:
|
||||
@@ -1232,8 +1255,13 @@
|
||||
buf->ia_ino = temp_ino;
|
||||
@@ -1311,8 +1315,13 @@
|
||||
loc->path, strerror (op_errno));
|
||||
goto out;
|
||||
}
|
||||
|
@ -86,7 +50,7 @@ are reliable
|
|||
|
||||
if (op_ret == -1) {
|
||||
op_errno = errno;
|
||||
@@ -2125,9 +2153,20 @@
|
||||
@@ -2204,9 +2213,20 @@
|
||||
newparentpath, strerror (op_errno));
|
||||
goto out;
|
||||
}
|
||||
|
@ -107,23 +71,23 @@ are reliable
|
|||
op_errno = errno;
|
||||
gf_log (this->name, GF_LOG_ERROR,
|
||||
"link %s to %s failed: %s",
|
||||
@@ -4376,13 +4415,15 @@
|
||||
@@ -4455,14 +4475,15 @@
|
||||
|
||||
/* pick ENOENT to indicate EOF */
|
||||
op_errno = errno;
|
||||
|
||||
- if (whichop == GF_FOP_READDIRP) {
|
||||
- list_for_each_entry (tmp_entry, &entries.list, list) {
|
||||
- strcpy (entry_path + real_path_len + 1,
|
||||
- tmp_entry->d_name);
|
||||
- posix_lstat_with_gfid (this, entry_path, &stbuf);
|
||||
+ list_for_each_entry (tmp_entry, &entries.list, list) {
|
||||
+ strcpy (entry_path + real_path_len + 1,
|
||||
+ tmp_entry->d_name);
|
||||
+ posix_lstat_with_gfid (this, entry_path, &stbuf);
|
||||
+ tmp_entry->d_ino = stbuf.ia_ino;
|
||||
+
|
||||
+ if (whichop == GF_FOP_READDIRP) {
|
||||
if (whichop == GF_FOP_READDIRP) {
|
||||
- list_for_each_entry (tmp_entry, &entries.list, list) {
|
||||
- strcpy (entry_path + real_path_len + 1,
|
||||
- tmp_entry->d_name);
|
||||
- posix_lstat_with_gfid (this, entry_path, &stbuf);
|
||||
- tmp_entry->d_ino = stbuf.ia_ino;
|
||||
tmp_entry->d_stat = stbuf;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: patch-bw,v 1.1 2011/10/16 05:45:19 manu Exp $
|
||||
$NetBSD: patch-bw,v 1.2 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
usleep(3) shall not be called with argument higher than 1s
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
$NetBSD: patch-bx,v 1.1 2011/10/25 08:34:28 manu Exp $
|
||||
$NetBSD: patch-bx,v 1.2 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
glusterfs may need lots of data, raise the limit and hope there's enough
|
||||
ram ...
|
||||
|
|
|
@ -1,458 +0,0 @@
|
|||
$NetBSD: patch-by,v 1.1 2011/10/30 05:07:15 manu Exp $
|
||||
|
||||
Pull inode generation fix from upstream
|
||||
|
||||
|
||||
--- xlators/cluster/afr/src/afr-common.c.orig 2011-08-23 14:31:39.000000000 +0200
|
||||
+++ xlators/cluster/afr/src/afr-common.c 2011-10-29 10:13:59.000000000 +0200
|
||||
@@ -891,12 +891,9 @@
|
||||
|
||||
first_up_child = afr_first_up_child (priv);
|
||||
|
||||
if (child_index == first_up_child) {
|
||||
- local->cont.lookup.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- first_up_child);
|
||||
+ local->cont.lookup.ino = buf->ia_ino;
|
||||
}
|
||||
|
||||
if (local->success_count == 0) {
|
||||
if (local->op_errno != ESTALE)
|
||||
@@ -919,11 +916,10 @@
|
||||
uuid_copy (local->loc.gfid, buf->ia_gfid);
|
||||
uuid_copy (local->loc.pargfid,
|
||||
postparent->ia_gfid);
|
||||
|
||||
- lookup_buf->ia_ino = afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
+ lookup_buf->ia_ino = buf->ia_ino;
|
||||
+
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this,
|
||||
local->cont.lookup.inode,
|
||||
priv->read_child);
|
||||
@@ -1014,12 +1010,9 @@
|
||||
|
||||
first_up_child = afr_first_up_child (priv);
|
||||
|
||||
if (child_index == first_up_child) {
|
||||
- local->cont.lookup.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- first_up_child);
|
||||
+ local->cont.lookup.ino = buf->ia_ino;
|
||||
}
|
||||
|
||||
/* in case of revalidate, we need to send stat of the
|
||||
* child whose stat was sent during the first lookup.
|
||||
@@ -1039,11 +1032,9 @@
|
||||
local->cont.lookup.postparent = *postparent;
|
||||
|
||||
*lookup_buf = *buf;
|
||||
|
||||
- lookup_buf->ia_ino = afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
+ lookup_buf->ia_ino = buf->ia_ino;
|
||||
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this,
|
||||
local->cont.lookup.inode,
|
||||
@@ -1581,11 +1572,8 @@
|
||||
|
||||
call_count = afr_frame_return (frame);
|
||||
|
||||
if (call_count == 0) {
|
||||
- local->cont.fsync.prebuf.ia_ino = local->cont.fsync.ino;
|
||||
- local->cont.fsync.postbuf.ia_ino = local->cont.fsync.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (fsync, frame, local->op_ret, local->op_errno,
|
||||
&local->cont.fsync.prebuf,
|
||||
&local->cont.fsync.postbuf);
|
||||
}
|
||||
--- xlators/cluster/afr/src/afr-dir-read.c.orig 2011-08-23 14:31:39.000000000 +0200
|
||||
+++ xlators/cluster/afr/src/afr-dir-read.c 2011-10-29 10:14:22.000000000 +0200
|
||||
@@ -494,12 +494,8 @@
|
||||
if (op_ret == -1)
|
||||
goto out;
|
||||
|
||||
list_for_each_entry_safe (entry, tmp, &entries->list, list) {
|
||||
- entry->d_ino = afr_itransform (entry->d_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
-
|
||||
if ((local->fd->inode == local->fd->inode->table->root)
|
||||
&& !strcmp (entry->d_name, GF_REPLICATE_TRASH_DIR)) {
|
||||
list_del_init (&entry->list);
|
||||
GF_FREE (entry);
|
||||
@@ -519,9 +515,8 @@
|
||||
{
|
||||
afr_private_t * priv = NULL;
|
||||
afr_local_t * local = NULL;
|
||||
xlator_t ** children = NULL;
|
||||
- ino_t inum = 0;
|
||||
int call_child = 0;
|
||||
int first_call_child = 0;
|
||||
int ret = 0;
|
||||
gf_dirent_t * entry = NULL;
|
||||
@@ -581,15 +576,8 @@
|
||||
}
|
||||
|
||||
if (op_ret != -1) {
|
||||
list_for_each_entry_safe (entry, tmp, &entries->list, list) {
|
||||
- inum = afr_itransform (entry->d_ino, priv->child_count,
|
||||
- call_child);
|
||||
- entry->d_ino = inum;
|
||||
- inum = afr_itransform (entry->d_stat.ia_ino,
|
||||
- priv->child_count, call_child);
|
||||
- entry->d_stat.ia_ino = inum;
|
||||
-
|
||||
if ((local->fd->inode == local->fd->inode->table->root)
|
||||
&& !strcmp (entry->d_name, GF_REPLICATE_TRASH_DIR)) {
|
||||
list_del_init (&entry->list);
|
||||
GF_FREE (entry);
|
||||
--- xlators/cluster/afr/src/afr-dir-write.c.orig 2011-08-23 14:31:39.000000000 +0200
|
||||
+++ xlators/cluster/afr/src/afr-dir-write.c 2011-10-28 06:50:34.000000000 +0200
|
||||
@@ -100,13 +100,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.create.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.create.ino;
|
||||
-
|
||||
- local->cont.create.preparent.ia_ino = local->cont.create.parent_ino;
|
||||
- local->cont.create.postparent.ia_ino = local->cont.create.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (create, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
local->cont.create.fd,
|
||||
local->cont.create.inode,
|
||||
@@ -173,13 +168,8 @@
|
||||
|
||||
if (local->success_count == 0) {
|
||||
local->cont.create.buf = *buf;
|
||||
|
||||
- local->cont.create.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
-
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this, inode,
|
||||
priv->read_child);
|
||||
} else {
|
||||
@@ -187,15 +177,8 @@
|
||||
local->read_child_index);
|
||||
}
|
||||
}
|
||||
|
||||
- if (child_index == local->first_up_child) {
|
||||
- local->cont.create.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- local->first_up_child);
|
||||
- }
|
||||
-
|
||||
if (child_index == local->read_child_index) {
|
||||
local->cont.create.read_child_buf = *buf;
|
||||
local->cont.create.preparent = *preparent;
|
||||
local->cont.create.postparent = *postparent;
|
||||
@@ -381,13 +364,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.mknod.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.mknod.ino;
|
||||
-
|
||||
- local->cont.mknod.preparent.ia_ino = local->cont.mknod.parent_ino;
|
||||
- local->cont.mknod.postparent.ia_ino = local->cont.mknod.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (mknod, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
local->cont.mknod.inode,
|
||||
unwind_buf, &local->cont.mknod.preparent,
|
||||
@@ -423,12 +401,8 @@
|
||||
local->op_ret = op_ret;
|
||||
|
||||
if (local->success_count == 0){
|
||||
local->cont.mknod.buf = *buf;
|
||||
- local->cont.mknod.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this, inode,
|
||||
priv->read_child);
|
||||
@@ -437,15 +411,8 @@
|
||||
local->read_child_index);
|
||||
}
|
||||
}
|
||||
|
||||
- if (child_index == local->first_up_child) {
|
||||
- local->cont.mknod.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- local->first_up_child);
|
||||
- }
|
||||
-
|
||||
if (child_index == local->read_child_index) {
|
||||
local->cont.mknod.read_child_buf = *buf;
|
||||
local->cont.mknod.preparent = *preparent;
|
||||
local->cont.mknod.postparent = *postparent;
|
||||
@@ -624,13 +591,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.mkdir.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.mkdir.ino;
|
||||
-
|
||||
- local->cont.mkdir.preparent.ia_ino = local->cont.mkdir.parent_ino;
|
||||
- local->cont.mkdir.postparent.ia_ino = local->cont.mkdir.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (mkdir, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
local->cont.mkdir.inode,
|
||||
unwind_buf, &local->cont.mkdir.preparent,
|
||||
@@ -667,13 +629,8 @@
|
||||
|
||||
if (local->success_count == 0) {
|
||||
local->cont.mkdir.buf = *buf;
|
||||
|
||||
- local->cont.mkdir.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- child_index);
|
||||
-
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this, inode,
|
||||
priv->read_child);
|
||||
} else {
|
||||
@@ -681,15 +638,8 @@
|
||||
local->read_child_index);
|
||||
}
|
||||
}
|
||||
|
||||
- if (child_index == local->first_up_child) {
|
||||
- local->cont.mkdir.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- local->first_up_child);
|
||||
- }
|
||||
-
|
||||
if (child_index == local->read_child_index) {
|
||||
local->cont.mkdir.read_child_buf = *buf;
|
||||
local->cont.mkdir.preparent = *preparent;
|
||||
local->cont.mkdir.postparent = *postparent;
|
||||
@@ -869,13 +819,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.link.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.link.ino;
|
||||
-
|
||||
- local->cont.link.preparent.ia_ino = local->cont.link.parent_ino;
|
||||
- local->cont.link.postparent.ia_ino = local->cont.link.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (link, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
local->cont.link.inode,
|
||||
unwind_buf, &local->cont.link.preparent,
|
||||
@@ -1099,13 +1044,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.symlink.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.symlink.ino;
|
||||
-
|
||||
- local->cont.symlink.preparent.ia_ino = local->cont.symlink.parent_ino;
|
||||
- local->cont.symlink.postparent.ia_ino = local->cont.symlink.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (symlink, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
local->cont.symlink.inode,
|
||||
unwind_buf, &local->cont.symlink.preparent,
|
||||
@@ -1141,11 +1081,8 @@
|
||||
local->op_ret = op_ret;
|
||||
|
||||
if (local->success_count == 0) {
|
||||
local->cont.symlink.buf = *buf;
|
||||
- local->cont.symlink.ino =
|
||||
- afr_itransform (buf->ia_ino, priv->child_count,
|
||||
- child_index);
|
||||
|
||||
if (priv->read_child >= 0) {
|
||||
afr_set_read_child (this, inode,
|
||||
priv->read_child);
|
||||
@@ -1154,15 +1091,8 @@
|
||||
local->read_child_index);
|
||||
}
|
||||
}
|
||||
|
||||
- if (child_index == local->first_up_child) {
|
||||
- local->cont.symlink.ino =
|
||||
- afr_itransform (buf->ia_ino,
|
||||
- priv->child_count,
|
||||
- local->first_up_child);
|
||||
- }
|
||||
-
|
||||
if (child_index == local->read_child_index) {
|
||||
local->cont.symlink.read_child_buf = *buf;
|
||||
local->cont.symlink.preparent = *preparent;
|
||||
local->cont.symlink.postparent = *postparent;
|
||||
@@ -1341,15 +1271,8 @@
|
||||
} else {
|
||||
unwind_buf = &local->cont.rename.buf;
|
||||
}
|
||||
|
||||
- unwind_buf->ia_ino = local->cont.rename.ino;
|
||||
-
|
||||
- local->cont.rename.preoldparent.ia_ino = local->cont.rename.oldparent_ino;
|
||||
- local->cont.rename.postoldparent.ia_ino = local->cont.rename.oldparent_ino;
|
||||
- local->cont.rename.prenewparent.ia_ino = local->cont.rename.newparent_ino;
|
||||
- local->cont.rename.postnewparent.ia_ino = local->cont.rename.newparent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (rename, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
unwind_buf,
|
||||
&local->cont.rename.preoldparent,
|
||||
@@ -1558,11 +1481,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.unlink.preparent.ia_ino = local->cont.unlink.parent_ino;
|
||||
- local->cont.unlink.postparent.ia_ino = local->cont.unlink.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (unlink, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
&local->cont.unlink.preparent,
|
||||
&local->cont.unlink.postparent);
|
||||
@@ -1758,11 +1678,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.rmdir.preparent.ia_ino = local->cont.rmdir.parent_ino;
|
||||
- local->cont.rmdir.postparent.ia_ino = local->cont.rmdir.parent_ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (rmdir, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
&local->cont.rmdir.preparent,
|
||||
&local->cont.rmdir.postparent);
|
||||
--- xlators/cluster/afr/src/afr-inode-read.c.orig 2011-08-23 14:31:39.000000000 +0200
|
||||
+++ xlators/cluster/afr/src/afr-inode-read.c 2011-10-28 06:50:34.000000000 +0200
|
||||
@@ -222,11 +222,8 @@
|
||||
}
|
||||
|
||||
out:
|
||||
if (unwind) {
|
||||
- if (buf)
|
||||
- buf->ia_ino = local->cont.stat.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (stat, frame, op_ret, op_errno, buf);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -344,11 +341,8 @@
|
||||
}
|
||||
|
||||
out:
|
||||
if (unwind) {
|
||||
- if (buf)
|
||||
- buf->ia_ino = local->cont.fstat.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (fstat, frame, op_ret, op_errno, buf);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -469,11 +463,8 @@
|
||||
}
|
||||
|
||||
out:
|
||||
if (unwind) {
|
||||
- if (sbuf)
|
||||
- sbuf->ia_ino = local->cont.readlink.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (readlink, frame, op_ret, op_errno, buf, sbuf);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -876,11 +867,8 @@
|
||||
}
|
||||
|
||||
out:
|
||||
if (unwind) {
|
||||
- if (buf && local)
|
||||
- buf->ia_ino = local->cont.readv.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (readv, frame, op_ret, op_errno,
|
||||
vector, count, buf, iobref);
|
||||
}
|
||||
|
||||
--- xlators/cluster/afr/src/afr-inode-write.c.orig 2011-08-23 14:31:39.000000000 +0200
|
||||
+++ xlators/cluster/afr/src/afr-inode-write.c 2011-10-28 06:50:34.000000000 +0200
|
||||
@@ -65,11 +65,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.writev.prebuf.ia_ino = local->cont.writev.ino;
|
||||
- local->cont.writev.postbuf.ia_ino = local->cont.writev.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (writev, main_frame,
|
||||
local->op_ret, local->op_errno,
|
||||
&local->cont.writev.prebuf,
|
||||
&local->cont.writev.postbuf);
|
||||
@@ -320,11 +317,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.truncate.prebuf.ia_ino = local->cont.truncate.ino;
|
||||
- local->cont.truncate.postbuf.ia_ino = local->cont.truncate.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (truncate, main_frame, local->op_ret,
|
||||
local->op_errno,
|
||||
&local->cont.truncate.prebuf,
|
||||
&local->cont.truncate.postbuf);
|
||||
@@ -531,11 +525,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.ftruncate.prebuf.ia_ino = local->cont.ftruncate.ino;
|
||||
- local->cont.ftruncate.postbuf.ia_ino = local->cont.ftruncate.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (ftruncate, main_frame, local->op_ret,
|
||||
local->op_errno,
|
||||
&local->cont.ftruncate.prebuf,
|
||||
&local->cont.ftruncate.postbuf);
|
||||
@@ -780,11 +771,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.setattr.preop_buf.ia_ino = local->cont.setattr.ino;
|
||||
- local->cont.setattr.postop_buf.ia_ino = local->cont.setattr.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (setattr, main_frame, local->op_ret,
|
||||
local->op_errno,
|
||||
&local->cont.setattr.preop_buf,
|
||||
&local->cont.setattr.postop_buf);
|
||||
@@ -990,13 +978,8 @@
|
||||
}
|
||||
UNLOCK (&frame->lock);
|
||||
|
||||
if (main_frame) {
|
||||
- local->cont.fsetattr.preop_buf.ia_ino =
|
||||
- local->cont.fsetattr.ino;
|
||||
- local->cont.fsetattr.postop_buf.ia_ino =
|
||||
- local->cont.fsetattr.ino;
|
||||
-
|
||||
AFR_STACK_UNWIND (fsetattr, main_frame, local->op_ret,
|
||||
local->op_errno,
|
||||
&local->cont.fsetattr.preop_buf,
|
||||
&local->cont.fsetattr.postop_buf);
|
24
filesystems/glusterfs/patches/patch-bz
Normal file
24
filesystems/glusterfs/patches/patch-bz
Normal file
|
@ -0,0 +1,24 @@
|
|||
$NetBSD: patch-bz,v 1.1 2011/11/28 08:42:39 manu Exp $
|
||||
|
||||
When a client detects a changed gfid, it means another machine replaced
|
||||
the node. Return ESTALE that that the stall data get flushed. This avoid
|
||||
having the changed node being inaccessible forever because lookups still
|
||||
return the old deleted node.
|
||||
|
||||
The fix is pulled from upstream.
|
||||
|
||||
--- xlators/protocol/client/src/client3_1-fops.c.orig 2011-11-28 05:54:38.000000000 +0100
|
||||
+++ xlators/protocol/client/src/client3_1-fops.c 2011-11-28 05:59:46.000000000 +0100
|
||||
@@ -2210,9 +2210,11 @@
|
||||
if ((!uuid_is_null (inode->gfid))
|
||||
&& (uuid_compare (stbuf.ia_gfid, inode->gfid) != 0)) {
|
||||
gf_log (frame->this->name, GF_LOG_WARNING,
|
||||
"gfid changed for %s", local->loc.path);
|
||||
- memcpy(&stbuf.ia_gfid, &inode->gfid, sizeof(inode->gfid));
|
||||
+ rsp.op_ret = -1;
|
||||
+ op_errno = ESTALE;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
rsp.op_ret = 0;
|
||||
|
Loading…
Reference in a new issue