[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/2 v2] Add trim operation to xen block devices
Add Trim command interface This patch adds the trim operation to the blkback ring protocol. Trim commands are passed with sector_number as the sector index to begin trim operations at and nr_sectors as the number of sectors to be trimmed. The specified sectors should be trimmed if the underlying block device supports trim operations, or a BLKIF_RSP_EOPNOTSUPP should be returned. More information about trim operations: http://t13.org/Documents/UploadedDocuments/docs2008/ e07154r6-Data_Set_Management_Proposal_for_ATA-ACS2.doc Signed-of-by: Owen Smith <owen.smith@xxxxxxxxxx> # HG changeset patch # User Owen Smith <owen.smith@xxxxxxxxxx> # Date 1292938216 0 # Node ID 6be1a23977b82e44eba80feeca3fb77acf6bb2bb # Parent 7015d7407eae8694ce1cc92e792b2087f109f6cb imported patch add-trim diff -r 7015d7407eae -r 6be1a23977b8 xen/include/public/io/blkif.h --- a/xen/include/public/io/blkif.h Tue Dec 21 13:28:48 2010 +0000 +++ b/xen/include/public/io/blkif.h Tue Dec 21 13:30:16 2010 +0000 @@ -76,6 +76,17 @@ * "feature-flush-cache" node! */ #define BLKIF_OP_FLUSH_DISKCACHE 3 +/* + * Recognised only if "feature-trim" is present in backend xenbus info. + * The "feature-trim" node contains a boolean indicating whether trim + * requests are likely to succeed or fail. Either way, a trim request + * may fail at any time with BLKIF_RSP_EOPNOTSUPP if it is unsupported by + * the underlying block-device hardware. The boolean simply indicates whether + * or not it is worthwhile for the frontend to attempt trim requests. + * If a backend does not recognise BLKIF_OP_TRIM, it should *not* + * create the "feature-trim" node! + */ +#define BLKIF_OP_TRIM 5 /* * Maximum scatter/gather segments per request. @@ -103,6 +114,11 @@ struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST]; }; +struct blkif_request_trim { + blkif_sector_t sector_number;/* start sector idx on disk */ + uint64_t nr_sectors; +}; + struct blkif_request { uint8_t operation; /* BLKIF_OP_??? */ uint8_t nr_segments; /* number of segments */ @@ -110,6 +126,7 @@ uint64_t id; /* private guest value, echoed in resp */ union { struct blkif_request_rw rw; + struct blkif_request_trim trim; } u; }; typedef struct blkif_request blkif_request_t; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |