Using I2C_M_RD in your code in msgs[0].flags will obviously give garbage values since you need to write slave position first.
and i think, since you have set I2C_M_REV_DIR_ADDR in msgs[0].flags and I2C_M_RD in msgs[1].flags, it has revered direction from read to write and that’s why you may not be able to read it. But not very sure if it is happening because of this reason. You can try 2 things: first the flow I gave above. else in your existing code, replace I2C_M_REV_DIR_ADDR with 0x0 and let us know the results in both ways.
Thanks,
Shubhi