浏览代码

Hold BSY low during log write to avoid timeouts

Petteri Aimonen 3 年之前
父节点
当前提交
f0f4a01225
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      src/AzulSCSI.cpp

+ 12 - 1
src/AzulSCSI.cpp

@@ -157,7 +157,7 @@ bool hddimageOpen(HDDIMG *h,const char *image_name,int id,int lun,int blocksize)
   if(h->m_file.isOpen())
   {
     h->m_fileSize = h->m_file.size();
-    azlog("Opened image file ", image_name, " fileSize: ", (int)h->m_fileSize, " bytes");
+    azlog("Opened image file ", image_name, " fileSize: ", (int)(h->m_fileSize / 1024), " kB");
     
     if(h->m_fileSize > 0)
     {
@@ -1000,6 +1000,7 @@ void scsi_loop()
   writeHandshake(0);
 
   azdbg("Command complete");
+
   SCSI_RELEASE_OUTPUTS();
 }
 
@@ -1035,9 +1036,19 @@ void saveLog(FsFile &logfile)
 
   if (loglen != prev_log_len)
   {
+    // Hold down BSY during the write to avoid timeouts on host
+    if (SCSI_IN(BSY))
+    {
+      return;
+    }
+
+    SCSI_OUT(BSY, active);
+
     logfile.write(azlog_get_buffer(&prev_log_pos));
     logfile.flush();
     
+    SCSI_OUT(BSY, inactive);
+
     prev_log_len = loglen;
   }
 }