#define MAX_SPEED 0xffff
 
-#define ZONE(sector, pd) (((sector) + (pd)->offset) & \
-                       ~(sector_t)((pd)->settings.size - 1))
-
 static DEFINE_MUTEX(pktcdvd_mutex);
 static struct pktcdvd_device *pkt_devs[MAX_WRITERS];
 static struct proc_dir_entry *pkt_proc;
 static int pkt_remove_dev(dev_t pkt_dev);
 static int pkt_seq_show(struct seq_file *m, void *p);
 
-
+static sector_t get_zone(sector_t sector, struct pktcdvd_device *pd)
+{
+       return (sector + pd->offset) & ~(sector_t)(pd->settings.size - 1);
+}
 
 /*
  * create and register a pktcdvd kernel object.
        node = first_node;
        while (node) {
                bio = node->bio;
-               zone = ZONE(bio->bi_sector, pd);
+               zone = get_zone(bio->bi_sector, pd);
                list_for_each_entry(p, &pd->cdrw.pkt_active_list, list) {
                        if (p->sector == zone) {
                                bio = NULL;
        while ((node = pkt_rbtree_find(pd, zone)) != NULL) {
                bio = node->bio;
                VPRINTK("pkt_handle_queue: found zone=%llx\n",
-                       (unsigned long long)ZONE(bio->bi_sector, pd));
-               if (ZONE(bio->bi_sector, pd) != zone)
+                       (unsigned long long)get_zone(bio->bi_sector, pd));
+               if (get_zone(bio->bi_sector, pd) != zone)
                        break;
                pkt_rbtree_erase(pd, node);
                spin_lock(&pkt->lock);
 
        blk_queue_bounce(q, &bio);
 
-       zone = ZONE(bio->bi_sector, pd);
+       zone = get_zone(bio->bi_sector, pd);
        VPRINTK("pkt_make_request: start = %6llx stop = %6llx\n",
                (unsigned long long)bio->bi_sector,
                (unsigned long long)bio_end_sector(bio));
                sector_t last_zone;
                int first_sectors;
 
-               last_zone = ZONE(bio_end_sector(bio) - 1, pd);
+               last_zone = get_zone(bio_end_sector(bio) - 1, pd);
                if (last_zone != zone) {
                        BUG_ON(last_zone != zone + pd->settings.size);
                        first_sectors = last_zone - bio->bi_sector;
                          struct bio_vec *bvec)
 {
        struct pktcdvd_device *pd = q->queuedata;
-       sector_t zone = ZONE(bmd->bi_sector, pd);
+       sector_t zone = get_zone(bmd->bi_sector, pd);
        int used = ((bmd->bi_sector - zone) << 9) + bmd->bi_size;
        int remaining = (pd->settings.size << 9) - used;
        int remaining2;