aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-08-06 05:10:54 -0400
committerJeff Garzik <jeff@garzik.org>2006-08-06 05:10:54 -0400
commit9323c5dbf69248ee7baae627c42866353b993784 (patch)
tree9f4b38ef79b82857598f5ee0de8724b3cbe5b570
parente8b8341d44c0dcfab2ba016449d51e1579a9894a (diff)
downloaddbfs-9323c5dbf69248ee7baae627c42866353b993784.tar.gz
Implement fsync, fsyncdir ops. Largely no-op.
Also, move releasedir op code to a new position in the file. No code changes to dbfs_op_releasedir().
-rw-r--r--dbfs.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/dbfs.c b/dbfs.c
index eb65e8f..006d20a 100644
--- a/dbfs.c
+++ b/dbfs.c
@@ -424,6 +424,13 @@ err_out:
fuse_reply_err(req, -rc);
}
+static void dbfs_op_fsync (fuse_req_t req, fuse_ino_t ino,
+ int datasync, struct fuse_file_info *fi)
+{
+ /* DB should have already sync'd our data for us */
+ fuse_reply_err(req, 0);
+}
+
static void dbfs_op_opendir(fuse_req_t req, fuse_ino_t ino,
struct fuse_file_info *fi)
{
@@ -444,15 +451,6 @@ static void dbfs_op_opendir(fuse_req_t req, fuse_ino_t ino,
fuse_reply_open(req, fi);
}
-static void dbfs_op_releasedir(fuse_req_t req, fuse_ino_t ino,
- struct fuse_file_info *fi)
-{
- void *p = (void *) (unsigned long) fi->fh;
-
- /* release directory contents */
- free(p);
-}
-
struct dirbuf {
char *p;
size_t size;
@@ -515,6 +513,22 @@ static void dbfs_op_readdir(fuse_req_t req, fuse_ino_t ino, size_t size,
free(b.p);
}
+static void dbfs_op_releasedir(fuse_req_t req, fuse_ino_t ino,
+ struct fuse_file_info *fi)
+{
+ void *p = (void *) (unsigned long) fi->fh;
+
+ /* release directory contents */
+ free(p);
+}
+
+static void dbfs_op_fsyncdir (fuse_req_t req, fuse_ino_t ino,
+ int datasync, struct fuse_file_info *fi)
+{
+ /* DB should have already sync'd our data for us */
+ fuse_reply_err(req, 0);
+}
+
static void dbfs_op_setxattr(fuse_req_t req, fuse_ino_t ino,
const char *name, const char *value,
size_t size, int flags)
@@ -636,11 +650,11 @@ static struct fuse_lowlevel_ops dbfs_ops = {
.write = dbfs_op_write,
.flush = NULL,
.release = NULL,
- .fsync = NULL,
+ .fsync = dbfs_op_fsync,
.opendir = dbfs_op_opendir,
.readdir = dbfs_op_readdir,
.releasedir = dbfs_op_releasedir,
- .fsyncdir = NULL,
+ .fsyncdir = dbfs_op_fsyncdir,
.statfs = NULL,
.setxattr = dbfs_op_setxattr,
.getxattr = dbfs_op_getxattr,