On Sun, Jun 26, 2005 at 09:07:00PM +0400, Artem B. Bityuckiy wrote: > Just out of curiosity, could you please specify few exact examples with > specific file/function names which duplicate the existing > infrastructure. What do they duplicate and why? How should these > functions be implemented on VFS? Ho should the the other FSes > implement/ignore them? Why are you shure they will fit VFS well? etc.
Right now every file/inode/etc method in reiser4 is just a trivial wrapper around a plugin call. It should instead just set the method table directly in the plugin initialization. Example: static int reiser4_permission(struct inode *inode /* object */ , int mask, /* mode bits to check permissions * for */ struct nameidata *nameidata) { /* reiser4_context creation/destruction removed from here, because permission checks currently don't require this. Permission plugin have to create context itself if necessary. */ assert("nikita-1687", inode != NULL); return perm_chk(inode, mask, inode, mask); } besides a useless assert we just call into perm_chk, which is a macro obsfucation to call generic_permission which would be called if ->permission was zero. A hypothetical reiser4 "plugin" that would need redefine ->permission would just override it in a set inode_operations.