On 03/31/2009 11:04 AM, Andrew Morton wrote: > On Wed, 18 Mar 2009 20:08:49 +0200 Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote: > >> implementation of directory and inode operations. >> >> * A directory is treated as a file, and essentially contains a list >> of <file name, inode #> pairs for files that are found in that >> directory. The object IDs correspond to the files' inode numbers >> and are allocated using a 64bit incrementing global counter. >> * Each file's control block (AKA on-disk inode) is stored in its >> object's attributes. This applies to both regular files and other >> types (directories, device files, symlinks, etc.). >> >> >> ... >> >> +static inline unsigned long dir_pages(struct inode *inode) >> +{ >> + return (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; >> +} > > Do we need i_size_read() here? Probably not if it's always called > under i_mutex. Needs checking and commenting please. > Don't know, I'll have a look >> +static unsigned exofs_last_byte(struct inode *inode, unsigned long page_nr) >> +{ >> + unsigned last_byte = inode->i_size; >> + >> + last_byte -= page_nr << PAGE_CACHE_SHIFT; > > hm. Strange to left-shift an unsigned long and then copy it to a > smaller type. > wrong type, thanks! > Are the types here appropriately chosen? > >> + if (last_byte > PAGE_CACHE_SIZE) >> + last_byte = PAGE_CACHE_SIZE; >> + return last_byte; >> +} >> + >> +static int exofs_commit_chunk(struct page *page, loff_t pos, unsigned len) >> >> ... >> > > This all looks vaguely familiar :) Yep ;). Don't forget that all this started with a cp ... Boaz -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html