diff options
Diffstat (limited to 'include/uapi/linux/virtio_blk.h')
| -rw-r--r-- | include/uapi/linux/virtio_blk.h | 54 | 
1 files changed, 54 insertions, 0 deletions
diff --git a/include/uapi/linux/virtio_blk.h b/include/uapi/linux/virtio_blk.h index 9ebe4d968dd5..0f99d7b49ede 100644 --- a/include/uapi/linux/virtio_blk.h +++ b/include/uapi/linux/virtio_blk.h @@ -38,6 +38,8 @@  #define VIRTIO_BLK_F_BLK_SIZE	6	/* Block size of disk is available*/  #define VIRTIO_BLK_F_TOPOLOGY	10	/* Topology information is available */  #define VIRTIO_BLK_F_MQ		12	/* support more than one vq */ +#define VIRTIO_BLK_F_DISCARD	13	/* DISCARD is supported */ +#define VIRTIO_BLK_F_WRITE_ZEROES	14	/* WRITE ZEROES is supported */  /* Legacy feature bits */  #ifndef VIRTIO_BLK_NO_LEGACY @@ -86,6 +88,39 @@ struct virtio_blk_config {  	/* number of vqs, only available when VIRTIO_BLK_F_MQ is set */  	__u16 num_queues; + +	/* the next 3 entries are guarded by VIRTIO_BLK_F_DISCARD */ +	/* +	 * The maximum discard sectors (in 512-byte sectors) for +	 * one segment. +	 */ +	__u32 max_discard_sectors; +	/* +	 * The maximum number of discard segments in a +	 * discard command. +	 */ +	__u32 max_discard_seg; +	/* Discard commands must be aligned to this number of sectors. */ +	__u32 discard_sector_alignment; + +	/* the next 3 entries are guarded by VIRTIO_BLK_F_WRITE_ZEROES */ +	/* +	 * The maximum number of write zeroes sectors (in 512-byte sectors) in +	 * one segment. +	 */ +	__u32 max_write_zeroes_sectors; +	/* +	 * The maximum number of segments in a write zeroes +	 * command. +	 */ +	__u32 max_write_zeroes_seg; +	/* +	 * Set if a VIRTIO_BLK_T_WRITE_ZEROES request may result in the +	 * deallocation of one or more of the sectors. +	 */ +	__u8 write_zeroes_may_unmap; + +	__u8 unused1[3];  } __attribute__((packed));  /* @@ -114,6 +149,12 @@ struct virtio_blk_config {  /* Get device ID command */  #define VIRTIO_BLK_T_GET_ID    8 +/* Discard command */ +#define VIRTIO_BLK_T_DISCARD	11 + +/* Write zeroes command */ +#define VIRTIO_BLK_T_WRITE_ZEROES	13 +  #ifndef VIRTIO_BLK_NO_LEGACY  /* Barrier before this op. */  #define VIRTIO_BLK_T_BARRIER	0x80000000 @@ -133,6 +174,19 @@ struct virtio_blk_outhdr {  	__virtio64 sector;  }; +/* Unmap this range (only valid for write zeroes command) */ +#define VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP	0x00000001 + +/* Discard/write zeroes range for each request. */ +struct virtio_blk_discard_write_zeroes { +	/* discard/write zeroes start sector */ +	__le64 sector; +	/* number of discard/write zeroes sectors */ +	__le32 num_sectors; +	/* flags for this range */ +	__le32 flags; +}; +  #ifndef VIRTIO_BLK_NO_LEGACY  struct virtio_scsi_inhdr {  	__virtio32 errors;  | 
