LASSERT(lock != NULL);
LASSERT(ldlm_has_layout(lock));
if (result == 0) {
+ struct lustre_md *md = conf->u.coc_md;
+ __u32 gen = LL_LAYOUT_GEN_EMPTY;
+
/* it can only be allowed to match after layout is
* applied to inode otherwise false layout would be
* seen. Applying layout shoud happen before dropping
* the intent lock. */
ldlm_lock_allow_match(lock);
+
+ lli->lli_has_smd = lsm_has_objects(md->lsm);
+ if (md->lsm != NULL)
+ gen = md->lsm->lsm_layout_gen;
+
+ CDEBUG(D_VFSTRACE,
+ DFID ": layout version change: %u -> %u\n",
+ PFID(&lli->lli_fid), ll_layout_version_get(lli),
+ gen);
+ ll_layout_version_set(lli, gen);
}
}
RETURN(result);
* a price themselves. */
unmap_mapping_range(conf->coc_inode->i_mapping,
0, OBD_OBJECT_EOF, 0);
-
- return 0;
- }
-
- if (conf->coc_opc != OBJECT_CONF_SET)
- return 0;
-
- if (conf->u.coc_md != NULL && conf->u.coc_md->lsm != NULL) {
- CDEBUG(D_VFSTRACE, DFID ": layout version change: %u -> %u\n",
- PFID(&lli->lli_fid), lli->lli_layout_gen,
- conf->u.coc_md->lsm->lsm_layout_gen);
-
- lli->lli_has_smd = lsm_has_objects(conf->u.coc_md->lsm);
- ll_layout_version_set(lli, conf->u.coc_md->lsm->lsm_layout_gen);
- } else {
- CDEBUG(D_VFSTRACE, DFID ": layout nuked: %u.\n",
- PFID(&lli->lli_fid), lli->lli_layout_gen);
-
- lli->lli_has_smd = false;
- ll_layout_version_set(lli, LL_LAYOUT_GEN_EMPTY);
}
return 0;
}