CVSROOT: /cvs/cluster Module name: cluster Changes by: [EMAIL PROTECTED] 2008-01-28 06:13:15
Modified files: gnbd-kernel/src: gnbd.c Log message: Update gnbd kernel modules to build with 2.6.24 Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gnbd-kernel/src/gnbd.c.diff?cvsroot=cluster&r1=1.20&r2=1.21 --- cluster/gnbd-kernel/src/gnbd.c 2007/06/19 22:31:56 1.20 +++ cluster/gnbd-kernel/src/gnbd.c 2008/01/28 06:13:15 1.21 @@ -168,7 +168,7 @@ if (down_trylock(&dev->do_it_lock)) return -EBUSY; - res = sscanf(buf, "%Lu\n", &size); + res = sscanf(buf, "%Lu\n", (unsigned long long int *)&size); if (res != 1){ up(&dev->do_it_lock); return -EINVAL; @@ -267,7 +267,7 @@ static void gnbd_end_request(struct request *req) { int uptodate = (req->errors == 0) ? 1 : 0; - request_queue_t *q = req->q; + struct request_queue *q = req->q; unsigned long flags; dprintk(DBG_BLKDEV, "%s: request %p: %s\n", req->rq_disk->disk_name, @@ -369,7 +369,7 @@ int __gnbd_send_req(struct gnbd_device *dev, struct socket *sock, struct request *req, int can_signal) { - int result, i, flags; + int result, flags; struct gnbd_request request; unsigned long size = req->nr_sectors << 9; @@ -403,28 +403,26 @@ } if (gnbd_cmd(req) == GNBD_CMD_WRITE) { - struct bio *bio; + struct req_iterator iter; + struct bio_vec *bvec; /* * we are really probing at internals to determine * whether to set MSG_MORE or not... */ - rq_for_each_bio(bio, req) { - struct bio_vec *bvec; - bio_for_each_segment(bvec, bio, i) { - flags = 0; - if ((i < (bio->bi_vcnt - 1)) || bio->bi_next) - flags = MSG_MORE; - dprintk(DBG_TX, "%s: request %p: sending %d bytes data\n", - dev->disk->disk_name, req, - bvec->bv_len); - result = sock_send_bvec(sock, bvec, flags, - can_signal); - if (result < 0) { - printk(KERN_ERR "%s: Send data failed (result %d)\n", - dev->disk->disk_name, - result); - goto error_out; - } + rq_for_each_segment(bvec, req, iter) { + flags = 0; + if (!rq_iter_last(req, iter)) + flags = MSG_MORE; + dprintk(DBG_TX, "%s: request %p: sending %d bytes data\n", + dev->disk->disk_name, req, + bvec->bv_len); + result = sock_send_bvec(sock, bvec, flags, + can_signal); + if (result < 0) { + printk(KERN_ERR "%s: Send data failed (result %d)\n", + dev->disk->disk_name, + result); + goto error_out; } } } @@ -464,21 +462,19 @@ int gnbd_recv_req(struct gnbd_device *dev, struct request *req) { int result; - int i; - struct bio *bio; - rq_for_each_bio(bio, req) { - struct bio_vec *bvec; - bio_for_each_segment(bvec, bio, i) { - result = sock_recv_bvec(dev->sock, bvec); - if (result < 0) { - printk(KERN_ERR "%s: Receive data failed (result %d)\n", - dev->disk->disk_name, - result); - return result; - } - dprintk(DBG_RX, "%s: request %p: got %d bytes data\n", - dev->disk->disk_name, req, bvec->bv_len); + struct bio_vec *bvec; + struct req_iterator iter; + + rq_for_each_segment(bvec, req, iter) { + result = sock_recv_bvec(dev->sock, bvec); + if (result < 0) { + printk(KERN_ERR "%s: Receive data failed (result %d)\n", + dev->disk->disk_name, + result); + return result; } + dprintk(DBG_RX, "%s: request %p: got %d bytes data\n", + dev->disk->disk_name, req, bvec->bv_len); } return 0; } @@ -565,7 +561,7 @@ * { printk( "Warning: Ignoring result!\n"); gnbd_end_request( req ); } */ -static void do_gnbd_request(request_queue_t * q) +static void do_gnbd_request(struct request_queue *q) { int err; struct request *req;