Apply the dynamic SCSI buffer window sizing fix to MO, removable disk, and CD-ROM as well.
This commit is contained in:
@@ -664,8 +664,17 @@ static void
|
||||
mo_buf_alloc(mo_t *dev, uint32_t len)
|
||||
{
|
||||
mo_log(dev->log, "Allocated buffer length: %i\n", len);
|
||||
if (dev->buffer == NULL)
|
||||
|
||||
if (dev->buffer == NULL) {
|
||||
dev->buffer = (uint8_t *) malloc(len);
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
|
||||
if (len > dev->buffer_sz) {
|
||||
uint8_t *buf = (uint8_t *) realloc(dev->buffer, len);
|
||||
dev->buffer = buf;
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -747,8 +747,17 @@ static void
|
||||
rdisk_buf_alloc(rdisk_t *dev, const uint32_t len)
|
||||
{
|
||||
rdisk_log(dev->log, "Allocated buffer length: %i\n", len);
|
||||
if (dev->buffer == NULL)
|
||||
|
||||
if (dev->buffer == NULL) {
|
||||
dev->buffer = (uint8_t *) malloc(len);
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
|
||||
if (len > dev->buffer_sz) {
|
||||
uint8_t *buf = (uint8_t *) realloc(dev->buffer, len);
|
||||
dev->buffer = buf;
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -140,6 +140,7 @@ typedef struct mo_t {
|
||||
void * log;
|
||||
|
||||
uint8_t *buffer;
|
||||
size_t buffer_sz;
|
||||
uint8_t atapi_cdb[16];
|
||||
uint8_t current_cdb[16];
|
||||
uint8_t sense[256];
|
||||
|
||||
@@ -117,6 +117,7 @@ typedef struct rdisk_t {
|
||||
void *log;
|
||||
|
||||
uint8_t *buffer;
|
||||
size_t buffer_sz;
|
||||
uint8_t atapi_cdb[16];
|
||||
uint8_t current_cdb[16];
|
||||
uint8_t sense[256];
|
||||
|
||||
@@ -36,6 +36,7 @@ typedef struct scsi_cdrom_t {
|
||||
void * log;
|
||||
|
||||
uint8_t * buffer;
|
||||
size_t buffer_sz;
|
||||
uint8_t atapi_cdb[16];
|
||||
uint8_t current_cdb[16];
|
||||
uint8_t sense[256];
|
||||
|
||||
@@ -857,11 +857,18 @@ scsi_cdrom_unit_attention(scsi_cdrom_t *dev)
|
||||
static void
|
||||
scsi_cdrom_buf_alloc(scsi_cdrom_t *dev, const uint32_t len)
|
||||
{
|
||||
if (dev->buffer == NULL)
|
||||
dev->buffer = (uint8_t *) malloc(len);
|
||||
scsi_cdrom_log(dev->log, "Allocated buffer length: %i\n", len);
|
||||
|
||||
scsi_cdrom_log(dev->log, "Allocated buffer length: %i, buffer = %p\n",
|
||||
len, dev->buffer);
|
||||
if (dev->buffer == NULL) {
|
||||
dev->buffer = (uint8_t *) malloc(len);
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
|
||||
if (len > dev->buffer_sz) {
|
||||
uint8_t *buf = (uint8_t *) realloc(dev->buffer, len);
|
||||
dev->buffer = buf;
|
||||
dev->buffer_sz = len;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -623,10 +623,12 @@ static void
|
||||
scsi_disk_buf_alloc(scsi_disk_t *dev, uint32_t len)
|
||||
{
|
||||
scsi_disk_log(dev->log, "Allocated buffer length: %i\n", len);
|
||||
|
||||
if (dev->temp_buffer == NULL) {
|
||||
dev->temp_buffer = (uint8_t *) malloc(len);
|
||||
dev->temp_buffer_sz = len;
|
||||
}
|
||||
|
||||
if (len > dev->temp_buffer_sz) {
|
||||
uint8_t *buf = (uint8_t *) realloc(dev->temp_buffer, len);
|
||||
dev->temp_buffer = buf;
|
||||
|
||||
Reference in New Issue
Block a user