From 1408d4a64ccc2d854fb585278cf36b6cfbad083c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 9 Sep 2008 07:53:41 -0700 Subject: [PATCH] kclient: use truncate_inode_pages instead of vmtruncate --- src/kernel/addr.c | 4 ++++ src/kernel/inode.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/kernel/addr.c b/src/kernel/addr.c index 296ce137dcf..671ab127be5 100644 --- a/src/kernel/addr.c +++ b/src/kernel/addr.c @@ -172,10 +172,14 @@ static void ceph_invalidatepage(struct page *page, unsigned long offset) ClearPageChecked(page); if (!PageDirty(page)) { BUG_ON(snapc); + dout(20, "invalidatepage %p idx %lu clean\n", page, + page->index); return; } if (!page->mapping) { BUG_ON(snapc); + dout(20, "invalidatepage %p idx %lu unmapped\n", page, + page->index); return; } inode = page->mapping->host; diff --git a/src/kernel/inode.c b/src/kernel/inode.c index d05ced34587..2b778324cec 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -1183,6 +1183,9 @@ void ceph_vmtruncate_work(struct work_struct *work) mutex_unlock(&inode->i_mutex); } +/* + * called with i_mutex held + */ void __ceph_do_pending_vmtruncate(struct inode *inode) { struct ceph_inode_info *ci = ceph_inode(inode); @@ -1197,7 +1200,7 @@ void __ceph_do_pending_vmtruncate(struct inode *inode) if (to >= 0) { dout(10, "__do_pending_vmtruncate %p to %lld\n", inode, to); - vmtruncate(inode, to); + truncate_inode_pages(inode->i_mapping, to); if (wrbuffer_refs == 0) ceph_check_caps(ci, 0); } else -- 2.47.3