VirtualBox

Changeset 38680 in vbox for trunk/include


Ignore:
Timestamp:
Sep 8, 2011 7:52:08 AM (13 years ago)
Author:
vboxsync
Message:

VSCSI+DrvSCSI: Add support for the UNMAP command if discarding is enabled

Location:
trunk/include/VBox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/scsi.h

    r32983 r38680  
    116116    SCSI_READ_6                         = 0x08,
    117117    SCSI_WRITE_6                        = 0x0a,
    118     SCSI_LOG_SENSE                      = 0x4d
     118    SCSI_LOG_SENSE                      = 0x4d,
     119    SCSI_UNMAP                          = 0x42
    119120} SCSICMD;
    120121
    121122/**
    122  * Service action in opcoe identifiers
     123 * Service action in opcode identifiers
    123124 */
    124125typedef enum SCSISVCACTIONIN
     
    178179
    179180/* additional sense keys */
    180 #define SCSI_ASC_NONE                               0x00
    181 #define SCSI_ASC_WRITE_ERROR                        0x0c
    182 #define SCSI_ASC_READ_ERROR                         0x11
    183 #define SCSI_ASC_ILLEGAL_OPCODE                     0x20
    184 #define SCSI_ASC_LOGICAL_BLOCK_OOR                  0x21
    185 #define SCSI_ASC_INV_FIELD_IN_CMD_PACKET            0x24
    186 #define SCSI_ASC_MEDIUM_MAY_HAVE_CHANGED            0x28
    187 #define SCSI_ASC_MEDIUM_NOT_PRESENT                 0x3a
    188 #define SCSI_ASC_SAVING_PARAMETERS_NOT_SUPPORTED    0x39
    189 #define SCSI_ASC_INVALID_MESSAGE                    0x49
    190 #define SCSI_ASC_MEDIA_LOAD_OR_EJECT_FAILED         0x53
     181#define SCSI_ASC_NONE                                       0x00
     182#define SCSI_ASC_WRITE_ERROR                                0x0c
     183#define SCSI_ASC_READ_ERROR                                 0x11
     184#define SCSI_ASC_ILLEGAL_OPCODE                             0x20
     185#define SCSI_ASC_LOGICAL_BLOCK_OOR                          0x21
     186#define SCSI_ASC_INV_FIELD_IN_CMD_PACKET                    0x24
     187#define SCSI_ASC_MEDIUM_MAY_HAVE_CHANGED                    0x28
     188#define SCSI_ASC_MEDIUM_NOT_PRESENT                         0x3a
     189#define SCSI_ASC_SAVING_PARAMETERS_NOT_SUPPORTED            0x39
     190#define SCSI_ASC_INVALID_MESSAGE                            0x49
     191#define SCSI_ASC_MEDIA_LOAD_OR_EJECT_FAILED                 0x53
    191192#define SCSI_ASC_LOGICAL_UNIT_DOES_NOT_RESPOND_TO_SELECTION 0x00
     193#define SCSI_ASC_SYSTEM_RESOURCE_FAILURE                    0x55
     194
     195/** Additional sense code qualifiers (ASCQ). */
     196#define SCSI_ASCQ_SYSTEM_BUFFER_FULL                        0x01
    192197
    193198/** @name SCSI_INQUIRY
  • trunk/include/VBox/vscsi.h

    r33540 r38680  
    55
    66/*
    7  * Copyright (C) 2006-2010 Oracle Corporation
     7 * Copyright (C) 2006-2011 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    6868    /** Flush */
    6969    VSCSIIOREQTXDIR_FLUSH,
     70    /** Unmap */
     71    VSCSIIOREQTXDIR_UNMAP,
    7072    /** 32bit hack */
    7173    VSCSIIOREQTXDIR_32BIT_HACK = 0x7fffffff
     
    9496
    9597/**
     98 * Range descriptor.
     99 */
     100typedef struct VSCSIRANGE
     101{
     102    /** Start offset. */
     103    uint64_t offStart;
     104    /** Size of the range. */
     105    size_t   cbRange;
     106} VSCSIRANGE;
     107/** Pointer to a range descriptor. */
     108typedef VSCSIRANGE *PVSCSIRANGE;
     109
     110/** The LUN can handle the UNMAP command. */
     111#define VSCSI_LUN_FEATURE_UNMAP          RT_BIT(0)
     112/** The LUN has a non rotational medium. */
     113#define VSCSI_LUN_FEATURE_NON_ROTATIONAL RT_BIT(1)
     114
     115/**
    96116 * Virtual SCSI LUN I/O Callback table.
    97117 */
     
    125145                                                              VSCSIIOREQ hVScsiIoReq));
    126146
     147    /**
     148     * Returns flags of supported features.
     149     *
     150     * @returns VBox status status code.
     151     * @param   hVScsiLun             Virtual SCSI LUN handle.
     152     * @param   pvScsiLunUser         Opaque user data which may
     153     *                                be used to identify the medium.
     154     * @param   hVScsiIoReq           Virtual SCSI I/O request handle.
     155     */
     156    DECLR3CALLBACKMEMBER(int, pfnVScsiLunGetFeatureFlags, (VSCSILUN hVScsiLun,
     157                                                           void *pvScsiLunUser,
     158                                                           uint64_t *pfFeatures));
     159
     160
    127161} VSCSILUNIOCALLBACKS;
    128162/** Pointer to a virtual SCSI LUN I/O callback table. */
     
    284318                                      size_t *pcbSeg, PCRTSGSEG *ppaSeg);
    285319
     320/**
     321 * Query unmap parameters.
     322 *
     323 * @returns VBox status code.
     324 * @param   hVScsiIoReq    The SCSI I/O request handle.
     325 * @param   ppaRanges      Where to store the pointer to the range array on success.
     326 * @param   pcRanges       Where to store the number of ranges on success.
     327 */
     328VBOXDDU_DECL(int) VSCSIIoReqUnmapParamsGet(VSCSIIOREQ hVScsiIoReq, PVSCSIRANGE *ppaRanges,
     329                                           unsigned *pcRanges);
     330
    286331RT_C_DECLS_END
    287332
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette