diff -urN 2.3.51pre2/drivers/block/cpqarray.c elevator/drivers/block/cpqarray.c --- 2.3.51pre2/drivers/block/cpqarray.c Thu Feb 17 13:57:00 2000 +++ elevator/drivers/block/cpqarray.c Fri Mar 10 04:49:11 2000 @@ -115,7 +115,7 @@ static void getgeometry(int ctlr); static void start_fwbk(int ctlr); -static cmdlist_t * cmd_alloc(ctlr_info_t *h); +static cmdlist_t * cmd_alloc(ctlr_info_t *h, int gfp_mask); static void cmd_free(ctlr_info_t *h, cmdlist_t *c); static int sendcmd( @@ -900,7 +900,7 @@ goto doreq_done; } - if ((c = cmd_alloc(h)) == NULL) + if ((c = cmd_alloc(h, GFP_ATOMIC)) == NULL) goto doreq_done; bh = creq->bh; @@ -1213,7 +1213,7 @@ unsigned long flags; int error; - if ((c = cmd_alloc(NULL)) == NULL) + if ((c = cmd_alloc(NULL, GFP_KERNEL)) == NULL) return -ENOMEM; c->ctlr = ctlr; c->hdr.unit = (io->unit & UNITVALID) ? (io->unit & ~UNITVALID) : dsk; @@ -1298,13 +1298,13 @@ * critical (and can wait for kmalloc and possibly sleep) can pass in NULL * as the first argument to get a new command. */ -static cmdlist_t * cmd_alloc(ctlr_info_t *h) +static cmdlist_t * cmd_alloc(ctlr_info_t *h, int gfp_mask) { cmdlist_t * c; int i; if (h == NULL) { - c = (cmdlist_t*)kmalloc(sizeof(cmdlist_t), GFP_KERNEL); + c = (cmdlist_t*)kmalloc(sizeof(cmdlist_t), gfp_mask); if(c==NULL) return NULL; } else { @@ -1356,7 +1356,7 @@ unsigned long i; ctlr_info_t *info_p = hba[ctlr]; - c = cmd_alloc(info_p); + c = cmd_alloc(info_p, GFP_KERNEL); c->ctlr = ctlr; c->hdr.unit = log_unit; c->hdr.prio = 0;