aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/addr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ceph/addr.c')
-rw-r--r--fs/ceph/addr.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index f1d6c60ab229..722585cd5c7e 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -143,7 +143,8 @@ static int ceph_set_page_dirty(struct page *page)
143 * dirty page counters appropriately. Only called if there is private 143 * dirty page counters appropriately. Only called if there is private
144 * data on the page. 144 * data on the page.
145 */ 145 */
146static void ceph_invalidatepage(struct page *page, unsigned long offset) 146static void ceph_invalidatepage(struct page *page, unsigned int offset,
147 unsigned int length)
147{ 148{
148 struct inode *inode; 149 struct inode *inode;
149 struct ceph_inode_info *ci; 150 struct ceph_inode_info *ci;
@@ -159,20 +160,20 @@ static void ceph_invalidatepage(struct page *page, unsigned long offset)
159 if (!PageDirty(page)) 160 if (!PageDirty(page))
160 pr_err("%p invalidatepage %p page not dirty\n", inode, page); 161 pr_err("%p invalidatepage %p page not dirty\n", inode, page);
161 162
162 if (offset == 0) 163 if (offset == 0 && length == PAGE_CACHE_SIZE)
163 ClearPageChecked(page); 164 ClearPageChecked(page);
164 165
165 ci = ceph_inode(inode); 166 ci = ceph_inode(inode);
166 if (offset == 0) { 167 if (offset == 0 && length == PAGE_CACHE_SIZE) {
167 dout("%p invalidatepage %p idx %lu full dirty page %lu\n", 168 dout("%p invalidatepage %p idx %lu full dirty page\n",
168 inode, page, page->index, offset); 169 inode, page, page->index);
169 ceph_put_wrbuffer_cap_refs(ci, 1, snapc); 170 ceph_put_wrbuffer_cap_refs(ci, 1, snapc);
170 ceph_put_snap_context(snapc); 171 ceph_put_snap_context(snapc);
171 page->private = 0; 172 page->private = 0;
172 ClearPagePrivate(page); 173 ClearPagePrivate(page);
173 } else { 174 } else {
174 dout("%p invalidatepage %p idx %lu partial dirty page\n", 175 dout("%p invalidatepage %p idx %lu partial dirty page %u(%u)\n",
175 inode, page, page->index); 176 inode, page, page->index, offset, length);
176 } 177 }
177} 178}
178 179