Print this page
document DKIOCFREE

*** 15,27 **** .\" information: Portions Copyright [yyyy] [name of copyright owner] .\" .\" .\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. .\" Copyright 2016 Nexenta Systems, Inc. ! .\" Copyright (c) 2017, Joyent, Inc. .\" ! .Dd October 23, 2017 .Dt DKIO 7I .Os .Sh NAME .Nm dkio .Nd disk control operations --- 15,27 ---- .\" information: Portions Copyright [yyyy] [name of copyright owner] .\" .\" .\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. .\" Copyright 2016 Nexenta Systems, Inc. ! .\" Copyright 2020 Joyent, Inc. .\" ! .Dd February 14, 2020 .Dt DKIO 7I .Os .Sh NAME .Nm dkio .Nd disk control operations
*** 691,701 **** --- 691,789 ---- } while (rval != EINVAL || dr->vdr_flags & (DKV_DMR_DONE | DKV_DMR_ERROR | DKV_DMR_SHORT) } } .Ed + .It Dv DKIOCFREE + .Pp + The argument is a pointer to a + .Vt dkioc_free_list_t + structure (described below). + The structure consists of a header followed by one or more + .Vt dkioc_free_list_ext_t + strctures (described below) that list the extents that the device should free. + .Bd -literal -offset 2n + typedef struct dkioc_free_list_ext_s { + uint64_t dfle_start; + uint64_t dfle_length; + } dkioc_free_list_ext_t; + + typedef struct dkioc_free_list_s { + uint64_t dfl_flags; + uint64_t dfl_num_exts; + uint64_t dfl_offset; + dkioc_free_list_ext_t dfl_exts[1]; + } dkioc_free_list_t; + .Ed + .Pp + The + .Fa dfle_start , + .Fa dfle_length , + and + .Fa dfl_offset + fields are in units of bytes (not blocks). + .Pp + The values for + .Fa dfl_flags + are: + .Bl -tag -width Dv + .It Dv DF_WAIT_SYNC + Wait for the device to complete freeing the space before returning. .El + .Pp + The + .Fa dfl_num_exts + field indicates the number of + .Vt dkioc_free_list_ext_t + structures follow the + .Vt dkioc_free_list_t + structure (including the first entry in + .Fa dfl_exts ) . + There must be at least one + .Vt dkioc_free_list_ext_t + in the + .Xr ioctl 2 + request (i.e\&. + .Fa dfl_num_exts + must be \(>= 1). + .Pp + The + .Fa dfl_offset + field is added to all of the values of + .Fa dfle_start + when processed by the device. + .Pp + The + .Fa dfl_exts + field contains the first extent to free, immediately followed by any + additional + .Vt dkioc_free_list_ext_t + structures if there are more than one extent to free. + .Pp + The + .Dv DFL_SZ(num_exts) + macro can be used to calculate the amount of memory required to hold + .Fa num_exts + extents. + .It Dv DKIOC_CANFREE + The argument is a pointer to an + .Vt int + that is populated by the + .Xr ioctl 2 + request. + Upon a successful return, if a non-zero value has been set in the + .Vt int + parameter, it indicates that the device supports the + .Dv DKIOCFREE + .Xr ioctl 2 . + If the + .Vt int + parameter has been set to zero, the + .Dv DKIOCFREE + .Xr ioctl 2 + is not supported by the device. + .El .Ss "RETURN VALUES" Upon successful completion, the value returned is .Sy 0 . Otherwise, .Sy -1