.namelen = 0,
};
int rc = 0;
-
ENTRY;
+ /* don't catch request to cross-ref */
+ if (dentry->d_flags & DCACHE_CROSS_REF)
+ RETURN(0);
+
info.m.nid = nid;
info.m.uid = current->uid;
info.m.gid = current->gid;
ENTRY;
//push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
-
- dentry = mds_id2dentry(obd, &msg->id, NULL);
- if (IS_ERR(dentry)) {
- CERROR("Cannot get dentry\n");
- RETURN(PTR_ERR(dentry));
+ if (IS_AUDIT_OP(msg->attr, AUDIT_FS) == 0) {
+ dentry = mds_id2dentry(obd, &msg->id, NULL);
+ if (IS_ERR(dentry)) {
+ CERROR("Cannot get dentry "DLID4" err=%li\n", OLID4(&msg->id),
+ PTR_ERR(dentry));
+ RETURN(PTR_ERR(dentry));
+ }
+ inode = dentry->d_inode;
}
-
- inode = dentry->d_inode;
- fsfilt_set_info(obd, inode->i_sb, inode,
+ fsfilt_set_info(obd, obd->u.mds.mds_sb, inode,
5, "audit", sizeof(msg->attr), &msg->attr);
- if (S_ISREG(inode->i_mode) && !IS_AUDIT_OP(msg->attr, AUDIT_FS))
+ if (inode && S_ISREG(inode->i_mode))
mds_set_obj_audit(obd, inode, &msg->attr);
- l_dput(dentry);
+ if (dentry)
+ l_dput(dentry);
//pop_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);