Whamcloud - gitweb
LU-8681 osd: ingore ENODATA during unlink agent parent
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_handler.c
index e63e1c7..0dcd8d8 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -3185,10 +3181,10 @@ static int osd_object_destroy(const struct lu_env *env,
                /* it will check/delete the inode from remote parent,
                 * how to optimize it? unlink performance impaction XXX */
                result = osd_delete_from_remote_parent(env, osd, obj, oh);
-               if (result != 0 && result != -ENOENT) {
+               if (result != 0)
                        CERROR("%s: delete inode "DFID": rc = %d\n",
                               osd_name(osd), PFID(fid), result);
-               }
+
                spin_lock(&obj->oo_guard);
                clear_nlink(inode);
                spin_unlock(&obj->oo_guard);
@@ -4485,20 +4481,19 @@ static int osd_index_ea_delete(const struct lu_env *env, struct dt_object *dt,
         * /Agent directory, Check whether it needs to delete
         * from agent directory */
        if (unlikely(strcmp((char *)key, dotdot) == 0)) {
-               rc = osd_delete_from_remote_parent(env, osd_obj2dev(obj), obj,
-                                                  oh);
-               if (rc != 0 && rc != -ENOENT) {
-                       CERROR("%s: delete agent inode "DFID": rc = %d\n",
-                              osd_name(osd), PFID(fid), rc);
-               }
-
-               if (rc == -ENOENT)
-                       rc = 0;
-
-               GOTO(out, rc);
+               int ret;
+
+               ret = osd_delete_from_remote_parent(env, osd_obj2dev(obj),
+                                                   obj, oh);
+               if (ret != 0)
+                       /* Sigh, the entry has been deleted, and
+                        * it is not easy to revert it back, so
+                        * let's keep this error private, and let
+                        * LFSCK fix it. XXX */
+                       CERROR("%s: delete remote parent "DFID": rc = %d\n",
+                              osd_name(osd), PFID(fid), ret);
        }
 out:
-
         LASSERT(osd_invariant(obj));
        osd_trans_exec_check(env, handle, OSD_OT_DELETE);
         RETURN(rc);