I created a simple block device driver with a logical queue block size of 512 
bytes.

$ cat /sys/block/myblock/queue/physical_block_size
512
$ cat /sys/block/myblock/queue/logical_block_size
512

I used rq_for_each_segment() to print bvec.bv_len of the segments and it
appears to be 4096.

Why is it 4096 rather than 512?

Also writing a block of 4096 bytes with dd to /dev/myblock will result in a
single write request, while writing a block of 512 bytes will result in a read
request followed by a write request.

Can someone explain this behavior?

Thanks,
  Michele.

_______________________________________________
Kernelnewbies mailing list
[email protected]
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to