| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
blockResponse *
block_delete_1(blockDelete *argp, CLIENT *clnt)
{
static blockResponse clnt_res; <<<<<<-------- Same memory is used by everyone
memset((char *)&clnt_res, 0, sizeof(clnt_res)); <<<<<---- Here memset is happening
if (clnt_call (clnt, BLOCK_DELETE,
(xdrproc_t) xdr_blockDelete, (caddr_t) argp,
(xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
TIMEOUT) != RPC_SUCCESS) {
return (NULL);
}
return (&clnt_res); <<<<<---- ptr to this memory is returned.
}
So while Thread-1 is returned "return (&clnt_res);" another thread could be
doing "memset((char *)&clnt_res, 0, sizeof(clnt_res));"
This seem to be a day-1 gluster-blockd bug from the looks of it.
Change-Id: I3fc76d7814c4fe5b286577586ec44d752dcc73f0
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes rpcgen file stat issue.
rpcgen, before generating a file, it first stats the file, in case if file
already exists, it do not try to override, instead bails out.
[...]
Making all in rpcl
make[3]: Entering directory
`/builddir/build/BUILD/gluster-block-0.2.1/rpc/rpcl'
rpcgen -h -o ../../rpc/rpcl/block.h block.x
file `../../rpc/rpcl/block.h' already exists and may be overwritten
make[3]: Leaving directory
`/builddir/build/BUILD/gluster-block-0.2.1/rpc/rpcl'
make[3]: *** [block.h] Error 1
[...]
So the fix will be not to package the rpcgen generated file in the
source tarball.
Change-Id: I1d136a25c49aeea2d84e96bf065fe46bf0214a13
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The connect() in daemon takes too long to return for invalid IP addresses,
the delay is much higher that the CLI RPC Timeout, hence the CLI returns
before the daemon returns. Hence SIGPIPE is issued.
The issue can be fixed by increasing the CLI RPC clnt_call() TIMEOUT.
This should actually be handled like:
struct timeval tv;
CLIENT *cl;
cl=clnt_create("somehost", SOMEPROG, SOMEVERS, "tcp");
if (cl=NULL) {
exit(1);
}
tv.tv_sec=60; /* change timeout to 1 minute */
tv.tv_usec=0;
clnt_control(cl, CLSET_TIMEOUT, &tv);
But currently there is a bug in sun RPC which ignores TIMEOUT set using
cln_control. See [1]
Hence using regex to override default TIMEOUT generated in rpc code.
[1] https://lists.gnu.org/archive/html/bug-glibc/2000-10/msg00095.html
Change-Id: I75eceea6b9f362f8bf8c2fcb687155635efc65d7
Fixes: #15
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
Remove all generated files and have them generated when needed. This
build a libgbrpcxdr.la archive with the .o files that gets linked into
the libgbrpc.la archive. 'rpcgen' generates .c code that triggers
warnings for various compilers. This is not something that can easily be
fixed, so add rpc-pragmas.h (like GlusterFS does) to prevent these
warnings.
There are some functions used by gluster-blockd.c that are not part of
the header and were manually added to block.h. Because block.h get
regenerated now, these functions have been added to a new file
block_svc.h.
Note that generated and compiled files land in $(top_builddir). This
directory does not need to be the same as $(top_srcdir).
Change-Id: I0e764d159d6d785699537eed4e24b16883218038
Fixes: #2
Signed-off-by: Niels de Vos <ndevos@redhat.com>
|