All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH liburing v3 0/2] add support for new timeout feature
@ 2020-08-05  3:28 Carter Li 李通洲
  2020-08-05  5:17 ` Jiufei Xue
  0 siblings, 1 reply; 4+ messages in thread
From: Carter Li 李通洲 @ 2020-08-05  3:28 UTC (permalink / raw)
  To: Jiufei Xue; +Cc: io-uring

> diff --git a/src/include/liburing.h b/src/include/liburing.h
> index 0505a4f..82c2980 100644
> --- a/src/include/liburing.h
> +++ b/src/include/liburing.h
> @@ -56,6 +56,9 @@ struct io_uring {
>  	struct io_uring_sq sq;
>  	struct io_uring_cq cq;
>  	unsigned flags;
> +	unsigned flags_internal;
> +	unsigned features;
> +	unsigned pad[4];
>  	int ring_fd;
>  };

Won't it break existing code runs on newer kernel?
Won't it break code compiled with new liburing but runs on older kernel?

IMO In this case, a new syscall `io_uring_setup2` is required at least.

Regards,
Carter


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH liburing v3 0/2] add support for new timeout feature
  2020-08-05  3:28 [PATCH liburing v3 0/2] add support for new timeout feature Carter Li 李通洲
@ 2020-08-05  5:17 ` Jiufei Xue
  2020-08-05  6:18   ` Carter Li 李通洲
  0 siblings, 1 reply; 4+ messages in thread
From: Jiufei Xue @ 2020-08-05  5:17 UTC (permalink / raw)
  To: Carter Li 李通洲; +Cc: io-uring



On 2020/8/5 上午11:28, Carter Li 李通洲 wrote:
>> diff --git a/src/include/liburing.h b/src/include/liburing.h
>> index 0505a4f..82c2980 100644
>> --- a/src/include/liburing.h
>> +++ b/src/include/liburing.h
>> @@ -56,6 +56,9 @@ struct io_uring {
>>  	struct io_uring_sq sq;
>>  	struct io_uring_cq cq;
>>  	unsigned flags;
>> +	unsigned flags_internal;
>> +	unsigned features;
>> +	unsigned pad[4];
>>  	int ring_fd;
>>  };
> 
> Won't it break existing code runs on newer kernel?

io_uring is a structure that used in userspace. It breaks the API
with existing compiled application. So I have changed the soname
to 2.0.7.

And for syscall io_uring_enter(), I have added a new feature bit
IORING_FEAT_GETEVENTS_TIMEOUT and io_uring_enter() flag
IORING_ENTER_GETEVENTS_TIMEOUT. Here are 3 cases below:

1) old liburing <-> new kernel: old liburing can not pass the flag
   IORING_ENTER_GETEVENTS_TIMEOUT, so new kernel will parse the arguments
   the original way.

2) new liburing <-> old kernel: feature IORING_FEAT_GETEVENTS_TIMEOUT
   not supported, liburing will do things like before.

3) new liburing <-> new kernel: feature IORING_FEAT_GETEVENTS_TIMEOUT
   supported, liburing pass the new arguments with the flag
   IORING_ENTER_GETEVENTS_TIMEOUT which helps kernel parse the arguments
   correctly.

Thanks,
Jiufei.

> Won't it break code compiled with new liburing but runs on older kernel?
> 

> IMO In this case, a new syscall `io_uring_setup2` is required at least.
> 
> Regards,
> Carter
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH liburing v3 0/2] add support for new timeout feature
  2020-08-05  5:17 ` Jiufei Xue
@ 2020-08-05  6:18   ` Carter Li 李通洲
  0 siblings, 0 replies; 4+ messages in thread
From: Carter Li 李通洲 @ 2020-08-05  6:18 UTC (permalink / raw)
  To: Jiufei Xue; +Cc: io-uring

Sorry. I was thinking the pointer of io_uring will be passed with
io_uring_setup. My fault.

> 2020年8月5日 下午1:17,Jiufei Xue <jiufei.xue@linux.alibaba.com> 写道:
> 
> 
> 
> On 2020/8/5 上午11:28, Carter Li 李通洲 wrote:
>>> diff --git a/src/include/liburing.h b/src/include/liburing.h
>>> index 0505a4f..82c2980 100644
>>> --- a/src/include/liburing.h
>>> +++ b/src/include/liburing.h
>>> @@ -56,6 +56,9 @@ struct io_uring {
>>> 	struct io_uring_sq sq;
>>> 	struct io_uring_cq cq;
>>> 	unsigned flags;
>>> +	unsigned flags_internal;
>>> +	unsigned features;
>>> +	unsigned pad[4];
>>> 	int ring_fd;
>>> };
>> 
>> Won't it break existing code runs on newer kernel?
> 
> io_uring is a structure that used in userspace. It breaks the API
> with existing compiled application. So I have changed the soname
> to 2.0.7.
> 
> And for syscall io_uring_enter(), I have added a new feature bit
> IORING_FEAT_GETEVENTS_TIMEOUT and io_uring_enter() flag
> IORING_ENTER_GETEVENTS_TIMEOUT. Here are 3 cases below:
> 
> 1) old liburing <-> new kernel: old liburing can not pass the flag
>   IORING_ENTER_GETEVENTS_TIMEOUT, so new kernel will parse the arguments
>   the original way.
> 
> 2) new liburing <-> old kernel: feature IORING_FEAT_GETEVENTS_TIMEOUT
>   not supported, liburing will do things like before.
> 
> 3) new liburing <-> new kernel: feature IORING_FEAT_GETEVENTS_TIMEOUT
>   supported, liburing pass the new arguments with the flag
>   IORING_ENTER_GETEVENTS_TIMEOUT which helps kernel parse the arguments
>   correctly.
> 
> Thanks,
> Jiufei.
> 
>> Won't it break code compiled with new liburing but runs on older kernel?
>> 
> 
>> IMO In this case, a new syscall `io_uring_setup2` is required at least.
>> 
>> Regards,
>> Carter


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH liburing v3 0/2] add support for new timeout feature
@ 2020-08-05  3:04 Jiufei Xue
  0 siblings, 0 replies; 4+ messages in thread
From: Jiufei Xue @ 2020-08-05  3:04 UTC (permalink / raw)
  To: axboe; +Cc: io-uring, metze

Kernel can handle timeout when feature IORING_FEAT_GETEVENTS_TIMEOUT
supported. Applications should use io_uring_set_cqwait_timeout()
explicitly to asked for the new feature.

Changes since v2:
- bump the version to 2.0.7 since we have changed the size of io_uring
- add more pad to structure io_uring for future flexibility

Jiufei Xue (2):
io_uring_enter: add timeout support
test/timeout: add testcase for new timeout feature

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-08-05  6:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-05  3:28 [PATCH liburing v3 0/2] add support for new timeout feature Carter Li 李通洲
2020-08-05  5:17 ` Jiufei Xue
2020-08-05  6:18   ` Carter Li 李通洲
  -- strict thread matches above, loose matches on Subject: below --
2020-08-05  3:04 Jiufei Xue

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.