diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2017-02-08 21:18:20 +0530 |
---|---|---|
committer | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2017-02-08 21:31:43 +0530 |
commit | 9f570a3967c0a4ebbe35a04284181406faf8fe36 (patch) | |
tree | 1bc34cd56731fe639112a1c42d7075a27104ff8d /rpc/glfs-operations.c | |
parent | 4d72dbc37c5f10dc33de0ac22d90bf1563fc5f0d (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/glfs-operations.c')
-rw-r--r-- | rpc/glfs-operations.c | 72 |
1 files changed, 62 insertions, 10 deletions
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) { |