xfs_warn(log->l_mp,
                "Log inconsistent (didn't find previous header)");
                        ASSERT(0);
-                       error = -EIO;
+                       error = -EFSCORRUPTED;
                        goto out;
                }
 
                return error;
        if (!error) {
                xfs_warn(log->l_mp, "%s: couldn't find sync record", __func__);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
        *tail_blk = BLOCK_LSN(be64_to_cpu(rhead->h_tail_lsn));
 
                default:
                        xfs_warn(log->l_mp, "%s: Invalid flag", __func__);
                        ASSERT(0);
-                       error = -EIO;
+                       error = -EFSCORRUPTED;
                        goto out_release;
                }
        }
        recddq = item->ri_buf[1].i_addr;
        if (recddq == NULL) {
                xfs_alert(log->l_mp, "NULL dquot in %s.", __func__);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
        if (item->ri_buf[1].i_len < sizeof(xfs_disk_dquot_t)) {
                xfs_alert(log->l_mp, "dquot too small (%d) in %s.",
                        item->ri_buf[1].i_len, __func__);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 
        /*
        if (fa) {
                xfs_alert(mp, "corrupt dquot ID 0x%x in log at %pS",
                                dq_f->qlf_id, fa);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
        ASSERT(dq_f->qlf_len == 1);
 
                xfs_warn(log->l_mp, "%s: invalid item type (%d)",
                        __func__, ITEM_TYPE(item));
                ASSERT(0);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 }
 
                xfs_warn(log->l_mp, "%s: invalid item type (%d)",
                        __func__, ITEM_TYPE(item));
                ASSERT(0);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 }
 
                ASSERT(len <= sizeof(struct xfs_trans_header));
                if (len > sizeof(struct xfs_trans_header)) {
                        xfs_warn(log->l_mp, "%s: bad header length", __func__);
-                       return -EIO;
+                       return -EFSCORRUPTED;
                }
 
                xlog_recover_add_item(&trans->r_itemq);
                        xfs_warn(log->l_mp, "%s: bad header magic number",
                                __func__);
                        ASSERT(0);
-                       return -EIO;
+                       return -EFSCORRUPTED;
                }
 
                if (len > sizeof(struct xfs_trans_header)) {
                        xfs_warn(log->l_mp, "%s: bad header length", __func__);
                        ASSERT(0);
-                       return -EIO;
+                       return -EFSCORRUPTED;
                }
 
                /*
                                  in_f->ilf_size);
                        ASSERT(0);
                        kmem_free(ptr);
-                       return -EIO;
+                       return -EFSCORRUPTED;
                }
 
                item->ri_total = in_f->ilf_size;
        default:
                xfs_warn(log->l_mp, "%s: bad flag 0x%x", __func__, flags);
                ASSERT(0);
-               error = -EIO;
+               error = -EFSCORRUPTED;
                break;
        }
        if (error || freeit)
                xfs_warn(log->l_mp, "%s: bad clientid 0x%x",
                        __func__, ohead->oh_clientid);
                ASSERT(0);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 
        /*
        if (dp + len > end) {
                xfs_warn(log->l_mp, "%s: bad length 0x%x", __func__, len);
                WARN_ON(1);
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 
        trans = xlog_recover_ophdr_to_trans(rhash, rhead, ohead);
            (be32_to_cpu(rhead->h_version) & (~XLOG_VERSION_OKBITS))))) {
                xfs_warn(log->l_mp, "%s: unrecognised log version (%d).",
                        __func__, be32_to_cpu(rhead->h_version));
-               return -EIO;
+               return -EFSCORRUPTED;
        }
 
        /* LR body must have data or it wouldn't have been written */