Nate Diller <nate.diller@xxxxxxxxx> wrote: > but that's a lot of code to avoid a single stack allocation. The > whole fake file pointer thing still strikes me as a little ugly, and > you're definitely not the first one who needed this sort of hackery. > ugh A better way might be to stick a void * in struct file and pass that through to readpage() and readpages() instead of the struct file *. That way, anyone who wants the traditional arrangement can just point that extra void * at the struct file. Of course, I'm in favour of making it a struct key * like this: struct address_space_operations { ... int (*readpage)(struct key *, struct page *); ... int (*readpages)(struct key *, struct address_space *, struct list_head *, unsigned); ... }; struct file { ... struct key *f_key; }; struct page *filemap_nopage(struct vm_area_struct *area, ...) { ... struct file *file = area->vm_file; ... error = mapping->a_ops->readpage(file->f_key, page); ... } But I'm not sure the NFS crew, for instance, would be happy with that. Maybe passing file->private_data through would do. That's basically what NFS and FUSE, for instance, want, and it would also do for AFS. David - 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