| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
until now there is no check to defend on multiple runs of daemon within
the same node. This patch takes a non blocking lock on 'gluster-blockd.lock'
file, if it succeeds only then daemon is allowed to run, if there is
already a lock on lock-file (taken by some other instance of gluster-blockd)
we will exit.
This patch also renames GB_UNIX_ADDRESS from gluster-block.socket to
gluster-blockd.socket, as that makes better sense.
Change-Id: I43b285f9da15d078fe3df4d231d0ef8d44272d8f
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
| |
Change-Id: I3680cc30356d843a48fd9bc41a104acab2ac2d76
Signed-off-by: Nigel Babu <nigelb@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>
|
|
|
| |
cli changes updated.
|
|
|
|
|
|
| |
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>
|
|
|
|
|
| |
Signed-off-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-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>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Improvements:
Version info displaying.
Improve help menu.
This patch also makes 'mpath' option as optional (default: 1)
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>
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
| |
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
| |
Make sure you have all the dependent binaries
Run:
$ ./tests/basic.t
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
patch also does minor correction in package name.
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>
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
deprecated getopts as to eliminate use of '--' with command line options
The new usage looks like:
gluster-block (Version 0.1)
create <name> Create the gluster block
volserver [gluster-node] node addr from gluster pool(def: localhost)
size <size> block storage size in KiB|MiB|GiB|TiB..
mpath <count> multi path requirement for high availablity
servers [<IP1,IP2,IP3...>] block servers, clubbed with any option
list List available gluster blocks
info <name> Details about gluster block
modify <resize|auth> Modify the metadata
delete <name> Delete the gluster block
volume <vol> gluster volume name
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
| |
add more meaningful log messages
minor code changes such as renaming, indentation and et cetera.
Signed-off-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
better naming of variables and functions,
variable initialization, also fix few leaks
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
now that we have various components, it make more sense to maintain
individual logs:
gluster-blockd -> /var/log/gluster-block/gluster-blockd.log
gluster-block -> /var/log/gluster-block/gluster-block-cli.log
gfapi related -> /var/log/gluster-block/gluster-block-gfapi.log
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
This patch also brings changes in the info output.
It adds BLOCK config hosts in the output.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
| |
From now we read the block-hosts from journal i.e targets meta file.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
In case if number of block hosts are more than the multipath request,
consider that spare nodes to satify the request.
Lets say we need multipath of 3, but the admin provides 5 block-hosts.
If any of the node fail to configure target from first three, then
consider configuring fourth node to satify the HA request.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
| |
This was a hack to implement list and info commands,
now that both list and info reads the metadata from the volume,
we don't need block_exec anymore.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
From now list command won't execute on remote machines,
rather readdir from '/block-meta/' dir
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
| |
From now info command won't execute on remote machines,
rather reads it from '/block-meta/*blockname*' i.e block journal
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduce the transaction locking also, start maintaining
meta data journaling per block
Every request is follows transaction, at the start of any transaction
we take blocking lock on "/block-meta/meta.lock" file and at the end
we unlock.
Meanwhile while, when the transaction is in progress we do
journaling, while performing series of operations, used for future
purposes and roll backing.
A sample journal file looks like:
$ cat /mnt/block-meta/LUN1
GBID: xyz-abc
SIZE : 5GiB
HA: 3
ENTRYCREATE: INPROGRESS
ENTRYCREATE: SUCCESS
NODE1: INPROGRESS
NODE2: INPROGRESS
NODE3: INPROGRESS
NODE2: SUCCESS
NODE3: FAIL
NODE1: SUCCESS
NODE4: INPROGRESS
NODE4: SUCCESS
NODE3: CLEANUPSUCCESS
<EOF>
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
| |
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from now We basically have 2 RPC connections,
1. Between gluster block CLI and local gluster-blockd
This connection is basically UNIX/local netid ,listening on
/var/run/gluster-blockd.socket file.
The CLI always Send/Receive the commands to/from the local
gluster-blockd via local rpc.
2. Between gluster-blockd's, i.e local (to cli) gluster-blockd and the
gluster-blockd's running on remote(blockhost)
This is the tcp connection. The rpc requests are listening on 24006
Also from now gluster-blockd is multi threaded (As of now 2 threads)
Lets consider the Create Request to understand what each thread solves
Thread1 (THE CLI THREAD)
* Listening on local RPC
* Generate the GBID (UUID) and create the entry with name GBID in the
given volume with a requested size.
* And Send the Configuration requests to remote hosts,
waits for the replies
(HINt: after this point Read Thread2 and come back)
* Return to CLI.
Thread 2 (THE SERVER THREAD)
* Listens on 24006
* On Receiving an event, read the structure.
* Executes the required "targetcli bla bla bla" command locally
* Fills the command exitcode and the output in the RPC reply structure
and send reply
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
starting gluster-blockd:
$ make install
$ systemctl daemon-reload
$ systemctl start gluster-blockd.service
checking status:
$ systemctl status gluster-blockd.service
● gluster-blockd.service - Gluster block storage utility
Loaded: loaded (gluster-blockd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 01-16 17:53:23 IST; 3min 42s ago
Main PID: 27552 (gluster-blockd)
Tasks: 1 (limit: 512)
CGroup: /system.slice/gluster-blockd.service
└─27552 /usr/local/sbin/gluster-blockd
Jan 16 17:53:23 local systemd[1]: Started Gluster block storage utility.
gluster-blockd.service inturn brings below services:
1. rpcbind.service
2. target.service and
3. tcmu-runner.service
In order.
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this patch,
deprecate ssh way of communicating between server nodes/pods
Reason: ssh way is hard to be accepted in container world (Kube).
An another option kubeExec way seems to be a bit weird,
to have uniform way of communication in container and
non container worlds, we prefer RPC.
From now we communicate via RPC, using a static port 24009
Hence, we have two components,
server component -> gluster-blockd (daemon)
client component -> gluster-block (cli)
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
|