changeset 811:13df67029f94

fs: implement mknod This reimplements mkdir as a special case of mknod. Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Sun, 05 Apr 2020 16:04:28 -0400
parents fb7d3a533c5a
children 987c34feb31b
files src/fs/nomadfs.c
diffstat 1 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/fs/nomadfs.c	Sun Apr 05 16:09:33 2020 -0400
+++ b/src/fs/nomadfs.c	Sun Apr 05 16:04:28 2020 -0400
@@ -258,15 +258,15 @@
 	fuse_reply_err(req, -nerr_to_errno(ret));
 }
 
-static void nomadfs_mkdir(fuse_req_t req, fuse_ino_t parent, const char *name,
-			mode_t mode)
+static void nomadfs_mknod(fuse_req_t req, fuse_ino_t parent, const char *name,
+			  mode_t mode, dev_t dev)
 {
 	struct fuse_entry_param e;
 	struct noid child_oid;
 	struct nattr nattr;
 	int ret;
 
-	ret = __create(req, parent, name, mode_to_nmode(mode), 0, &child_oid);
+	ret = __create(req, parent, name, mode_to_nmode(mode), dev, &child_oid);
 	if (ret)
 		goto err;
 
@@ -288,6 +288,12 @@
 	fuse_reply_err(req, -nerr_to_errno(ret));
 }
 
+static void nomadfs_mkdir(fuse_req_t req, fuse_ino_t parent, const char *name,
+			  mode_t mode)
+{
+	nomadfs_mknod(req, parent, name, mode, 0);
+}
+
 static void nomadfs_unlink(fuse_req_t req, fuse_ino_t parent, const char *name)
 {
 	uint32_t dir_ohandle;
@@ -519,6 +525,7 @@
 	.getattr	= nomadfs_getattr,
 	.setattr	= nomadfs_setattr,
 	.lookup		= nomadfs_lookup,
+	.mknod		= nomadfs_mknod,
 	.mkdir		= nomadfs_mkdir,
 	.unlink		= nomadfs_unlink,
 	.readdir	= nomadfs_readdir,