Query about dm device max_discard_sectors
Hi all,
I am building an experimental device mapper target which is supposed to receive all TRIM requests (REQ_DISCARD).* Irrespective of whether underlying actual physical block device supports discards or not, my device mapper target should receive REQ_DISCARD bios. In my target, I set: ti->num_discard_requests = 1; ti->discards_supported = 1; It looks like setting above 2 parameters did not get me any REQ_DISCARD requests when "fstrim" utility is used.* The operations fails with "Operation not supported" from kernel funcion: blkdev_issue_discard because max_discard_sectors for device queue is set to 0. max_discard_sectors = min(q->limits.max_discard_sectors, UINT_MAX >> 9); if (unlikely(!max_discard_sectors)) ****** return -EOPNOTSUPP; When I further digged into the device mapper code, I found that dm_calculate_queue_limits function sets the queue limits to default values of 0 for both limits as well as ti_limits and thus blk_stack_limits eventually sets max_discard_sectors to 0 for the device mapper target. So, if my device mapper target does not implement iterate_devices function (used to set max_discard_sectors based on underlying physical device's discard support) or underlying physical device does not support discards, then there is no way for device mapper target to set max_discard_sectors more than 0 to receive REQ_DISCARD commands. Is this analysis correct? Or I am missing something? Appreciate the help / advice. Thanks and Regards, Amar -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel |
| All times are GMT. The time now is 09:12 AM. |
VBulletin, Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.