On Wed, 2017-04-05 at 07:41 -0400, Martin K. Petersen 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; > + else > + return -EINVAL; > + > + return count; > +} An additional question about this function: if the shell command "echo" is used without command-line option -n to modify the "zeroing_mode" sysfs attribute then a newline character will be present in buf. Does the above code handle newline characters correctly? Bart.