From: shadow Date: Thu, 24 May 2007 19:18:14 +0000 (+0000) Subject: using LL_ORIGIN_REMOVEPAGE origin flag instead of 0 for llap_from_page call in X-Git-Tag: v1_8_0_110~1594 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=ab8758cb7f214acdf79ef3065aa05cb157e68109;p=fs%2Flustre-release.git using LL_ORIGIN_REMOVEPAGE origin flag instead of 0 for llap_from_page call in ll_removepage b=11817 i=shadow i=adilger --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index b324048..b103215 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -182,6 +182,15 @@ Details : Lov_mds_md was not free in an error handler in mds_create_object. req->rq_repmsg->transno) in ptlrpc_replay_interpret. Fcc should be freed no matter whether fsfilt_commit success or not. +Severity : minor +Frequency : only with huge count clients +Bugzilla : 11817 +Description: Prevents from taking the superblock lock in llap_from_page for + a soon died page. +Details : using LL_ORIGIN_REMOVEPAGE origin flag instead of LL_ORIGIN_UNKNOW + for llap_from_page call in ll_removepage prevents from taking the + superblock lock for a soon died page. + -------------------------------------------------------------------------------- 2007-05-03 Cluster File Systems, Inc. diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index ca8e6b3..17a696f 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -914,7 +914,7 @@ void ll_removepage(struct page *page) return; } - llap = llap_from_page(page, 0); + llap = llap_from_page(page, LLAP_ORIGIN_REMOVEPAGE); if (IS_ERR(llap)) { CERROR("page %p ind %lu couldn't find llap: %ld\n", page, page->index, PTR_ERR(llap));