diff options
Diffstat (limited to 'fs/ceph/addr.c')
-rw-r--r-- | fs/ceph/addr.c | 15 |
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 | */ |
146 | static void ceph_invalidatepage(struct page *page, unsigned long offset) | 146 | static 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 | ||