From e6ebf985b9b8d7d1f7c7dd5043fa2817a21f16be Mon Sep 17 00:00:00 2001 From: g2px1 Date: Fri, 20 Jun 2025 20:38:26 +0000 Subject: [PATCH] 5 --- libfs.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libfs.c b/libfs.c index a8ce41c..ccbdf20 100644 --- a/libfs.c +++ b/libfs.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include #include @@ -36,6 +38,8 @@ static struct inode *books_inode; static const struct inode_operations fs_dir_iops; DEFINE_HASHTABLE(link_table, 6); +static const struct inode_operations custom_file_inode_operations = {}; + struct link_entry { struct hlist_node node; struct dentry *link; @@ -113,8 +117,13 @@ static int books_create(struct user_namespace *ns, struct inode *dir, return -ENOMEM; inode->i_uid = current_fsuid(); +// inode->i_op = &simple_file_inode_operations; + inode->i_op = &custom_file_inode_operations; inode->i_fop = &custom_file_ops; d_instantiate(dentry, inode); + mark_inode_dirty(inode); + + logf("books_create: created file %s (ino=%lu)", dentry->d_name.name, inode->i_ino); return 0; } @@ -352,6 +361,9 @@ static int fill_super(struct super_block *sb, void *data, int silent) { if (!books) return -ENOMEM; d_add(books, books_inode); + inc_nlink(root_inode); // ✅ важно! + inc_nlink(books_inode); // ✅ важно! + logf("fill_super: books directory instantiated"); // authors struct inode *authors_inode = get_inode(sb, S_IFDIR | MODE_AUTHORS); @@ -364,6 +376,9 @@ static int fill_super(struct super_block *sb, void *data, int silent) { if (!authors) return -ENOMEM; d_add(authors, authors_inode); + inc_nlink(root_inode); // ✅ важно! + inc_nlink(authors_inode); // ✅ важно! + logf("fill_super: authors directory instantiated"); logf("fill_super: books and authors created"); return 0;