On Wed 05-09-12 15:30:29, Dmitry Monakhov wrote: > > ext3, ext4 and ocfs2 do not allow to release page w/o buffers. > Can some one please explain me why? > > ext4_releasepage(struct page *page, gfp_t wait) > { > if (!page_has_buffers(page)) > return 0; > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^( zero means fail to release) > if (journal) > return jbd2_journal_try_to_free_buffers(journal, page, wait); > else > return try_to_free_buffers(page); > } > > This is looks very strange because if page has not buffers then > it has no fs-specific data associated with it. Am I right? > IMHO code should looks like follows: > xxx_releasepage() { > > if(PageWriteback(page)) > return 0; > if (!page_has_buffers(page)) > return 1; > > return do_fs_specific_stuff() > } Yeah, I agree. Although this is mostly a harmless thing because all call sites test for page_has_private(page) before calling try_to_release_page(page) so !page_has_buffers(page) is impossible. But a cleanup (remove the test) would be nice. Also PageWriteback() is checked in try_to_release_page() so filesystems don't have to care... Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- 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