struct obdo oa;
int rc;
ENTRY;
- CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) to %llu\n", inode->i_ino,
- inode->i_generation, inode, inode->i_size);
+ CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p) to %Lu=%#Lx\n",inode->i_ino,
+ inode->i_generation, inode, inode->i_size, inode->i_size);
if (lli->lli_size_pid != current->pid) {
EXIT;
/* XXX I'm pretty sure this is a hack to paper over a more fundamental
* race condition. */
if (lov_merge_size(lsm, 0) == inode->i_size) {
- CDEBUG(D_VFSTRACE, "skipping punch for "LPX64" (size = %llu)\n",
- lsm->lsm_object_id, inode->i_size);
+ CDEBUG(D_VFSTRACE, "skipping punch for obj "LPX64", %Lu=%#Lx\n",
+ lsm->lsm_object_id, inode->i_size, inode->i_size);
GOTO(out_unlock, 0);
}
}
}
- CDEBUG(D_INFO, "calling punch for "LPX64" (new size %llu)\n",
- lsm->lsm_object_id, inode->i_size);
+ CDEBUG(D_INFO, "calling punch for "LPX64" (new size %Lu=%#Lx)\n",
+ lsm->lsm_object_id, inode->i_size, inode->i_size);
oa.o_id = lsm->lsm_object_id;
oa.o_valid = OBD_MD_FLID;
oa->o_valid |= OBD_MD_FLIFID | OBD_MD_FLEPOCH;
mdc_pack_fid(obdo_fid(oa), inode->i_ino, 0, inode->i_mode);
oa->o_easize = ll_i2info(inode)->lli_io_epoch;
+ oa->o_uid = inode->i_uid;
+ oa->o_gid = inode->i_gid;
valid_flags |= OBD_MD_FLMTIME | OBD_MD_FLCTIME |
OBD_MD_FLUID | OBD_MD_FLGID;
while (--total >= 0 && count < want) {
struct page *page;
+ int keep;
if (unlikely(need_resched())) {
spin_unlock(&sbi->ll_lock);
continue;
}
- /* If page is dirty or undergoing IO don't discard it */
if (llap->llap_write_queued || PageDirty(page) ||
(!PageUptodate(page) &&
- llap->llap_origin != LLAP_ORIGIN_READAHEAD)) {
+ llap->llap_origin != LLAP_ORIGIN_READAHEAD))
+ keep = 1;
+ else
+ keep = 0;
+
+ LL_CDEBUG_PAGE(D_PAGE, page,"%s LRU page: %s%s%s%s origin %s\n",
+ keep ? "keep" : "drop",
+ llap->llap_write_queued ? "wq " : "",
+ PageDirty(page) ? "pd " : "",
+ PageUptodate(page) ? "" : "!pu ",
+ llap->llap_defer_uptodate ? "" : "!du",
+ llap_origins[llap->llap_origin]);
+
+ /* If page is dirty or undergoing IO don't discard it */
+ if (keep) {
unlock_page(page);
- LL_CDEBUG_PAGE(D_PAGE, page, "can't drop from cache: "
- "%s%s%s%s origin %s\n",
- llap->llap_write_queued ? "wq " : "",
- PageDirty(page) ? "pd " : "",
- PageUptodate(page) ? "" : "!pu ",
- llap->llap_defer_uptodate ? "" : "!du",
- llap_origins[llap->llap_origin]);
continue;
}
spin_unlock(&sbi->ll_lock);
++count;
- LL_CDEBUG_PAGE(D_PAGE, page, "drop from cache %lu/%lu\n",
- count, want);
if (page->mapping != NULL) {
ll_ra_accounting(page, page->mapping);
ll_truncate_complete_page(page);
LASSERT(PageLocked(page));
LASSERT(!PageUptodate(page));
- CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),offset="LPX64"\n",
+ CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p),offset=%Lu=%#Lx\n",
inode->i_ino, inode->i_generation, inode,
- (((obd_off)page->index) << PAGE_SHIFT));
+ (((loff_t)page->index) << PAGE_SHIFT),
+ (((loff_t)page->index) << PAGE_SHIFT));
LASSERT(atomic_read(&filp->f_dentry->d_inode->i_count) > 0);
rc = oig_init(&oig);