On 04/04/2016 03:00 AM, Hannes Reinecke wrote:
The queue limits already have a 'chunk_sectors' setting, so
we should be presenting it via sysfs.

This patch does more than exporting chunk_sectors via sysfs. It also makes that parameter configurable. Please mention this in the patch description.

My understanding of the block drivers that call blk_queue_chunk_sectors() is that increasing the chunk_sectors parameter will break these drivers. I think the single queue_limits.chunk_sectors parameter needs to be converted into two parameters:
- The value set by the block driver by calling
  blk_queue_chunk_sectors().
- The value configured from user space through sysfs.

This will allow to ensure that the chunk_sectors parameter can be increased from user space and also that it cannot be decreased.

+static ssize_t
+queue_chunk_sectors_store(struct request_queue *q, const char *page, size_t 
count)
+{
+       unsigned long chunk_sectors;
+
+       ssize_t ret = queue_var_store(&chunk_sectors, page, count);
+       if (ret < 0)
+               return ret;
+       spin_lock_irq(q->queue_lock);
+       blk_queue_chunk_sectors(q, chunk_sectors);
+       spin_unlock_irq(q->queue_lock);
+
+       return ret;
+}

In blk_queue_chunk_sectors() I found the following:

        BUG_ON(!is_power_of_2(chunk_sectors));

Please make sure that this BUG_ON() cannot be triggered from user space.

Additionally, an update for Documentation/block/queue-sysfs.txt is missing from this patch.

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to