int rc;
ENTRY;
- if (capa_expired(&ocapa->c_capa))
- RETURN(-ESTALE);
-
rc = md_getattr(md_exp, &lli->lli_id, valid, NULL, NULL, 0,
0, ocapa, &req);
RETURN(rc);
if (ocapa->c_capa.lc_op == CAPA_TRUNC)
continue;
+ if (capa_expired(&ocapa->c_capa)) {
+ capa_put_nolock(ocapa);
+ continue;
+ }
+
if (__capa_is_to_expire(ocapa, &tv)) {
inode = igrab(ocapa->c_inode);
- if (inode == NULL)
+ if (inode == NULL) {
+ DEBUG_CAPA(D_ERROR, &ocapa->c_capa,
+ "igrab failed for");
continue;
+ }
tcapa = *ocapa;
spin_unlock(&capa_lock);
rc = ll_renew_capa(&tcapa);
iput(inode);
- if (rc)
- capa_put(ocapa);
-
spin_lock(&capa_lock);
} else {
next = ocapa;
LASSERT(body != NULL); /* reply already checked out */
LASSERT_REPSWABBED(req, 1); /* and swabbed down */
- if (!(body->valid & OBD_MD_CAPA))
+ if (!(body->valid & OBD_MD_CAPA)) {
+ if (atomic_read(&ll_capa_stat))
+ DEBUG_REQ(D_ERROR, req,
+ "no capa for (uid %u, op %d, "DLID4"\n",
+ (unsigned)current->uid, it->it_flags,
+ OLID4(&lli->lli_id));
+
return 0;
+ }
ENTRY;
}
if (atomic_read(&ll_capa_stat)) {
- CDEBUG(D_ERROR, "find capa for (uid %u, op %d, mdsid "LPU64","
- " ino %u igen %u) failed.\n",
+ CDEBUG(D_ERROR, "can't find capa for (uid %u, op %d, mdsid "
+ LPU64", ino %u igen %u) failed.\n",
(unsigned)uid, op, id_group(&lli->lli_id),
(unsigned)id_ino(&lli->lli_id), id_gen(&lli->lli_id));
atomic_set(&ll_capa_stat, 0);