lkml.org 
[lkml]   [2012]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 02/14] fuse: Getting file for writeback helper
    From
    Date
    There will be a .writepageS callback implementation which will need to
    get a fuse_file out of a fuse_inode, thus make a helper for this.

    Signed-off-by: Maxim Patlasov <MPatlasov@parallels.com>
    Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
    ---
    fs/fuse/file.c | 24 ++++++++++++++++--------
    1 files changed, 16 insertions(+), 8 deletions(-)

    diff --git a/fs/fuse/file.c b/fs/fuse/file.c
    index 9e85ef0..cd41b56 100644
    --- a/fs/fuse/file.c
    +++ b/fs/fuse/file.c
    @@ -1276,6 +1276,20 @@ static void fuse_writepage_end(struct fuse_conn *fc, struct fuse_req *req)
    fuse_writepage_free(fc, req);
    }

    +static struct fuse_file *fuse_write_file(struct fuse_conn *fc,
    + struct fuse_inode *fi)
    +{
    + struct fuse_file *ff;
    +
    + spin_lock(&fc->lock);
    + BUG_ON(list_empty(&fi->write_files));
    + ff = list_entry(fi->write_files.next, struct fuse_file, write_entry);
    + fuse_file_get(ff);
    + spin_unlock(&fc->lock);
    +
    + return ff;
    +}
    +
    static int fuse_writepage_locked(struct page *page)
    {
    struct address_space *mapping = page->mapping;
    @@ -1283,7 +1297,6 @@ static int fuse_writepage_locked(struct page *page)
    struct fuse_conn *fc = get_fuse_conn(inode);
    struct fuse_inode *fi = get_fuse_inode(inode);
    struct fuse_req *req;
    - struct fuse_file *ff;
    struct page *tmp_page;

    set_page_writeback(page);
    @@ -1296,13 +1309,8 @@ static int fuse_writepage_locked(struct page *page)
    if (!tmp_page)
    goto err_free;

    - spin_lock(&fc->lock);
    - BUG_ON(list_empty(&fi->write_files));
    - ff = list_entry(fi->write_files.next, struct fuse_file, write_entry);
    - req->ff = fuse_file_get(ff);
    - spin_unlock(&fc->lock);
    -
    - fuse_write_fill(req, ff, page_offset(page), 0);
    + req->ff = fuse_write_file(fc, fi);
    + fuse_write_fill(req, req->ff, page_offset(page), 0);

    copy_highpage(tmp_page, page);
    req->misc.write.in.write_flags |= FUSE_WRITE_CACHE;


    \
     
     \ /
      Last update: 2012-11-16 18:41    [W:2.672 / U:0.680 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site