On Wed, Apr 14, 2021 at 09:47:34PM +0800, Zhang Yi wrote: > static int blkdev_releasepage(struct page *page, gfp_t wait) > { > struct super_block *super = BDEV_I(page->mapping->host)->bdev.bd_super; > + int ret = 0; > > if (super && super->s_op->bdev_try_to_free_page) > + ret = super->s_op->bdev_try_to_free_page(super, page, wait); > + if (!ret) > + return try_to_free_buffers(page); > + return 0; This would rea much better as: if (super && super->s_op->bdev_try_to_free_page && super->s_op->bdev_try_to_free_page(super, page, wait) return 0; return try_to_free_buffers(page); and I think changing ->bdev_try_to_free_page to return a bool where true means "yes, free the buffers" and false means "don't free buffers" would be a better calling convention. Also please split the changes to the method signature from the ext4 internal cleanups.