Diff for /src/sys/dev/disk/ata/atapi-all.c between versions 1.4 and 1.5

version 1.4, 2003/08/07 21:16:51 version 1.5, 2003/11/30 20:14:18
Line 94  atapi_attach(struct ata_device *atadev) Line 94  atapi_attach(struct ata_device *atadev)
     ATA_UNLOCK_CH(atadev->channel);      ATA_UNLOCK_CH(atadev->channel);
   
     if (!(atadev->result = malloc(sizeof(struct atapi_reqsense), M_ATAPI,      if (!(atadev->result = malloc(sizeof(struct atapi_reqsense), M_ATAPI,
                                  M_NOWAIT | M_ZERO)))                                  M_WAITOK | M_ZERO)))
         ata_prtdev(atadev, "no memory for sense data\n");          ata_prtdev(atadev, "no memory for sense data\n");
   
     switch (atadev->param->type) {      switch (atadev->param->type) {
Line 162  atapi_detach(struct ata_device *atadev) Line 162  atapi_detach(struct ata_device *atadev)
             biodone(bp);              biodone(bp);
         }          }
         if (request->dmatab)          if (request->dmatab)
            free(request->dmatab, M_DEVBUF);            ata_dmafree(atadev->channel, request->dmatab);
         free(request, M_ATAPI);          free(request, M_ATAPI);
     }      }
     free(atadev->result, M_ATAPI);      free(atadev->result, M_ATAPI);
Line 178  atapi_queue_cmd(struct ata_device *atade Line 178  atapi_queue_cmd(struct ata_device *atade
 {  {
     struct atapi_request *request;      struct atapi_request *request;
     int error, s;      int error, s;
 
    if (!(request = malloc(sizeof(struct atapi_request), M_ATAPI,    request = malloc(sizeof(struct atapi_request), M_ATAPI, M_NOWAIT|M_ZERO);
                           M_NOWAIT | M_ZERO)))    if (request == NULL) {
        return ENOMEM;        printf("WARNNIG: atapi_queue_cmd: malloc() would block\n");
         request = malloc(sizeof(struct atapi_request), M_ATAPI, M_WAITOK|M_ZERO);
     }
   
     request->device = atadev;      request->device = atadev;
     request->data = data;      request->data = data;
Line 196  atapi_queue_cmd(struct ata_device *atade Line 198  atapi_queue_cmd(struct ata_device *atade
         request->driver = driver;          request->driver = driver;
     }      }
     if (atadev->mode >= ATA_DMA) {      if (atadev->mode >= ATA_DMA) {
        if (!(request->dmatab = ata_dmaalloc(atadev->channel, atadev->unit)))        request->dmatab = ata_dmaalloc(atadev->channel, atadev->unit, M_NOWAIT);
            atadev->mode = ATA_PIO;        if (request->dmatab == NULL) {
             printf("WARNING: atapi_queue_cmd: ata_dmaalloc() would block\n");
             request->dmatab = ata_dmaalloc(atadev->channel,
                                         atadev->unit, M_WAITOK);
         }
     }      }
   
 #ifdef ATAPI_DEBUG  #ifdef ATAPI_DEBUG
Line 226  atapi_queue_cmd(struct ata_device *atade Line 232  atapi_queue_cmd(struct ata_device *atade
     if (error)      if (error)
          bcopy(&request->sense, atadev->result, sizeof(struct atapi_reqsense));           bcopy(&request->sense, atadev->result, sizeof(struct atapi_reqsense));
     if (request->dmatab)      if (request->dmatab)
        free(request->dmatab, M_DEVBUF);        ata_dmafree(atadev->channel, request->dmatab);
     free(request, M_ATAPI);      free(request, M_ATAPI);
     return error;      return error;
 }  }
Line 606  atapi_finish(struct atapi_request *reque Line 612  atapi_finish(struct atapi_request *reque
     if (request->callback) {      if (request->callback) {
         if (!((request->callback)(request))) {          if (!((request->callback)(request))) {
             if (request->dmatab)              if (request->dmatab)
                free(request->dmatab, M_DEVBUF);                ata_dmafree(request->device->channel, request->dmatab);
             free(request, M_ATAPI);              free(request, M_ATAPI);
         }          }
     }      }

Removed from v.1.4  
changed lines
  Added in v.1.5