Re: [dm-devel] [PATCH 26/27] scsi: sd: Separate zeroout and discard command choices
Paolo, > Should this be conditional on lbprz, lbpws, lbpws10 and max_ws_blocks? It is intentional that things can be overridden from userland for devices that report the "wrong" thing. We do the same for discard so people can set up udev rules. -- Martin K. Petersen Oracle Linux Engineering -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
Re: [dm-devel] [PATCH 26/27] scsi: sd: Separate zeroout and discard command choices
On 05/04/2017 19:21, Christoph Hellwig wrote: > +static ssize_t > +zeroing_mode_store(struct device *dev, struct device_attribute *attr, > +const char *buf, size_t count) > +{ > + struct scsi_disk *sdkp = to_scsi_disk(dev); > + > + if (!capable(CAP_SYS_ADMIN)) > + return -EACCES; > + > + > + if (!strncmp(buf, zeroing_mode[SD_ZERO_WRITE], 20)) > + sdkp->zeroing_mode = SD_ZERO_WRITE; > + else if (!strncmp(buf, zeroing_mode[SD_ZERO_WS], 20)) > + sdkp->zeroing_mode = SD_ZERO_WS; > + else if (!strncmp(buf, zeroing_mode[SD_ZERO_WS16_UNMAP], 20)) > + sdkp->zeroing_mode = SD_ZERO_WS16_UNMAP; > + else if (!strncmp(buf, zeroing_mode[SD_ZERO_WS10_UNMAP], 20)) > + sdkp->zeroing_mode = SD_ZERO_WS10_UNMAP; Should this be conditional on lbprz, lbpws, lbpws10 and max_ws_blocks? Thanks, Paolo -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
Re: [dm-devel] [PATCH 26/27] scsi: sd: Separate zeroout and discard command choices
On 04/05/2017 07:21 PM, Christoph Hellwig wrote: > From: "Martin K. Petersen"> > Now that zeroout and discards are distinct operations we need to > separate the policy of choosing the appropriate command. Create a > zeroing_mode which can be one of: > > write:Zeroout assist not present, use regular WRITE > writesame:Allow WRITE SAME(10/16) with a zeroed payload > writesame_16_unmap: Allow WRITE SAME(16) with UNMAP > writesame_10_unmap: Allow WRITE SAME(10) with UNMAP > > The last two are conditional on the device being thin provisioned with > LBPRZ=1 and LBPWS=1 or LBPWS10=1 respectively. > > Whether to set the UNMAP bit or not depends on the REQ_NOUNMAP flag. And > if none of the _unmap variants are supported, regular WRITE SAME will be > used if the device supports it. > > The zeroout_mode is exported in sysfs and the detected mode for a given > device can be overridden using the string constants above. > > With this change in place we can now issue WRITE SAME(16) with UNMAP set > for block zeroing applications that require hard guarantees and > logical_block_size granularity. And at the same time use the UNMAP > command with the device's preferred granulary and alignment for discard > operations. > > Signed-off-by: Martin K. Petersen > Signed-off-by: Christoph Hellwig > --- > drivers/scsi/sd.c | 56 > --- > drivers/scsi/sd.h | 8 > 2 files changed, 61 insertions(+), 3 deletions(-) > Reviewed-by: Hannes Reinecke Cheers, Hannes -- Dr. Hannes ReineckeTeamlead Storage & Networking h...@suse.de +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg) -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel