Alexander Viro wrote: > a) if you make struct inode a part of ext2_inode - WTF bother with pointer? ok, nobody likes the pointer but me, gone :) > b) ->destroy_inode() / ->clear_inode(). Merge them - that way it's one > method. I believe this belongs in a separate patch after my 1-7, because this involves breaking some other filesystems. easier migration -step- if we add, then shoot me if clear_inode is not destroyed by the end of 2.5.x. > c) get_empty_inode() must die. Make it new_inode() and be done with that. > And have socket.c explicitly set ->i_dev to NODEV afterwards. done > d) ext2/balloc.c cleanup probably should be merged before. hum... if you are sending one patch for this to linus, I would say after, but if you are breaking the cleanup into all the steps in balloc.c,v then I agree with you. > We will need to set very strict rules on passing around/storing pointers to > ext2_inode and its ilk, though. There will be bugs when somebody just decides > that keeping such pointers might be a good idea and forgets to be nice with > ->i_count. Or decrement it manually instead of calling iput(), etc. > > It _MUST_ be explicitly documented - preferably beaten into skulls. documented in patch6. Updated patch7 attached (the "meat" of the changes). For updated patches 1-7, grab them from kernel.org at ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.5/2.5.2-pre9-jg1.tar.bz2 -- Jeff Garzik | Alternate titles for LOTR: Building 1024 | Fast Times at Uruk-Hai MandrakeSoft | The Took, the Elf, His Daughter and Her Lover | Samwise Gamgee: International Hobbit of Mystery