+ if (unlikely(op_data->op_mea1 != NULL)) {
+ /* This is only needed for striped dir to fill ..,
+ * see lmv_read_entry */
+ if (filp->f_dentry->d_parent != NULL &&
+ filp->f_dentry->d_parent->d_inode != NULL) {
+ __u64 ibits = MDS_INODELOCK_UPDATE;
+ struct inode *parent =
+ filp->f_dentry->d_parent->d_inode;
+
+ if (ll_have_md_lock(parent, &ibits, LCK_MINMODE))
+ op_data->op_fid3 = *ll_inode2fid(parent);
+ }
+
+ /* If it can not find in cache, do lookup .. on the master
+ * object */
+ if (fid_is_zero(&op_data->op_fid3)) {
+ rc = ll_dir_get_parent_fid(inode, &op_data->op_fid3);
+ if (rc != 0)
+ RETURN(rc);
+ }
+ }