]> Pileus Git - ~andy/linux/blobdiff - fs/ocfs2/aops.c
Merge tag 'trace-fixes-v3.14-rc7-v2' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / fs / ocfs2 / aops.c
index f37d3c0e20535eacce542c7184f48d8b509884a2..aeb44e879c51fe35ec91b221ade792d8f54ced74 100644 (file)
@@ -80,6 +80,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock,
 
        if ((u64)iblock >= ocfs2_clusters_to_blocks(inode->i_sb,
                                                    le32_to_cpu(fe->i_clusters))) {
+               err = -ENOMEM;
                mlog(ML_ERROR, "block offset is outside the allocated size: "
                     "%llu\n", (unsigned long long)iblock);
                goto bail;
@@ -92,6 +93,7 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock,
                            iblock;
                buffer_cache_bh = sb_getblk(osb->sb, blkno);
                if (!buffer_cache_bh) {
+                       err = -ENOMEM;
                        mlog(ML_ERROR, "couldn't getblock for symlink!\n");
                        goto bail;
                }
@@ -592,26 +594,11 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,
        ocfs2_rw_unlock(inode, level);
 }
 
-/*
- * ocfs2_invalidatepage() and ocfs2_releasepage() are shamelessly stolen
- * from ext3.  PageChecked() bits have been removed as OCFS2 does not
- * do journalled data.
- */
-static void ocfs2_invalidatepage(struct page *page, unsigned int offset,
-                                unsigned int length)
-{
-       journal_t *journal = OCFS2_SB(page->mapping->host->i_sb)->journal->j_journal;
-
-       jbd2_journal_invalidatepage(journal, page, offset, length);
-}
-
 static int ocfs2_releasepage(struct page *page, gfp_t wait)
 {
-       journal_t *journal = OCFS2_SB(page->mapping->host->i_sb)->journal->j_journal;
-
        if (!page_has_buffers(page))
                return 0;
-       return jbd2_journal_try_to_free_buffers(journal, page, wait);
+       return try_to_free_buffers(page);
 }
 
 static ssize_t ocfs2_direct_IO(int rw,
@@ -1802,8 +1789,7 @@ try_again:
                        data_ac->ac_resv = &OCFS2_I(inode)->ip_la_data_resv;
 
                credits = ocfs2_calc_extend_credits(inode->i_sb,
-                                                   &di->id2.i_list,
-                                                   clusters_to_alloc);
+                                                   &di->id2.i_list);
 
        }
 
@@ -1897,10 +1883,14 @@ out_commit:
 out:
        ocfs2_free_write_ctxt(wc);
 
-       if (data_ac)
+       if (data_ac) {
                ocfs2_free_alloc_context(data_ac);
-       if (meta_ac)
+               data_ac = NULL;
+       }
+       if (meta_ac) {
                ocfs2_free_alloc_context(meta_ac);
+               meta_ac = NULL;
+       }
 
        if (ret == -ENOSPC && try_free) {
                /*
@@ -2087,7 +2077,7 @@ const struct address_space_operations ocfs2_aops = {
        .write_end              = ocfs2_write_end,
        .bmap                   = ocfs2_bmap,
        .direct_IO              = ocfs2_direct_IO,
-       .invalidatepage         = ocfs2_invalidatepage,
+       .invalidatepage         = block_invalidatepage,
        .releasepage            = ocfs2_releasepage,
        .migratepage            = buffer_migrate_page,
        .is_partially_uptodate  = block_is_partially_uptodate,