summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-02-08 21:18:20 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-02-08 21:31:43 +0530
commit9f570a3967c0a4ebbe35a04284181406faf8fe36 (patch)
tree1bc34cd56731fe639112a1c42d7075a27104ff8d /rpc
parent4d72dbc37c5f10dc33de0ac22d90bf1563fc5f0d (diff)
gluster-block: create block files in '/block-store' dir
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>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/block_svc_routines.c12
-rw-r--r--rpc/glfs-operations.c72
-rw-r--r--rpc/glfs-operations.h3
3 files changed, 71 insertions, 16 deletions
diff --git a/rpc/block_svc_routines.c b/rpc/block_svc_routines.c
index 7d7080c..ca2fef6 100644
--- a/rpc/block_svc_routines.c
+++ b/rpc/block_svc_routines.c
@@ -388,9 +388,9 @@ glusterBlockCleanUp(struct glfs *glfs, char *blockname,
LOG("mgmt", GB_LOG_ERROR, "%s volume: %s host: %s",
FAILED_DELETING_FILE, info->volume, "localhost");
}
- ret = glfs_unlink(glfs, blockname);
- if (ret && errno != ENOENT) {
- LOG("mgmt", GB_LOG_ERROR, "%s", "glfs_unlink: failed");
+ ret = glusterBlockDeleteMetaLockFile(glfs, info->volume, blockname);
+ if (ret) {
+ LOG("mgmt", GB_LOG_ERROR, "%s", "glusterBlockDeleteMetaLockFile: failed");
goto out;
}
}
@@ -554,9 +554,9 @@ block_create_1_svc(blockCreate *blk, struct svc_req *rqstp)
goto out;
}
- if (asprintf(&backstore, "%s %s %s %zu %s@%s/%s %s", TARGETCLI_GLFS,
+ if (asprintf(&backstore, "%s %s %s %zu %s@%s%s/%s %s", TARGETCLI_GLFS,
CREATE, blk->block_name, blk->size, blk->volume,
- blk->volfileserver, blk->gbid, blk->gbid) == -1) {
+ blk->volfileserver, GB_STOREDIR, blk->gbid, blk->gbid) == -1) {
reply->exit = -1;
goto out;
}
@@ -754,7 +754,7 @@ block_list_cli_1_svc(blockListCli *blk, struct svc_req *rqstp)
GB_METALOCK_OR_GOTO(lkfd, blk->volume, ret, out);
- tgmfd = glfs_opendir (glfs, "/block-meta");
+ tgmfd = glfs_opendir (glfs, GB_METADIR);
if (!tgmfd) {
LOG("mgmt", GB_LOG_ERROR, "%s", "glusterBlockVolumeInit failed");
goto out;
diff --git a/rpc/glfs-operations.c b/rpc/glfs-operations.c
index 0e3787c..4a7e081 100644
--- a/rpc/glfs-operations.c
+++ b/rpc/glfs-operations.c
@@ -12,9 +12,6 @@
# include "common.h"
# include "glfs-operations.h"
-# define METADIR "/block-meta"
-# define TXLOCKFILE "meta.lock"
-
struct glfs *
@@ -67,9 +64,23 @@ glusterBlockCreateEntry(struct glfs *glfs,
char *gbid)
{
struct glfs_fd *tgfd;
- int ret = -1;
+ int ret;
+ ret = glfs_mkdir (glfs, GB_STOREDIR, 0);
+ if (ret && errno != EEXIST) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_mkdir(%s) on volume %s failed[%s]",
+ GB_STOREDIR, blk->volume, strerror(errno));
+ goto out;
+ }
+
+ ret = glfs_chdir (glfs, GB_STOREDIR);
+ if (ret) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_chdir(%s) on volume %s failed[%s]",
+ GB_STOREDIR, blk->volume, strerror(errno));
+ goto out;
+ }
+
tgfd = glfs_creat(glfs, gbid,
O_WRONLY | O_CREAT | O_EXCL,
S_IRUSR | S_IWUSR);
@@ -103,12 +114,20 @@ glusterBlockDeleteEntry(struct glfs *glfs, char *volume, char *gbid)
int ret;
+ ret = glfs_chdir (glfs, GB_STOREDIR);
+ if (ret) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_chdir(%s) on volume %s failed[%s]",
+ GB_STOREDIR, volume, strerror(errno));
+ goto out;
+ }
+
ret = glfs_unlink(glfs, gbid);
if (ret) {
LOG("gfapi", GB_LOG_ERROR, "glfs_unlink(%s) on volume %s failed[%s]",
gbid, volume, strerror(errno));
}
+ out:
return ret;
}
@@ -120,24 +139,24 @@ glusterBlockCreateMetaLockFile(struct glfs *glfs, char *volume)
int ret;
- ret = glfs_mkdir (glfs, METADIR, 0);
+ ret = glfs_mkdir (glfs, GB_METADIR, 0);
if (ret && errno != EEXIST) {
LOG("gfapi", GB_LOG_ERROR, "glfs_mkdir(%s) on volume %s failed[%s]",
- METADIR, volume, strerror(errno));
+ GB_METADIR, volume, strerror(errno));
goto out;
}
- ret = glfs_chdir (glfs, METADIR);
+ ret = glfs_chdir (glfs, GB_METADIR);
if (ret) {
LOG("gfapi", GB_LOG_ERROR, "glfs_chdir(%s) on volume %s failed[%s]",
- METADIR, volume, strerror(errno));
+ GB_METADIR, volume, strerror(errno));
goto out;
}
- lkfd = glfs_creat(glfs, TXLOCKFILE, O_RDWR, S_IRUSR | S_IWUSR);
+ lkfd = glfs_creat(glfs, GB_TXLOCKFILE, O_RDWR, S_IRUSR | S_IWUSR);
if (!lkfd) {
LOG("gfapi", GB_LOG_ERROR, "glfs_creat(%s) on volume %s failed[%s]",
- TXLOCKFILE, volume, strerror(errno));
+ GB_TXLOCKFILE, volume, strerror(errno));
goto out;
}
@@ -147,6 +166,31 @@ glusterBlockCreateMetaLockFile(struct glfs *glfs, char *volume)
return NULL;
}
+int
+glusterBlockDeleteMetaLockFile(struct glfs *glfs,
+ char *volume, char *blockname)
+{
+ int ret;
+
+
+ ret = glfs_chdir (glfs, GB_METADIR);
+ if (ret) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_chdir(%s) on volume %s failed[%s]",
+ GB_METADIR, volume, strerror(errno));
+ goto out;
+ }
+
+ ret = glfs_unlink(glfs, blockname);
+ if (ret && errno != ENOENT) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_unlink(%s) on volume %s failed[%s]",
+ blockname, volume, strerror(errno));
+ goto out;
+ }
+
+ out:
+ return ret;
+}
+
void
blockFreeMetaInfo(MetaInfo *info)
@@ -232,7 +276,15 @@ blockGetMetaInfo(struct glfs* glfs, char* metafile, MetaInfo *info)
struct glfs_fd *tgmfd;
char line[1024];
char *tmp;
+ int ret;
+
+ ret = glfs_chdir (glfs, GB_METADIR);
+ if (ret) {
+ LOG("gfapi", GB_LOG_ERROR, "glfs_chdir(%s) on volume %s failed[%s]",
+ GB_METADIR, info->volume, strerror(errno));
+ return ret;
+ }
tgmfd = glfs_open(glfs, metafile, O_RDONLY);
if (!tgmfd) {
diff --git a/rpc/glfs-operations.h b/rpc/glfs-operations.h
index a03741e..5d617e6 100644
--- a/rpc/glfs-operations.h
+++ b/rpc/glfs-operations.h
@@ -53,6 +53,9 @@ struct glfs_fd *
glusterBlockCreateMetaLockFile(struct glfs *glfs, char *volume);
int
+glusterBlockDeleteMetaLockFile(struct glfs *glfs, char *volume, char *blockname);
+
+int
blockGetMetaInfo(struct glfs *glfs, char *metafile, MetaInfo *info);
void