ocfs2: Simplify ocfs2_invalidatepage() and ocfs2_releasepage()
PATCH 1/1 ocfs2: Simplify ocfs2_invalidatepage() and ocfs2_releasepage()
Ocfs2 doesn't do data journalling. Thus its ->invalidatepage and ->releasepage functions never get called on buffers that have journal heads attached. So just use standard variants of functions from buffer.c.
--- fs/ocfs2/aops.c | 18 ++---------------- 1 files changed, 2 insertions(+), 16 deletions(-)
fs/ocfs2/aops.c +2 -16
@@ -598,25 +598,11 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,inode_dio_done (inode); } -/* -* 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 long offset) -{ -journal_t *journal =OCFS2_SB (page->mapping->host->i_sb)->journal->j_journal; - -jbd2_journal_invalidatepage (journal, page, offset); -} -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,
@@ -2091,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,
Signature · 1 line
1.7.1
Joel Becker
maintainerPATCH 1/1 ocfs2: Simplify ocfs2_invalidatepage() and ocfs2_releasepage()
Quoted 3 lines · Jan Kara
Ocfs2 doesn't do data journalling. Thus its ->invalidatepage and ->releasepage functions never get called on buffers that have journal heads attached. So just use standard variants of functions from
buffer.c.
Indeed, we do not. I suppose if we ever use readpage, etc for our dirblocks we'll have to revisit this.
Do you want me to send this along?
Joel
Quoted 48 lines
Signed-off-by Jan Kara <[email protected]>--- fs/ocfs2/aops.c | 18 ++---------------- 1 files changed, 2 insertions(+), 16 deletions(-)fs/ocfs2/aops.c +2
-16@@ -598,25 +598,11 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,inode_dio_done (inode); } -/* -* 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 long offset) -{ -journal_t *journal =OCFS2_SB (page->mapping->host->i_sb)->journal->j_journal; - -jbd2_journal_invalidatepage (journal, page, offset); -} -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,@@ -2091,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,Signature · 1 line
1.7.1
Signature · 9 lines
"But then she looks me in the eye And says, 'We're going to last forever,' And man you know I can't begin to doubt it. Cause it just feels so good and so free and so right, I know we ain't never going to change our minds about it, Hey! Here comes my girl." http://www.jlbec.org/ jlbec at evilplan.org
PATCH 1/1 ocfs2: Simplify ocfs2_invalidatepage() and ocfs2_releasepage()
Quoted 7 lines · Joel Becker
Quoted 3 lines · Jan Kara
Ocfs2 doesn't do data journalling. Thus its ->invalidatepage and ->releasepage functions never get called on buffers that have journal heads attached. So just use standard variants of functions from
buffer.c.Indeed, we do not. I suppose if we ever use readpage, etc for our dirblocks we'll have to revisit this.
Depends on how exactly you do that but probably yes. OTOH there will be
separate a_ops for directories anyway I assume...
Quoted 1 line
Do you want me to send this along?
Yes, please. Sign-off from a maintainer is good ;)
Honza
Quoted 60 lines
Quoted 48 lines
Signed-off-by Jan Kara <[email protected]>--- fs/ocfs2/aops.c | 18 ++---------------- 1 files changed, 2 insertions(+), 16 deletions(-)fs/ocfs2/aops.c +2
-16@@ -598,25 +598,11 @@ static void ocfs2_dio_end_io(struct kiocb *iocb,inode_dio_done (inode); } -/* -* 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 long offset) -{ -journal_t *journal =OCFS2_SB (page->mapping->host->i_sb)->journal->j_journal; - -jbd2_journal_invalidatepage (journal, page, offset); -} -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,@@ -2091,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,Signature · 1 line
1.7.1Signature · 9 lines
"But then she looks me in the eye And says, 'We're going to last forever,' And man you know I can't begin to doubt it. Cause it just feels so good and so free and so right, I know we ain't never going to change our minds about it, Hey! Here comes my girl." http://www.jlbec.org/ jlbec at evilplan.org
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR