Final version of the read performance patch, tested on ALC.
GOTO(out, rc);
file->f_flags &= ~O_LOV_DELAY_CREATE;
- obdo_refresh_inode(inode, oa, (OBD_MD_FLBLOCKS | OBD_MD_FLATIME |
- OBD_MD_FLMTIME | OBD_MD_FLCTIME));
+ obdo_refresh_inode(inode, oa, (OBD_MD_FLBLOCKS | OBD_MD_FLBLKSZ |
+ OBD_MD_FLATIME | OBD_MD_FLMTIME |
+ OBD_MD_FLCTIME));
EXIT;
out:
obdo_free(oa);
}
GOTO(out_oa, rc);
}
+ obdo_refresh_inode(inode, oa, OBD_MD_FLBLKSZ);
LASSERT(lsm && lsm->lsm_object_id);
rc = obd_packmd(conn, &lmm, lsm);
(aft != 0 || after < before) &&
oa.o_size < ((u64)before + 1) << PAGE_CACHE_SHIFT);
- obdo_refresh_inode(inode, &oa, (OBD_MD_FLBLOCKS | OBD_MD_FLMTIME |
- OBD_MD_FLCTIME));
+ obdo_refresh_inode(inode, &oa, (OBD_MD_FLBLOCKS | OBD_MD_FLBLKSZ |
+ OBD_MD_FLMTIME | OBD_MD_FLCTIME));
if (inode->i_blksize < PAGE_CACHE_SIZE)
inode->i_blksize = PAGE_CACHE_SIZE;
llwp->pga, set, NULL);
if (rc == 0)
rc = ptlrpc_set_wait(set);
- if (rc == 0)
- obdo_refresh_inode(inode, oa,
- oa->o_valid & ~OBD_MD_FLSIZE);
+ if (rc == 0) {
+ /* bug 1598: don't clobber blksize */
+ oa->o_valid &= ~(OBD_MD_FLSIZE | OBD_MD_FLBLKSZ);
+ obdo_refresh_inode(inode, oa, oa->o_valid);
+ }
ptlrpc_set_destroy (set);
}
/*
if (rc == 0)
rc = ptlrpc_set_wait(set);
ptlrpc_set_destroy(set);
- if (rc == 0)
+ if (rc == 0) {
+ /* bug 1598: don't clobber blksize */
+ oa->o_valid &= ~(OBD_MD_FLSIZE | OBD_MD_FLBLKSZ);
obdo_refresh_inode(inode, oa, oa->o_valid);
+ }
if (rc && rc != -EIO)
CERROR("error from obd_brw_async: rc = %d\n", rc);
obdo_free(oa);
oa.o_valid = OBD_MD_FLID |OBD_MD_FLMODE |OBD_MD_FLTYPE |OBD_MD_FLHANDLE;
rc = ll_brw(OBD_BRW_READ, inode, &oa, page, 0);
- if (rc == 0)
+ if (rc == 0) {
+ /* bug 1598: don't clobber blksize */
+ oa.o_valid &= ~(OBD_MD_FLSIZE | OBD_MD_FLBLKSZ);
obdo_refresh_inode(inode, &oa, oa.o_valid);
+ }
EXIT;
prepare_done:
LTIME_S(dst->i_ctime) = src->o_ctime;
if (valid & OBD_MD_FLSIZE && src->o_size > dst->i_size)
dst->i_size = src->o_size;
- /* Bug 1598: don't ever update i_blksize here; it needs to be managed
- * by the LOV */
+ /* optimum IO size */
+ if (valid & OBD_MD_FLBLKSZ && src->o_blksize > dst->i_blksize)
+ dst->i_blksize = src->o_blksize;
/* allocation of space */
if (valid & OBD_MD_FLBLOCKS && src->o_blocks > dst->i_blocks)
dst->i_blocks = src->o_blocks;