| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently from the initiator side we need to login to mpath no. of
nodes individually for establishing connect with all multipathed
block devices from the client side, thus we need to execute mpath no.
of login commands (i.e. login to each server)
This can be minimized to single login command per target by configuring
all gateways for a particular target in all gateways.
Currently,
$ gluster-block create VOL/BLOCK ha 3 HOSTx,HOSTy,HOSTz 10GiB
Creates only one TPG i.e tpg1 (Read as Target Portal Group with Tag 1)
on each node/server, with one portal listening on respective IP. All
the gateways/nodes emulate same backend as target LUN with same WWN
(for multipath representation)
So at client side. we need to execute 3 commands to login all gateways
$ iscsiadm -m discovery -t st -p HOSTy -l
$ iscsiadm -m discovery -t st -p HOSTz -l
$ iscsiadm -m discovery -t st -p HOSTx -l
In the above case, user may login in any fashion, which is out of our
control. Since we have failover multipath configuration, at a given
time only one gateway can TX RX the data. so predicting active
path/connection is not possible.
With this patch,
$ gluster-block create VOL/BLOCK ha 3 HOSTx,HOSTy,HOSTz 10GiB
Creates 3 TPG's, tpg1(portal HOSTx), tpg2(portal HOSTy) and
tpg3(portal HOSTz) on all the three gateways/nodes (IN same order).
Basically, each gateway is define to every other gateway - but the
other (other than local) gateway entries are in a disabled state.
When the client starts the login sequence it issues the RPTG to the
one nodes, but now that node can respond with portal IP's for all of
the gateways.
e.g.
GW1 GW2 GW3
- tpg1/enabled - tpg1/disabled - tpg1/disabled
- tpg2/disabled - tpg2/enabled - tpg2/disabled
- tpg3/disabled - tpg3/disabled - tpg3/enabled
Advantage,
* Only one login command is needed, unlike 3 login's before,
$ iscsiadm -m discovery -t st -p ANYONEHOST -l
* Always tpg1 will be tried for making an active path/connection,
hence we can predict that the first host in the list {HOSTx,HOSTy,HOSTz}
will be tried for active connection. Hence we can be able to better
manage load on each nodes, by selectively supplying Hosts in the list.
Change-Id: I70f73b1d46812cb1bd8dc80f771ec20b0f0415bf
Fixes: #9
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch add support to enable auth while create.
The schematics of authentication setting for/while create, looks like
$ gluster-block create block-test/sample-block ha 1 auth enable \
192.168.0.105 1GiB --json-pretty
{
"IQN":"iqn.2016-12.org.gluster-block:dc6cca79-f9b7-44f5-acaf-ac81c9cc7c2e",
"USERNAME":"dc6cca79-f9b7-44f5-acaf-ac81c9cc7c2e",
"PASSWORD":"ae48635a-6902-454c-949a-f2ad0e056086",
"PORTAL(S)":[
"192.168.0.105:3260"
],
"RESULT":"SUCCESS"
}
Change-Id: Ib8f5ddd904cb879e0ee05f6a7c3c381c6615a0e4
Fixes: #5
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduce or rather implement modify command for
enabling authentication for block devices.
The schematics of authentication setting, looks like
$ gluster-block modify block-test/sample-block auth enable --json-pretty
{
"SUCCESSFUL ON":[
"192.168.0.105"
],
"IQN":"iqn.2016-12.org.gluster-block:8917def2-e90d-4406-8c9c-6d06b6851bbe",
"USERNAME":"8917def2-e90d-4406-8c9c-6d06b6851bbe",
"PASSWORD":"a3e75362-a446-45af-98d0-a1ed7e10d7f0",
"RESULT":"SUCCESS"
}
As an effect it brings changes in 'info' command response, note PASSWORD
$ gluster-block info block-test/sample-block --json-pretty
{
"NAME":"sample-block",
"VOLUME":"block-test",
"GBID":"8917def2-e90d-4406-8c9c-6d06b6851bbe",
"SIZE":1073741824,
"HA":1,
"PASSWORD":"a3e75362-a446-45af-98d0-a1ed7e10d7f0",
"BLOCK CONFIG NODE(S)":[
"192.168.0.105"
]
}
The schematics of auth disabling, looks like
$ gluster-block modify block-test/sample-block auth disable --json-pretty
{
"SUCCESSFUL ON":[
"192.168.0.105"
],
"IQN":"iqn.2016-12.org.gluster-block:add99c38-3c14-42d7-bf23-7d02f388e1e7",
"RESULT":"SUCCESS"
}
Change-Id: I06d095b50401c131ac89cc142497f21d2205164a
Fixes: #5
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is how cli response looks like, on supplying '--json*' flag to cmd-args:
$ gluster-block create block-test/sample-block1 ha 1 localhost.localdomain 1GiB --json
(or)
$ gluster-block create block-test/sample-block2 ha 1 localhost.localdomain 1GiB --json-spaced
{ "IQN": "iqn.2016-12.org.gluster-block:681af106-85f1-4a02-a122-57c80903458c", \
"PORTAL(S)": [ "localhost.localdomain:3260" ], "RESULT": "SUCCESS" }
$ gluster-block create block-test/sample-block3 ha 1 localhost.localdomain 1GiB --json-plain
{"IQN":"iqn.2016-12.org.gluster-block:0fdf6647-57f2-477f-8dd4-54a3de06e410",\
"PORTAL(S)":["localhost.localdomain:3260"],"RESULT":"SUCCESS"}
$ gluster-block create block-test/sample-block4 ha 1 localhost.localdomain 1GiB --json-pretty
{
"IQN":"iqn.2016-12.org.gluster-block:e92ca4a0-5325-4c4b-a407-9e75790e4c7f",
"PORTAL(S)":[
"localhost.localdomain:3260"
],
"RESULT":"SUCCESS"
}
Change-Id: Ie51039e3dee0b3357d2347b4087e0fbe299aa29e
Fixes: #3
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
currently,
GLOBAL CONFIG GROUP
===================
[...]
logfile=hello
-------------
Logfile to use.
[...]
i.e. configshell logs are collected at 'hello' file.
This patch will redirect configshell logs to
'GB_LOGDIR/gluster-block-configshell.log'
Change-Id: I487c6197578c24412fbec72cb8c354725614de59
Fixes: #13
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>
|
|
|
|
|
|
|
|
|
| |
portal create with FQDN or hostname seems to be not working i.e.
iscsiadm fails to discover the nodes or the otherway targetcli is unable
to export the LUN right.
Change-Id: Ibe0e2aa1b365d6c74a7974b2faf502d2c2ac38ad
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new parsed output of create and delete command will look like:
$ gluster-block create sample/sample-block ha 2 ${HOST1} ${HOST2} 1GiB
IQN: iqn.2016-12.org.gluster-block:aafea465-9167-4880-b37c-2c36db8562ea
PORTAL(S): ${HOST1}:3260 ${HOST2}:3260
RESULT: SUCCESS
$ gluster-block delete sample/sample-block
SUCCESSFUL ON: ${HOST1} ${HOST2}
RESULT: SUCCESS
Change-Id: Id98e643c62a898a1f7298b6cfeb6ddfa10397b7f
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
currently remote connect(b/w gluster-blockd's) failed cases such as,
ECONNREFUSED
No-one listening on the remote address.
ENETUNREACH
Network is unreachable.
ETIMEDOUT
Timeout while attempting connection ...
are considered as CONFIGFAIL, this patch defend on these errno's.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
problem:
say because of some reasons create failed to config on node, so it will
log CONFIGFAIL in the metafile. At the time of delete since config
failed it is obvious that block will not exist. since delete cannot find
it now it fails to delete hence returning -1.
solution:
treat delete success if there is no block with given name on that node.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
fix filename in GB_METAUPDATE_OR_GOTO()
i.e change gbid to blockname
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
improve strings
add missing log messages wherever helpful
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
| |
partial success is treated as failure.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
volserver can be considered as "localhost", as we anyway tieing-up
glusterd, gluster-blockd and cli processes.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
GB_METAUPDATE_OR_GOTO used an already opened glfs fd to update the
meta data, since we have mpath number of threads writing to the same
metadata file simultaneously, this will lead to thread concurrency and
data consistency issues.
Hence this patch protects GB_METAUPDATE_OR_GOTO with a lock and removes
fd sharing by moving glfs_creat/open and glfs_close within the MACRO.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
| |
Reported-by: Pranith Kumar K <pkarampu@redhat.com>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The response of below sub-operations as part of create are undesired
$ targetcli set global auto_add_default_portal=false
$ targetcli / saveconfig
$ targetcli set attributes generate_node_acls=1 demo_mode_write_protect=0
Hence redirecting them to '/dev/null'
This patch also fix a bug in the previous patch
i.e. missed inverting [!] function return in if()
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
The portal that target listens on by default will be 0.0.0.0;
With this patch we will be changing that to hostname of local machine.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
| |
replace fprintf calls with LOG()
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before:
------
rpc clnt_call() is synchronous, for a multipath request each remote call
has to wait until the previous remote call returns i,e each remote op
happens in serial.
After:
-----
As we now threadify the remote calls, all the remote call's happens
in parallel shrinking the overall latency for create and delete requests.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
till now we have '/block-meta' dir for meta files and actual block files
used to reside in '/' dir. From now, lets place block files in '/block-store'
So, this is how it looks like:
$ tree /mnt/
/mnt/
├── block-meta
│ ├── meta.lock
│ └── TARGET
└── block-store
└── 103e4cf1-bf41-404a-9fe1-b7c70fc33b3e
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
mostly uninitialized use of variables.
check return values from function calls.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
There were two glfs_init(and friends) invocations per op (create & delete).
This patch just unifies those calls (since they anyway belong to same volume)
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
Till now we had simple makefile for checking dependencies and building.
Using libtoolz will give more control on dependency checks and
flexibility.
This patch also introduce rpm build feature.
Compiling:
$ ./autogen.sh
$ ./configure
$ make -j
$ make install
Building RPMS:
$ make rpms
Running:
$ systemctl start gluster-blockd.service
Using CLI:
$ gluster-block help
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|