}
if (rc != 0) {
- if (imp->imp_state != LUSTRE_IMP_CLOSED && !imp->imp_deactive) {
+ if (imp->imp_state != LUSTRE_IMP_CLOSED &&
+ !imp->imp_deactive &&
+ imp->imp_connect_flags_orig & OBD_CONNECT_MDS_MDS &&
+ rc != -ENOTSUPP) {
/* Since LWP is not replayable, so it will keep
- * trying unless umount happens, otherwise it would
- * cause unecessary failure of the application. */
+ * trying unless umount happens or the remote
+ * target does not support the operation, otherwise
+ * it would cause unecessary failure of the
+ * application. */
ptlrpc_req_finished(req);
rc = 0;
goto again;
* then try next target in the list, until trying all targets
* or fld lookup succeeds */
spin_lock(&fld->lcf_lock);
- if (target->ft_chain.next == fld->lcf_targets.prev)
- target = list_entry(fld->lcf_targets.next,
+
+ /* If the next entry in the list is the head of the list,
+ * move to the next entry after the head and retrieve
+ * the target. Else retreive the next target entry. */
+
+ if (target->ft_chain.next == &fld->lcf_targets)
+ target = list_entry(target->ft_chain.next->next,
struct lu_fld_target, ft_chain);
else
target = list_entry(target->ft_chain.next,