diff options
author | kaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk> | 2003-02-20 20:17:41 +0000 |
---|---|---|
committer | kaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk> | 2003-02-20 20:17:41 +0000 |
commit | 694a17be507d7e8baaa847ece3ef1851d6b0a0a9 (patch) | |
tree | 3fbaabde5e9f93ba983ef57d2b9c9b68e807ebd9 /xen-2.4.16/drivers | |
parent | bfaa373f8a8ebed0b0d6e1079dfdccec388b9199 (diff) | |
download | xen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.tar.gz xen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.tar.bz2 xen-694a17be507d7e8baaa847ece3ef1851d6b0a0a9.zip |
bitkeeper revision 1.79 (3e5537e5Vnw-9Lpy24SyRJVm4xxZ3w)
xl_block.c, xen_block.c, process.c:
Fixes to Xenolinux blkdev handling. Still rather broken though :-(
newdom:
Change mode to -rwxrwxr-x
Diffstat (limited to 'xen-2.4.16/drivers')
-rw-r--r-- | xen-2.4.16/drivers/block/xen_block.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/xen-2.4.16/drivers/block/xen_block.c b/xen-2.4.16/drivers/block/xen_block.c index 84870b0884..b77b933e45 100644 --- a/xen-2.4.16/drivers/block/xen_block.c +++ b/xen-2.4.16/drivers/block/xen_block.c @@ -251,14 +251,20 @@ static void dispatch_probe_block_io(struct task_struct *p, int index) extern void ide_probe_devices(xen_disk_info_t *xdi); blk_ring_t *blk_ring = p->blk_ring_base; xen_disk_info_t *xdi; + unsigned long flags, cpu_mask; xdi = phys_to_virt((unsigned long)blk_ring->req_ring[index].buffer); ide_probe_devices(xdi); + spin_lock_irqsave(&p->blk_ring_lock, flags); blk_ring->resp_ring[blk_ring->resp_prod].id = blk_ring->req_ring[index].id; blk_ring->resp_ring[blk_ring->resp_prod].status = 0; blk_ring->resp_prod = BLK_RESP_RING_INC(blk_ring->resp_prod); + spin_unlock_irqrestore(&p->blk_ring_lock, flags); + + cpu_mask = mark_guest_event(p, _EVENT_BLK_RESP); + guest_event_notify(cpu_mask); } static void dispatch_rw_block_io(struct task_struct *p, int index) |