On Tue, Oct 31, 2023 at 05:14:08PM -0300, Wedson Almeida Filho wrote: > > Also, I see you're passing an inode to read_dir. Why did you decide to > > do that? There's information in the struct file that's either necessary > > or useful to have in the filesystem. Maybe not in toy filesystems, but eg > > network filesystems need user credentials to do readdir, which are stored > > in struct file. Block filesystems store readahead data in struct file. > > Because the two file systems we have don't use anything from `struct > file` beyond the inode. > > Passing a `file` to `read_dir` would require us to introduce an > unnecessary abstraction that no one uses, which we've been told not to > do. > > There is no technical reason that makes it impractical though. We can > add it when the need arises. Then we shouldn't merge any of this, or even send it out for review again until there is at least one non-toy filesystems implemented. Either stick to the object orientation we've already defined (ie separate aops, iops, fops, ... with substantially similar arguments) or propose changes to the ones we have in C. Dealing only with toy filesystems is leading you to bad architecture.