6
This commit is contained in:
parent
e6ebf985b9
commit
a3b7c416c5
15
libfs.c
15
libfs.c
@ -50,9 +50,20 @@ static ssize_t dummy_read(struct file *file, char __user *buf, size_t len, loff_
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static ssize_t dummy_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) {
|
static ssize_t dummy_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
static ssize_t dummy_write(struct file *file, const char __user *buf, size_t len, loff_t *ppos) {
|
||||||
|
struct inode *inode = file_inode(file);
|
||||||
|
loff_t new_end = *ppos + len;
|
||||||
|
|
||||||
|
if (inode->i_size < new_end) inode->i_size = new_end;
|
||||||
|
*ppos += len;
|
||||||
|
mark_inode_dirty(inode);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct file_operations custom_file_ops = {
|
static const struct file_operations custom_file_ops = {
|
||||||
.read = dummy_read,
|
.read = dummy_read,
|
||||||
@ -120,7 +131,9 @@ static int books_create(struct user_namespace *ns, struct inode *dir,
|
|||||||
// inode->i_op = &simple_file_inode_operations;
|
// inode->i_op = &simple_file_inode_operations;
|
||||||
inode->i_op = &custom_file_inode_operations;
|
inode->i_op = &custom_file_inode_operations;
|
||||||
inode->i_fop = &custom_file_ops;
|
inode->i_fop = &custom_file_ops;
|
||||||
d_instantiate(dentry, inode);
|
// d_instantiate(dentry, inode);
|
||||||
|
d_add(dentry, inode);
|
||||||
|
logf("dentry flags: %u, dentry name: %s", dentry->d_flags, dentry->d_name.name);
|
||||||
mark_inode_dirty(inode);
|
mark_inode_dirty(inode);
|
||||||
|
|
||||||
logf("books_create: created file %s (ino=%lu)", dentry->d_name.name, inode->i_ino);
|
logf("books_create: created file %s (ino=%lu)", dentry->d_name.name, inode->i_ino);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user