projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Copy in a few more benchmark results.
[bluesky.git]
/
bluesky
/
serialize.c
diff --git
a/bluesky/serialize.c
b/bluesky/serialize.c
index
e3abc14
..
2b741b0
100644
(file)
--- a/
bluesky/serialize.c
+++ b/
bluesky/serialize.c
@@
-129,6
+129,7
@@
void bluesky_serialize_inode(GString *out, BlueSkyInode *inode)
{
g_string_append(out, inode->symlink_contents);
g_string_append_c(out, '\0');
{
g_string_append(out, inode->symlink_contents);
g_string_append_c(out, '\0');
+ break;
}
default:
}
default:
@@
-137,15
+138,21
@@
void bluesky_serialize_inode(GString *out, BlueSkyInode *inode)
}
}
}
}
-BlueSkyInode *bluesky_deserialize_inode(BlueSkyFS *fs, const gchar *buf)
+/* Deserialize an inode into an in-memory representation. Returns a boolean
+ * indicating whether the deserialization was successful. */
+gboolean bluesky_deserialize_inode(BlueSkyInode *inode, const gchar *buf)
{
{
+ g_print("Deserializing inode %lld...\n", (long long)inode->inum);
+
struct serialized_inode *raw = (struct serialized_inode *)buf;
if (GUINT64_FROM_LE(raw->signature) != INODE_MAGIC)
struct serialized_inode *raw = (struct serialized_inode *)buf;
if (GUINT64_FROM_LE(raw->signature) != INODE_MAGIC)
- return
NULL
;
+ return
FALSE
;
- BlueSkyInode *inode = bluesky_new_inode(GUINT64_FROM_LE(raw->inum),
- fs, GUINT32_FROM_LE(raw->type));
+ if (inode->inum != GUINT64_FROM_LE(raw->inum))
+ return FALSE;
+
+ bluesky_init_inode(inode, GUINT32_FROM_LE(raw->type));
inode->mode = GUINT32_FROM_LE(raw->mode);
inode->uid = GUINT32_FROM_LE(raw->uid);
inode->mode = GUINT32_FROM_LE(raw->mode);
inode->uid = GUINT32_FROM_LE(raw->uid);
@@
-160,8
+167,6
@@
BlueSkyInode *bluesky_deserialize_inode(BlueSkyFS *fs, const gchar *buf)
buf += sizeof(struct serialized_inode);
buf += sizeof(struct serialized_inode);
- g_print("Deserializing inode %lld...\n", (long long)inode->inum);
-
/* TODO: Bounds checking */
switch (inode->type) {
case BLUESKY_REGULAR:
/* TODO: Bounds checking */
switch (inode->type) {
case BLUESKY_REGULAR:
@@
-212,6
+217,7
@@
BlueSkyInode *bluesky_deserialize_inode(BlueSkyFS *fs, const gchar *buf)
case BLUESKY_SYMLINK:
{
inode->symlink_contents = g_strdup(buf);
case BLUESKY_SYMLINK:
{
inode->symlink_contents = g_strdup(buf);
+ break;
}
default:
}
default:
@@
-219,5
+225,5
@@
BlueSkyInode *bluesky_deserialize_inode(BlueSkyFS *fs, const gchar *buf)
inode->type);
}
inode->type);
}
- return
inode
;
+ return
TRUE
;
}
}