projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Drop some debugging messages.
[bluesky.git]
/
bluesky
/
inode.c
diff --git
a/bluesky/inode.c
b/bluesky/inode.c
index
cab49a6
..
a264f35
100644
(file)
--- a/
bluesky/inode.c
+++ b/
bluesky/inode.c
@@
-12,7
+12,7
@@
#include <glib.h>
#include <string.h>
#include <glib.h>
#include <string.h>
-#include "bluesky.h"
+#include "bluesky
-private
.h"
/* Core filesystem. Different proxies, such as the NFSv3 one, interface to
* this, but the core actually tracks the data which is stored. So far we just
/* Core filesystem. Different proxies, such as the NFSv3 one, interface to
* this, but the core actually tracks the data which is stored. So far we just
@@
-37,6
+37,9
@@
void bluesky_inode_update_ctime(BlueSkyInode *inode, gboolean update_mtime)
inode->ctime = now;
if (update_mtime)
inode->mtime = now;
inode->ctime = now;
if (update_mtime)
inode->mtime = now;
+
+ if (inode->change_time == 0)
+ inode->change_time = now;
}
/* Unfortunately a glib hash table is only guaranteed to be able to store
}
/* Unfortunately a glib hash table is only guaranteed to be able to store
@@
-170,6
+173,10
@@
BlueSkyInode *bluesky_get_inode(BlueSkyFS *fs, uint64_t inum)
{
BlueSkyInode *inode = NULL;
{
BlueSkyInode *inode = NULL;
+ if (inum == 0) {
+ return NULL;
+ }
+
g_mutex_lock(fs->lock);
inode = (BlueSkyInode *)g_hash_table_lookup(fs->inodes, &inum);
g_mutex_lock(fs->lock);
inode = (BlueSkyInode *)g_hash_table_lookup(fs->inodes, &inum);
@@
-198,14
+205,17
@@
void bluesky_inode_flush(BlueSkyFS *fs, BlueSkyInode *inode)
{
GString *buf = g_string_new("");
bluesky_serialize_inode(buf, inode);
{
GString *buf = g_string_new("");
bluesky_serialize_inode(buf, inode);
-
- gsize len = buf->len;
- BlueSkyRCStr *data = bluesky_string_new(g_string_free(buf, FALSE), len);
+ BlueSkyRCStr *data = bluesky_string_new_from_gstring(buf);
char key[64];
sprintf(key, "inode-%016"PRIx64, inode->inum);
char key[64];
sprintf(key, "inode-%016"PRIx64, inode->inum);
- bluesky_store_put(fs->store, key, data);
+ BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
+ async->op = STORE_OP_PUT;
+ async->key = g_strdup(key);
+ async->data = data;
+ bluesky_store_async_submit(async);
+ bluesky_store_async_unref(async);
}
/* Fetch an inode from stable storage. */
}
/* Fetch an inode from stable storage. */
@@
-228,11
+238,14
@@
void bluesky_superblock_flush(BlueSkyFS *fs)
{
GString *buf = g_string_new("");
bluesky_serialize_superblock(buf, fs);
{
GString *buf = g_string_new("");
bluesky_serialize_superblock(buf, fs);
+ BlueSkyRCStr *data = bluesky_string_new_from_gstring(buf);
- g_print("Syncing superblock...\n");
+ BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
+ async->op = STORE_OP_PUT;
+ async->key = g_strdup("superblock");
+ async->data = data;
+ bluesky_store_async_submit(async);
+ bluesky_store_async_unref(async);
- gsize len = buf->len;
- BlueSkyRCStr *data = bluesky_string_new(g_string_free(buf, FALSE), len);
- bluesky_store_put(fs->store, "superblock", data);
+ bluesky_store_sync(fs->store);
}
}
-