lkml.org 
[lkml]   [2007]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 3/17] afs: convert afs_dir_get_page to read_kmap_page
    Date
    Nate Diller <nate.diller@gmail.com> 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-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-04-12 21:47    [W:0.021 / U:34.380 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site