[sheepdog] [PATCH v2 07/12] sheep: clean up sd_inode btree error code
Liu Yuan
namei.unix at gmail.com
Wed Jan 29 08:35:53 CET 2014
These error codes are used internally, not for client communication.
Signed-off-by: Liu Yuan <namei.unix at gmail.com>
---
include/internal_proto.h | 1 +
include/sheepdog_proto.h | 3 ---
lib/sd_inode.c | 22 +++++++++++-----------
3 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/include/internal_proto.h b/include/internal_proto.h
index d302c26..2e5c81c 100644
--- a/include/internal_proto.h
+++ b/include/internal_proto.h
@@ -127,6 +127,7 @@
#define SD_RES_STALE_OBJ 0x90 /* Object may be stale */
#define SD_RES_CLUSTER_ERROR 0x91 /* Cluster driver error */
#define SD_RES_VDI_NOT_EMPTY 0x92 /* VDI is not empty */
+#define SD_RES_NOT_FOUND 0x93 /* Cannot found target */
#define SD_CLUSTER_FLAG_STRICT 0x0001 /* Strict mode for write */
diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index 6a7ada7..95ee4f2 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -74,9 +74,6 @@
#define SD_RES_JOIN_FAILED 0x18 /* Target node had failed to join sheepdog */
#define SD_RES_HALT 0x19 /* Sheepdog is stopped doing IO */
#define SD_RES_READONLY 0x1A /* Object is read-only */
-#define SD_RES_BTREE_NOT_FOUND 0x1B /* Cannot found node in btree */
-#define SD_RES_BTREE_FOUND 0x1C /* Found node in btree */
-#define SD_RES_BTREE_REPEAT 0x1D /* Should repeat op in btree */
/* errors above 0x80 are sheepdog-internal */
diff --git a/lib/sd_inode.c b/lib/sd_inode.c
index f058582..c842691 100644
--- a/lib/sd_inode.c
+++ b/lib/sd_inode.c
@@ -74,7 +74,7 @@
#include <string.h>
#include "util.h"
-#include "sheepdog_proto.h"
+#include "internal_proto.h"
#define EXT_MAX_SPACE (SD_INODE_DATA_INDEX_SIZE - \
sizeof(struct sd_extent_header))
@@ -395,7 +395,7 @@ static int search_whole_btree(read_node_fn reader, const struct sd_inode *inode,
struct sd_extent_header *header, *leaf_node;
void *tmp;
uint64_t oid;
- int ret = SD_RES_BTREE_NOT_FOUND;
+ int ret = SD_RES_NOT_FOUND;
header = EXT_HEADER(inode->data_vdi_id);
@@ -415,7 +415,7 @@ static int search_whole_btree(read_node_fn reader, const struct sd_inode *inode,
path->p_ext_header = leaf_node;
if (ext_in_range(leaf_node, path->p_ext) &&
path->p_ext->idx == idx)
- ret = SD_RES_BTREE_FOUND;
+ ret = SD_RES_SUCCESS;
} else {
/* check if last idx-node has space */
oid = (path->p_idx - 1)->oid;
@@ -432,9 +432,9 @@ static int search_whole_btree(read_node_fn reader, const struct sd_inode *inode,
path->p_ext = search_ext_entry(header, idx);
if (ext_in_range(header, path->p_ext) &&
path->p_ext->idx == idx)
- ret = SD_RES_BTREE_FOUND;
+ ret = SD_RES_SUCCESS;
else
- ret = SD_RES_BTREE_NOT_FOUND;
+ ret = SD_RES_NOT_FOUND;
}
out:
return ret;
@@ -455,7 +455,7 @@ uint32_t sd_inode_get_vid(read_node_fn reader, const struct sd_inode *inode,
memset(&path, 0, sizeof(path));
ret = search_whole_btree(reader, inode, idx, &path);
- if (ret == SD_RES_BTREE_FOUND)
+ if (ret == SD_RES_SUCCESS)
return path.p_ext->vdi_id;
if (path.p_ext_header)
free(path.p_ext_header);
@@ -508,7 +508,7 @@ static int insert_new_node(write_node_fn writer, read_node_fn reader,
if (path->depth == 1) {
if (header->entries >= EXT_MAX_ENTRIES) {
transfer_to_idx_root(writer, inode);
- ret = SD_RES_BTREE_REPEAT;
+ ret = SD_RES_AGAIN;
goto out;
}
insert_ext_entry_nosearch(header,
@@ -516,12 +516,12 @@ static int insert_new_node(write_node_fn writer, read_node_fn reader,
} else if (path->depth == 2) {
if (idx_in_range(header, path->p_idx)) {
if (!path->p_ext_header) {
- ret = SD_RES_BTREE_NOT_FOUND;
+ ret = SD_RES_NOT_FOUND;
goto out;
}
if (path->p_ext_header->entries >= EXT_MAX_ENTRIES) {
split_ext_node(writer, inode, path);
- ret = SD_RES_BTREE_REPEAT;
+ ret = SD_RES_AGAIN;
goto out;
}
insert_ext_entry_nosearch(path->p_ext_header,
@@ -584,7 +584,7 @@ void sd_inode_set_vid(write_node_fn writer, read_node_fn reader,
while (1) {
memset(&path, 0, sizeof(path));
ret = search_whole_btree(reader, inode, idx, &path);
- if (ret == SD_RES_BTREE_FOUND) {
+ if (ret == SD_RES_SUCCESS) {
path.p_ext->vdi_id = vdi_id;
/*
* Only write the vdi_id in sd_extent for
@@ -602,7 +602,7 @@ void sd_inode_set_vid(write_node_fn writer, read_node_fn reader,
} else {
ret = insert_new_node(writer, reader, inode,
&path, idx, vdi_id);
- if (SD_RES_BTREE_REPEAT == ret) {
+ if (SD_RES_AGAIN == ret) {
if (path.p_ext_header)
free(path.p_ext_header);
continue;
--
1.8.1.2
More information about the sheepdog
mailing list