~jderose/ubuntu/raring/qemu/vde-again

« back to all changes in this revision

Viewing changes to hw/scsi-generic.c

  • Committer: Bazaar Package Importer
  • Author(s): Riku Voipio, Josh Triplett, Riku Voipio
  • Date: 2009-07-29 13:28:05 UTC
  • mfrom: (1.4.1 upstream)
  • mto: (12.1.1 sid) (10.1.13 sid)
  • mto: This revision was merged to the branch mainline in revision 13.
  • Revision ID: james.westby@ubuntu.com-20090729132805-cau7rfexh7dawyb8
Tags: 0.10.50+git20090729-1
[ Josh Triplett ]
* Remove myself from Uploaders.

[ Riku Voipio ]
* new upstream RC version
* nuke all linux-user patches (applied upstream)
  06_exit_segfault
  12_signal_powerpc_support
  21_net_soopts
  30_syscall_ipc
  32_syscall_sysctl
  35_syscall_sockaddr
  48_signal_terminate
  55_unmux_socketcall
* nuke all other applied-upstream patches
  01_nostrip (better version upstream)
  07_i386_exec_name (can be reintroduced in debian/rules)
  50_linuxbios_isa_bios_ram (shouldn't be needed anymore)
  51_linuxbios_piix_ram_size (applied)
  56_dhcp (crap)
  60_ppc_ld (reintroduce if needed)
  64_ppc_asm_constraints (ditto)
  66_tls_ld.patch (ditto)
  81_compile_dtb.patch (applied upstream)
  82_qemu-img_decimal (ditto)
* move to git
* simplify build rules
* Correct my email address

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
//#define DEBUG_SCSI
29
29
 
30
30
#ifdef DEBUG_SCSI
31
 
#define DPRINTF(fmt, args...) \
32
 
do { printf("scsi-generic: " fmt , ##args); } while (0)
 
31
#define DPRINTF(fmt, ...) \
 
32
do { printf("scsi-generic: " fmt , ## __VA_ARGS__); } while (0)
33
33
#else
34
 
#define DPRINTF(fmt, args...) do {} while(0)
 
34
#define DPRINTF(fmt, ...) do {} while(0)
35
35
#endif
36
36
 
37
 
#define BADF(fmt, args...) \
38
 
do { fprintf(stderr, "scsi-generic: " fmt , ##args); } while (0)
 
37
#define BADF(fmt, ...) \
 
38
do { fprintf(stderr, "scsi-generic: " fmt , ## __VA_ARGS__); } while (0)
39
39
 
40
40
#include <stdio.h>
41
41
#include <sys/types.h>
201
201
                           SCSIRequest *r, int direction,
202
202
                           BlockDriverCompletionFunc *complete)
203
203
{
204
 
 
205
204
    r->io_header.interface_id = 'S';
206
205
    r->io_header.dxfer_direction = direction;
207
206
    r->io_header.dxferp = r->buf;
214
213
    r->io_header.usr_ptr = r;
215
214
    r->io_header.flags |= SG_FLAG_DIRECT_IO;
216
215
 
217
 
    if (bdrv_pwrite(bdrv, -1, &r->io_header, sizeof(r->io_header)) == -1) {
218
 
        BADF("execute_command: write failed ! (%d)\n", errno);
219
 
        return -1;
220
 
    }
221
 
    if (complete == NULL) {
222
 
        int ret;
223
 
        r->aiocb = NULL;
224
 
        while ((ret = bdrv_pread(bdrv, -1, &r->io_header,
225
 
                                           sizeof(r->io_header))) == -1 &&
226
 
                      errno == EINTR);
227
 
        if (ret == -1) {
228
 
            BADF("execute_command: read failed !\n");
229
 
            return -1;
230
 
        }
231
 
        return 0;
232
 
    }
233
 
 
234
 
    r->aiocb = bdrv_aio_read(bdrv, 0, (uint8_t*)&r->io_header,
235
 
                          -(int64_t)sizeof(r->io_header), complete, r);
 
216
    r->aiocb = bdrv_aio_ioctl(bdrv, SG_IO, &r->io_header, complete, r);
236
217
    if (r->aiocb == NULL) {
237
218
        BADF("execute_command: read failed !\n");
238
219
        return -1;
634
615
    io_header.sbp = sensebuf;
635
616
    io_header.timeout = 6000; /* XXX */
636
617
 
637
 
    ret = bdrv_pwrite(bdrv, -1, &io_header, sizeof(io_header));
638
 
    if (ret == -1)
639
 
        return -1;
640
 
 
641
 
    while ((ret = bdrv_pread(bdrv, -1, &io_header, sizeof(io_header))) == -1 &&
642
 
           errno == EINTR);
643
 
 
644
 
    if (ret == -1)
 
618
    ret = bdrv_ioctl(bdrv, SG_IO, &io_header);
 
619
    if (ret < 0)
645
620
        return -1;
646
621
 
647
622
    return (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7];
671
646
    io_header.sbp = sensebuf;
672
647
    io_header.timeout = 6000; /* XXX */
673
648
 
674
 
    ret = bdrv_pwrite(bdrv, -1, &io_header, sizeof(io_header));
675
 
    if (ret == -1)
676
 
        return -1;
677
 
 
678
 
    while ((ret = bdrv_pread(bdrv, -1, &io_header, sizeof(io_header))) == -1 &&
679
 
           errno == EINTR);
680
 
 
681
 
    if (ret == -1)
 
649
    ret = bdrv_ioctl(bdrv, SG_IO, &io_header);
 
650
    if (ret < 0)
682
651
        return -1;
683
652
 
684
653
    return (buf[9] << 16) | (buf[10] << 8) | buf[11];