u64 bytes;
int rc;
- /* this forces the size to be MiB aligned, which takes care of DIO
- * alignment requirements
- */
+ /* forces bytes to be MiB aligned, which handles DIO alignment needs */
rc = sysfs_memparse(buffer, count, &bytes, "MiB");
if (rc)
return rc;
- if (bytes != 0 && (bytes < PCC_DIO_ATTACH_MINIOSIZE ||
- bytes > PCC_DIO_ATTACH_MAXIOSIZE)) {
- CWARN("size (%llu) cannot be less than %d or greater than %d\n",
- bytes / (1024 * 1024),
- PCC_DIO_ATTACH_MINIOSIZE / (1024 * 1024),
- PCC_DIO_ATTACH_MAXIOSIZE / (1024 * 1024));
- if (bytes > PCC_DIO_ATTACH_MAXIOSIZE)
- bytes = PCC_DIO_ATTACH_MAXIOSIZE;
- else if (bytes < PCC_DIO_ATTACH_MINIOSIZE)
- bytes = PCC_DIO_ATTACH_MINIOSIZE;
+ if (bytes != 0 && bytes < PCC_DIO_ATTACH_MINIOSIZE) {
+ CWARN("PCC direct IO size %llu increased to minimum %d MiB\n",
+ bytes / 1048576, PCC_DIO_ATTACH_MINIOSIZE / 1048576);
+ bytes = PCC_DIO_ATTACH_MINIOSIZE;
+ } else if (bytes > PCC_DIO_ATTACH_MAXIOSIZE) {
+ CWARN("PCC direct IO size %llu limited to maximum %d MiB\n",
+ bytes / 1048576, PCC_DIO_ATTACH_MAXIOSIZE / 1048576);
+ bytes = PCC_DIO_ATTACH_MAXIOSIZE;
}
super->pccs_dio_attach_size_bytes = bytes;
do_facet $SINGLEAGT $LCTL set_param llite.*.pcc_dio_attach_size_mb=300 ||
error "setting iosize to > 256 MiB should be clamped"
dio_attach_size=$(do_facet $SINGLEAGT $LCTL get_param -n llite.*.pcc_dio_attach_size_mb | head -n 1)
- [[ $dio_attach_size == 256 ]] ||
- error "set iosize > 256 MiB should be clamped to 256 MiB"
+ # allow future limit increase, but at least check limit was changed
+ (( $dio_attach_size >= 256 )) ||
+ error "set iosize > 256 MiB should not be clamped < 256 MiB"
do_facet $SINGLEAGT $LCTL set_param llite.*.pcc_dio_attach_size_mb=0 ||
error "should be able to set attach size to 0"