Diff for /src/sys/dev/disk/ata/ata-raid.c between versions 1.8 and 1.9

version 1.8, 2003/08/07 21:16:51 version 1.9, 2003/11/30 20:14:18
Line 116  ata_raiddisk_attach(struct ad_softc *adp Line 116  ata_raiddisk_attach(struct ad_softc *adp
   
     if (!ar_table)      if (!ar_table)
         ar_table = malloc(sizeof(struct ar_soft *) * MAX_ARRAYS,          ar_table = malloc(sizeof(struct ar_soft *) * MAX_ARRAYS,
                          M_AR, M_NOWAIT | M_ZERO);                          M_AR, M_WAITOK | M_ZERO);
     if (!ar_table) {      if (!ar_table) {
         ata_prtdev(adp->device, "no memory for ATA raid array\n");          ata_prtdev(adp->device, "no memory for ATA raid array\n");
         return 0;          return 0;
Line 250  ata_raid_create(struct raid_setup *setup Line 250  ata_raid_create(struct raid_setup *setup
   
     if (!ar_table)      if (!ar_table)
         ar_table = malloc(sizeof(struct ar_soft *) * MAX_ARRAYS,          ar_table = malloc(sizeof(struct ar_soft *) * MAX_ARRAYS,
                          M_AR, M_NOWAIT | M_ZERO);                          M_AR, M_WAITOK | M_ZERO);
     if (!ar_table) {      if (!ar_table) {
         printf("ar: no memory for ATA raid array\n");          printf("ar: no memory for ATA raid array\n");
         return 0;          return 0;
Line 263  ata_raid_create(struct raid_setup *setup Line 263  ata_raid_create(struct raid_setup *setup
         return ENOSPC;          return ENOSPC;
   
     if (!(rdp = (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,      if (!(rdp = (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,
                                         M_NOWAIT | M_ZERO))) {                                         M_WAITOK | M_ZERO))) {
         printf("ar%d: failed to allocate raid config storage\n", array);          printf("ar%d: failed to allocate raid config storage\n", array);
         return ENOMEM;          return ENOMEM;
     }      }
Line 550  arstrategy(struct buf *bp) Line 550  arstrategy(struct buf *bp)
             return;              return;
         }          }
   
        buf1 = malloc(sizeof(struct ar_buf), M_AR, M_NOWAIT | M_ZERO);        buf1 = malloc(sizeof(struct ar_buf), M_AR, M_WAITOK | M_ZERO);
         BUF_LOCKINIT(&buf1->bp);          BUF_LOCKINIT(&buf1->bp);
         BUF_LOCK(&buf1->bp, LK_EXCLUSIVE);          BUF_LOCK(&buf1->bp, LK_EXCLUSIVE);
         buf1->bp.b_pblkno = lba;          buf1->bp.b_pblkno = lba;
Line 631  arstrategy(struct buf *bp) Line 631  arstrategy(struct buf *bp)
                         ((rdp->flags & AR_F_REBUILDING) &&                          ((rdp->flags & AR_F_REBUILDING) &&
                          (rdp->disks[buf1->drive].flags & AR_DF_SPARE) &&                           (rdp->disks[buf1->drive].flags & AR_DF_SPARE) &&
                          buf1->bp.b_pblkno < rdp->lock_start)) {                           buf1->bp.b_pblkno < rdp->lock_start)) {
                        buf2 = malloc(sizeof(struct ar_buf), M_AR, M_NOWAIT);                        buf2 = malloc(sizeof(struct ar_buf), M_AR, M_WAITOK);
                         bcopy(buf1, buf2, sizeof(struct ar_buf));                          bcopy(buf1, buf2, sizeof(struct ar_buf));
                         BUF_LOCKINIT(&buf2->bp);                          BUF_LOCKINIT(&buf2->bp);
                         BUF_LOCK(&buf2->bp, LK_EXCLUSIVE);                          BUF_LOCK(&buf2->bp, LK_EXCLUSIVE);
Line 827  ar_rebuild(struct ar_softc *rdp) Line 827  ar_rebuild(struct ar_softc *rdp)
     rdp->lock_end = rdp->lock_start + 256;      rdp->lock_end = rdp->lock_start + 256;
     rdp->flags |= AR_F_REBUILDING;      rdp->flags |= AR_F_REBUILDING;
     splx(s);      splx(s);
    buffer = malloc(256 * DEV_BSIZE, M_AR, M_NOWAIT | M_ZERO);    buffer = malloc(256 * DEV_BSIZE, M_AR, M_WAITOK | M_ZERO);
   
     /* now go copy entire disk(s) */      /* now go copy entire disk(s) */
     while (rdp->lock_end < (rdp->total_sectors / rdp->width)) {      while (rdp->lock_end < (rdp->total_sectors / rdp->width)) {
Line 896  ar_highpoint_read_conf(struct ad_softc * Line 896  ar_highpoint_read_conf(struct ad_softc *
     int array, disk_number = 0, retval = 0;      int array, disk_number = 0, retval = 0;
   
     if (!(info = (struct highpoint_raid_conf *)      if (!(info = (struct highpoint_raid_conf *)
          malloc(sizeof(struct highpoint_raid_conf), M_AR, M_NOWAIT | M_ZERO)))          malloc(sizeof(struct highpoint_raid_conf), M_AR, M_WAITOK | M_ZERO)))
         return retval;          return retval;
   
     if (ar_rw(adp, HPT_LBA, sizeof(struct highpoint_raid_conf),      if (ar_rw(adp, HPT_LBA, sizeof(struct highpoint_raid_conf),
Line 925  ar_highpoint_read_conf(struct ad_softc * Line 925  ar_highpoint_read_conf(struct ad_softc *
         if (!raidp[array]) {          if (!raidp[array]) {
             raidp[array] =               raidp[array] = 
                 (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,                  (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,
                                         M_NOWAIT | M_ZERO);                                         M_WAITOK | M_ZERO);
             if (!raidp[array]) {              if (!raidp[array]) {
                 printf("ar%d: failed to allocate raid config storage\n", array);                  printf("ar%d: failed to allocate raid config storage\n", array);
                 goto highpoint_out;                  goto highpoint_out;
Line 1045  ar_highpoint_write_conf(struct ar_softc Line 1045  ar_highpoint_write_conf(struct ar_softc
     for (disk = 0; disk < rdp->total_disks; disk++) {      for (disk = 0; disk < rdp->total_disks; disk++) {
         if (!(config = (struct highpoint_raid_conf *)          if (!(config = (struct highpoint_raid_conf *)
               malloc(sizeof(struct highpoint_raid_conf),                malloc(sizeof(struct highpoint_raid_conf),
                     M_AR, M_NOWAIT | M_ZERO))) {                     M_AR, M_WAITOK | M_ZERO))) {
             printf("ar%d: Highpoint write conf failed\n", rdp->lun);              printf("ar%d: Highpoint write conf failed\n", rdp->lun);
             return -1;              return -1;
         }          }
Line 1125  ar_promise_read_conf(struct ad_softc *ad Line 1125  ar_promise_read_conf(struct ad_softc *ad
     int array, count, disk, disksum = 0, retval = 0;       int array, count, disk, disksum = 0, retval = 0; 
   
     if (!(info = (struct promise_raid_conf *)      if (!(info = (struct promise_raid_conf *)
          malloc(sizeof(struct promise_raid_conf), M_AR, M_NOWAIT | M_ZERO)))          malloc(sizeof(struct promise_raid_conf), M_AR, M_WAITOK | M_ZERO)))
         return retval;          return retval;
   
     if (ar_rw(adp, PR_LBA(adp), sizeof(struct promise_raid_conf),      if (ar_rw(adp, PR_LBA(adp), sizeof(struct promise_raid_conf),
Line 1171  ar_promise_read_conf(struct ad_softc *ad Line 1171  ar_promise_read_conf(struct ad_softc *ad
         if (!raidp[array]) {          if (!raidp[array]) {
             raidp[array] =               raidp[array] = 
                 (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,                  (struct ar_softc*)malloc(sizeof(struct ar_softc), M_AR,
                                         M_NOWAIT | M_ZERO);                                         M_WAITOK | M_ZERO);
             if (!raidp[array]) {              if (!raidp[array]) {
                 printf("ar%d: failed to allocate raid config storage\n", array);                  printf("ar%d: failed to allocate raid config storage\n", array);
                 goto promise_out;                  goto promise_out;
Line 1286  ar_promise_write_conf(struct ar_softc *r Line 1286  ar_promise_write_conf(struct ar_softc *r
   
     for (disk = 0; disk < rdp->total_disks; disk++) {      for (disk = 0; disk < rdp->total_disks; disk++) {
         if (!(config = (struct promise_raid_conf *)          if (!(config = (struct promise_raid_conf *)
              malloc(sizeof(struct promise_raid_conf), M_AR, M_NOWAIT))) {              malloc(sizeof(struct promise_raid_conf), M_AR, M_WAITOK))) {
             printf("ar%d: %s write conf failed\n",              printf("ar%d: %s write conf failed\n",
                    rdp->lun, local ? "FreeBSD" : "Promise");                     rdp->lun, local ? "FreeBSD" : "Promise");
             return -1;              return -1;
Line 1411  ar_rw(struct ad_softc *adp, u_int32_t lb Line 1411  ar_rw(struct ad_softc *adp, u_int32_t lb
     struct buf *bp;      struct buf *bp;
     int retry = 0, error = 0;      int retry = 0, error = 0;
   
    if (!(bp = (struct buf *)malloc(sizeof(struct buf), M_AR, M_NOWAIT|M_ZERO)))    if (!(bp = (struct buf *)malloc(sizeof(struct buf), M_AR, M_WAITOK|M_ZERO)))
         return ENOMEM;          return ENOMEM;
     BUF_LOCKINIT(bp);      BUF_LOCKINIT(bp);
     BUF_LOCK(bp, LK_EXCLUSIVE);      BUF_LOCK(bp, LK_EXCLUSIVE);

Removed from v.1.8  
changed lines
  Added in v.1.9