From ab8758cb7f214acdf79ef3065aa05cb157e68109 Mon Sep 17 00:00:00 2001 From: shadow Date: Thu, 24 May 2007 19:18:14 +0000 Subject: [PATCH] using LL_ORIGIN_REMOVEPAGE origin flag instead of 0 for llap_from_page call in ll_removepage b=11817 i=shadow i=adilger --- lustre/ChangeLog | 9 +++++++++ lustre/llite/rw.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) 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)); -- 1.8.3.1