+ if (!test_bit(QUEUE_FLAG_POLL, &q->queue_flags)) + bio->bi_opf &= ~REQ_HIPRI; +Maybe we can simply check (q->queue_flags & (1 << QUEUE_FLAG_POLL)) and avoid the extra atomic operation in the host path? Would it make sense?test_bit is not usually implemented as an atomic operation. Take a look at e.g. arch/x86/include/asm/bitops.h:constant_test_bit()
Ah.. But its still read from volatile argument so still more expensive?