On 2/8/20 6:28 AM, Pavel Begunkov wrote: > Hi, > > As you remember, splice(2) needs two fds, and it's a bit of a pain > finding a place for the second REQ_F_FIXED_FILE flag. So, I was > thinking, can we use the last (i.e. sign) bit to mark an fd as fixed? A > lot of userspace programs consider any negative result of open() as an > error, so it's more or less safe to reuse it. > > e.g. > fill_sqe(fd) // is not fixed > fill_sqe(buf_idx | LAST_BIT) // fixed file Right now we only support 1024 fixed buffers anyway, so we do have some space there. If we steal a bit, it'll still allow us to expand to 32K of fixed buffers in the future. It's a bit iffy, but like you, I don't immediately see a better way to do this that doesn't include stealing an IOSQE bit or adding a special splice flag for it. Might still prefer the latter, to be honest... -- Jens Axboe