@@ -849,6 +849,32 @@ ocaml_uring_submit_unlinkat(value v_uring, value v_id, value v_fd, value v_sketc
849849 return (Val_true );
850850}
851851
852+ value /* noalloc */
853+ ocaml_uring_submit_fsync (value v_uring , value v_id , value v_fd , value v_off , value v_len )
854+ {
855+ struct io_uring * ring = Ring_val (v_uring );
856+ struct io_uring_sqe * sqe = io_uring_get_sqe (ring );
857+ if (!sqe ) return (Val_false );
858+ io_uring_prep_fsync (sqe , Int_val (v_fd ), 0 );
859+ sqe -> off = Int64_val (v_off );
860+ sqe -> len = Int_val (v_len );
861+ io_uring_sqe_set_data (sqe , (void * )Long_val (v_id ));
862+ return (Val_true );
863+ }
864+
865+ value /* noalloc */
866+ ocaml_uring_submit_fdatasync (value v_uring , value v_id , value v_fd , value v_off , value v_len )
867+ {
868+ struct io_uring * ring = Ring_val (v_uring );
869+ struct io_uring_sqe * sqe = io_uring_get_sqe (ring );
870+ if (!sqe ) return (Val_false );
871+ io_uring_prep_fsync (sqe , Int_val (v_fd ), IORING_FSYNC_DATASYNC );
872+ sqe -> off = Int64_val (v_off );
873+ sqe -> len = Int_val (v_len );
874+ io_uring_sqe_set_data (sqe , (void * )Long_val (v_id ));
875+ return (Val_true );
876+ }
877+
852878value /* noalloc */
853879ocaml_uring_submit_cancel (value v_uring , value v_id , value v_target ) {
854880 struct io_uring * ring = Ring_val (v_uring );
0 commit comments