if (einfo->ei_type == LDLM_EXTENT)
lock->l_req_extent = policy->l_extent;
- LDLM_DEBUG(lock, "client-side enqueue START");
+
+ LDLM_DEBUG(lock, "client-side enqueue START, flags %x\n",
+ *flags);
}
/* lock not sent to server yet */
int rc = 0, rc1 = 0;
ENTRY;
- CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu valid %x\n", inode->i_ino,
+ CDEBUG(D_VFSTRACE,
+ "Setattr inode %p/fid:"DFID" from %llu to %llu, valid %x\n",
+ inode, PFID(&lli->lli_fid), i_size_read(inode), attr->ia_size,
attr->ia_valid);
+
ll_stats_ops_tally(ll_i2sbi(inode), LPROC_LL_SETATTR, 1);
if (ia_valid & ATTR_SIZE) {
static int vvp_io_setattr_lock(const struct lu_env *env,
const struct cl_io_slice *ios)
{
- struct ccc_io *cio = ccc_env_io(env);
- struct cl_io *io = ios->cis_io;
- size_t new_size;
- __u32 enqflags = 0;
+ struct ccc_io *cio = ccc_env_io(env);
+ struct cl_io *io = ios->cis_io;
+ __u64 new_size;
+ __u32 enqflags = 0;
if (cl_io_is_trunc(io)) {
new_size = io->u.ci_setattr.sa_attr.lvb_size;
ENTRY;
+ /* for top lock, it's necessary to match enq flags otherwise it will
+ * run into problem if a sublock is missing and reenqueue. */
+ if (need->cld_enq_flags != lov->lls_orig.cld_enq_flags)
+ return 0;
+
if (need->cld_mode == CLM_GROUP)
/*
* always allow to match group lock.
if (clk->ols_locklessable && !(enqflags & CEF_DISCARD_DATA))
clk->ols_flags |= LDLM_FL_DENY_ON_CONTENTION;
+ LDLM_DEBUG_NOLOCK("lock %p, osc lock %p, flags %x\n",
+ lock, clk, clk->ols_flags);
+
result = 0;
} else
result = -ENOMEM;