X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fllite%2Fvvp_dev.c;h=7db2a47185234d2709e63b06486062aa06a2f406;hb=d106dfc1458702865118e73bfcdfc2ec2676a7d6;hp=4ded8b49ac15e9b0131b8a76458810762cc17676;hpb=783002035ae9612b5b0aa80f2342a2ee9e81c374;p=fs%2Flustre-release.git diff --git a/lustre/llite/vvp_dev.c b/lustre/llite/vvp_dev.c index 4ded8b4..7db2a47 100644 --- a/lustre/llite/vvp_dev.c +++ b/lustre/llite/vvp_dev.c @@ -268,6 +268,18 @@ struct lu_device_type vvp_device_type = { #ifndef HAVE_ACCOUNT_PAGE_DIRTIED_EXPORT unsigned int (*vvp_account_page_dirtied)(struct page *page, struct address_space *mapping); + +unsigned int ll_account_page_dirtied(struct page *page, + struct address_space *mapping) +{ + /* must use __set_page_dirty, which means unlocking and + * relocking, which hurts performance. + */ + ll_xa_unlock(&mapping->i_pages); + __set_page_dirty(page, mapping, 0); + ll_xa_lock(&mapping->i_pages); + return 0; +} #endif /** @@ -292,6 +304,8 @@ int vvp_global_init(void) */ vvp_account_page_dirtied = (void *) cfs_kallsyms_lookup_name("account_page_dirtied"); + if (!vvp_account_page_dirtied) + vvp_account_page_dirtied = ll_account_page_dirtied; #endif return 0;