BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 88d672affcc1b9e1de646809e06bca1737f94f25 / vfs / inode.c

// Related

Nucleus

Barry Device file system 88d672a (3 years, 3 months ago)
diff --git a/vfs/inode.c b/vfs/inode.c
index c64542d..3f760e7 100644
--- a/vfs/inode.c
+++ b/vfs/inode.c
@@ -129,3 +129,36 @@ end:
 	unlock(inode);
 	return entry;
 }
+
+/* Make a directory wrapper */
+int
+inode_mkdir(Inode *inode, DirEntry *entry, mode_t mode)
+{
+	if (!inode->ops || !inode->ops->mkdir)
+		return -EINVAL;
+	lock(inode);
+	int err = inode->ops->mkdir(inode, entry, mode);
+	if (!err) {
+		add(inode->dirEntries, entry);
+		entry->inode = super_alloc_inode(inode->super);
+		entry->inode->mode = mode | S_IFDIR;
+	}
+	unlock(inode);
+	return err;
+}
+
+
+/* Remove a directory wrapper */
+int
+inode_rmdir(Inode *inode, DirEntry *entry)
+{
+	if (!inode->ops || !inode->ops->mkdir)
+		return -EINVAL;
+	lock(inode);
+	int err = inode->ops->rmdir(inode, entry);
+	if (!err)
+		remove(inode->dirEntries, entry);
+	unlock(inode);
+	return err;
+}
+