On 2/7/20 3:56 PM, Stefan Metzmacher wrote: > Hi Jens, > >>> Am 07.02.20 um 16:50 schrieb Jens Axboe: >>>> Due to an oversight on my part, AT_FDCWD lookups only work when the >>>> lookup can be done inline, not async. This patchset rectifies that, >>>> aiming for 5.6 for this one as it would be a shame to have openat etc >>>> without that. >>>> >>>> Just 3 small simple patches - grab the task ->fs, add io-wq suppor for >>>> passing it in and setting it, and finally add a ->needs_fs to the opcode >>>> table list of requirements for openat/openat2/statx. >>>> >>>> Last patch just ensures we allow AT_FDCWD. >>> >>> Thanks! But IOSQE_FIXED_FILE is still not supported and not rejected at >>> the same time, correct? >> >> That's in a separate patch: >> >> https://git.kernel.dk/cgit/linux-block/commit/?h=io_uring-5.6&id=5e159663813f0b7837342426cfb68185b6609359 > > Do we handle the error path correct? > As far as I can see io_req_set_file() is called before > io_{statx,openat,openat2}_prep() and req->file is already filled. > Maybe a generic way would be better using io_op_defs[op].allow_fixed_file. Worst case, as far as I can tell, is that we'll think it's a valid descriptor (because the both the fixed index and fd are valid) and we'll still error in the prep. Only concern would be that maybe we should make this an -EBADF return, which would be 100% consistent between them (and with other cases). I'll make that change. > In the long run we may want to add support for openat2 with > IOSQE_FIXED_FILE, then Samba could register the share root directory as > fixed file and it could be used for all openat2 calls. > But for now it's fine to just reject it... It's not impossible to support, it's just that it requires changes outside of io_uring to do so. So for now it'll just not be possible, I'm afraid. -- Jens Axboe