> What about max_secure_erase_seg and secure_erase_sector_alignment?
Hi Stefan,
If I understand correctly, the Linux kernel uses the same "max
segments" value for a discard and a secure erase command.
> unsigned int blk_recalc_rq_segments(struct request *rq)
> {
> unsigned int nr_phys_segs = 0;
> unsigned int bytes = 0;
> struct req_iterator iter;
> struct bio_vec bv;
>
>
> if (!rq->bio)
> return 0;
>
>
> switch (bio_op(rq->bio)) {
> case REQ_OP_DISCARD:
> case REQ_OP_SECURE_ERASE:
> if (queue_max_discard_segments(rq->q) > 1) {
> struct bio *bio = rq->bio;
>
>
> for_each_bio(bio)
> nr_phys_segs++;
> return nr_phys_segs;
> }
>
> ....
> struct bio *__bio_split_to_limits(struct bio *bio, struct queue_limits *lim,
> unsigned int *nr_segs)
> {
> struct bio_set *bs = &bio->bi_bdev->bd_disk->bio_split;
> struct bio *split;
>
>
> switch (bio_op(bio)) {
> case REQ_OP_DISCARD:
> case REQ_OP_SECURE_ERASE:
> split = bio_split_discard(bio, lim, nr_segs, bs);
>
> break;
>
> ...
What do you suggest?
BTW, the same happens for the write zeros command implementation.
max_write_zeroes_seg and write_zeroes_may_unmap are ignored in the Linux kernel.
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization