Re: [PATCH] block: respect virtual boundary mask in bvecs

From: Bart Van Assche
Date: Wed Nov 07 2018 - 11:10:25 EST


On Tue, 2018-11-06 at 19:30 -0800, Sagi Grimberg wrote:
+AD4 +AD4 +AD4 How about changing that expression into the following to make it easier
+AD4 +AD4 +AD4 for the compiler to optimize this code?
+AD4 +AD4 +AD4
+AD4 +AD4 +AD4 (offset +AHw (bprv-+AD4-bv+AF8-offset +- bprv-+AD4-bv+AF8-len)) +ACY queue+AF8-virt+AF8-boundary(q)
+AD4 +AD4
+AD4 +AD4 Uhm I have to admit I'm not really able to parse the above expression.
+AD4 +AD4 Sure GCC will do it but I think it's less readable (at least for me).
+AD4 +AD4 Let's see what other's think.
+AD4
+AD4 I personally not a huge fan of decoding complicated expressions. But if
+AD4 others are fine with it then I am too...

What I proposed is not a new pattern. It is a pattern that is already used
elsewhere in the Linux kernel. A few examples:

>From dmabounce.c:

/+ACo Figure out if we need to bounce from the DMA mask. +ACo-/
if ((dma+AF8-addr +AHw (dma+AF8-addr +- size - 1)) +ACY +AH4-mask)
return 1+ADs

>From dma-direct.h:

if ((addr +AHw (addr +- size - 1)) +ACY +AH4-mask)
return 0+ADs

Bart.