return !TestSetPageDirty(page);
if (TestSetPageDirty(page)) {
- dout(20, "%p set_page_dirty %p -- already dirty\n",
- mapping->host, page);
+ dout(20, "%p set_page_dirty %p idx %lu -- already dirty\n",
+ mapping->host, page, page->index);
return 0;
}
if (ci->i_wrbuffer_ref_head == 0)
ci->i_head_snapc = ceph_get_snap_context(snapc);
++ci->i_wrbuffer_ref_head;
- dout(20, "%p set_page_dirty %p head %d/%d -> %d/%d "
+ dout(20, "%p set_page_dirty %p idx %lu head %d/%d -> %d/%d "
"snapc %p seq %lld (%d snaps)\n",
- mapping->host, page,
+ mapping->host, page, page->index,
ci->i_wrbuffer_ref-1, ci->i_wrbuffer_ref_head-1,
ci->i_wrbuffer_ref, ci->i_wrbuffer_ref_head,
snapc, snapc->seq, snapc->num_snaps);
BUG_ON(!capsnap);
BUG_ON(capsnap->context != snapc);
capsnap->dirty_pages++;
- dout(20, "%p set_page_dirty %p snap %lld %d/%d -> %d/%d"
+ dout(20, "%p set_page_dirty %p idx %lu snap %lld %d/%d -> %d/%d"
" snapc %p seq %lld (%d snaps)\n",
- mapping->host, page, capsnap->follows,
+ mapping->host, page, page->index, capsnap->follows,
ci->i_wrbuffer_ref-1, capsnap->dirty_pages-1,
ci->i_wrbuffer_ref, capsnap->dirty_pages,
snapc, snapc->seq, snapc->num_snaps);
struct pagevec pvec;
loff_t offset;
- dout(10, "readpages inode %p file %p nr_pages %d\n",
+ dout(10, "readpages %p file %p nr_pages %d\n",
inode, file, nr_pages);
/* guess read extent */
if (add_to_page_cache(page, mapping, page->index, GFP_NOFS)) {
page_cache_release(page);
- dout(20, "readpages add_to_page_cache failed on %p\n",
- page);
+ dout(20, "readpages %p add_to_page_cache failed %p\n",
+ inode, page);
continue;
}
- dout(10, "readpages adding page %p\n", page);
+ dout(10, "readpages %p adding %p idx %lu\n", inode, page,
+ page->index);
flush_dcache_page(page);
SetPageUptodate(page);
unlock_page(page);
struct ceph_mds_client *mdsc = &ceph_inode_to_client(inode)->mdsc;
struct page *page;
pgoff_t index = pos >> PAGE_CACHE_SHIFT;
- loff_t page_off = pos & PAGE_MASK;
- int pos_in_page = pos & ~PAGE_MASK;
+ loff_t page_off = pos & PAGE_CACHE_MASK;
+ int pos_in_page = pos & ~PAGE_CACHE_MASK;
int end_in_page = pos_in_page + len;
loff_t i_size;
struct ceph_snap_context *snapc;
goto retry_locked;
}
- if (PageUptodate(page))
+ if (PageUptodate(page)) {
+ dout(20, " page %p already uptodate\n", page);
return 0;
+ }
/* full page? */
- if (pos_in_page == 0 && len == PAGE_SIZE)
+ if (pos_in_page == 0 && len == PAGE_CACHE_SIZE)
return 0;
/* past end of file? */
if (page_off >= i_size ||
(pos_in_page == 0 && (pos+len) >= i_size &&
end_in_page - pos_in_page != PAGE_CACHE_SIZE)) {
+ dout(20, " zeroing %p 0 - %d and %d - %d\n",
+ page, pos_in_page, end_in_page, (int)PAGE_CACHE_SIZE);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
zero_user_segments(page,
0, pos_in_page,
else
len = size & ~PAGE_CACHE_MASK;
- dout(10, "page_mkwrite %p %llu~%llu (page %p offset %lu)\n", inode,
+ dout(10, "page_mkwrite %p %llu~%llu page %p idx %lu\n", inode,
off, len, page, page->index);
ret = ceph_write_begin(vma->vm_file, inode->i_mapping, off, len, 0,
&locked_page, &fsdata);