# -*- text -*-

replace our read w/ generic_file_read and see if that works instead. it
would call our readpage which is implemented.

break write into pages.  or better yet. use generic_writepage as our write
fxn, and then implement updatepage, which will call the lower fxn's write
fxn with the right args.

then cryptfs and file names.


fix leak in lower-fs refcounts.
put copy_inode_modes everywhere!!! (esp. read/write)
try truncate
fix d_compare
check append
XXX: we have to do a cryptfs_copy_inode (or subset thereof) in *ALL*
functions, all file systems, and all OSs!!!

follow all XXX comments and EZK comments

* dentry questions

follow all #warning everywere:
	panic if dentry->d_inode is null (negative dentry)
		what does it mean and what makes sense to do
	make a hidden_dentry for all cryptfs dentry's and pass it along as well
	iput(old_inode) convert to d_put(old_dentry?)

when does a new dentry ever get created/malloc'ed for the first time?

maybe we should "interpose" on a dentry only if its d_inode!=NULL (i.e., it
	is not a zero entry?)

whenever I do
	inode_t *old_inode = old_dentry->d_inode;
or the like, then assrt that old_inode is not null (see foofs_link)

wherever iput happens, should I do d_iput instead (or also)?

everwhere where I call 
	err = hidden_inode->i_op-><FXN>(hidden_inide, dentry,...)
should I instead pass hidden_dentry down?  And if so, where do I get that
hidden_dentry from?

define our own dput and dentry functions?

* code munging procedure

fill in ops structure (from ion's usenetfs)
add empty stubs for new functions
put old protos in // comments
change fxn protos

* misc:

does struct qstr have full pathname or just one component.

unify main.c and super.c, and avoid fist_mod_dec_use_count()

tell linux-kernel to expose fs/namei.c: double_lock/unlock
     ditto for lock_parent  
     and linux/fs/read_write.c: default_llseek()
     LOOKUP_FOLLOW from fs/namei.c to some header file.

linux/fs.h: namei macro should not use 1, but LOOKUP_FOLLOW

ask linux-kernel why writepage isn't called from anywhere, and why there's
no generic writepage.

permission() should call the f/s permission() if it exists, else call the
rest of the code which should be moved into one do_permission() fxn, so we
can call do_permission directly ourselves.

tell kernel hackers of pread/pwrite interface deficiencies.
