[lustre-devel] [PATCH 08/24] lustre: use truncate_inode_page in place of truncate_complete_page

Oleg Drokin green at linuxhacker.ru
Fri Jun 15 17:59:43 PDT 2018


> On Jun 15, 2018, at 8:52 PM, NeilBrown <neilb at suse.com> wrote:
> 
> On Sat, Jun 16 2018, James Simmons wrote:
> 
>>> Carrying a local truncate_complete_page() is not good
>>> for maintainability.  Linux now used truncate_inode_page,
>>> so use that instead.
>>> For correct use, we need to pass the mapping to mdc_release_page()
>>> rather than trusting page->mapping.
>> 
>> Nak: truncate_inode_page is not exported so it fails to build when lustre
>> is configured as a module.
> 
> Bother, nor it is.
> We could probably use truncate_inode_pages_range() but it isn't a
> perfect fit, which seems to suggest that lustre is trying to do
> something that no other filesystem finds the need to do.
> I'll dig deeper and work out what is really going on.

Lustre evicts pages from mapping when the lock that covers the pages
is canceled.
Normally this only applies to data pages, and I see this is in mdc which is for metadata.

For metadata the only pages we hold are readdir pages and the lock currently
covers entire dir so lock cancelation should not need this.

So looking at the code the other two users are readdir where we failed to populate page
somehow and now need to throw it out and then a collision event for hashes, it appears.
Both of these should apply to other filesystems I am sure.




More information about the lustre-devel mailing list