Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add unlink #65

Merged
merged 1 commit into from
Aug 22, 2022
Merged

Add unlink #65

merged 1 commit into from
Aug 22, 2022

Conversation

talex5
Copy link
Collaborator

@talex5 talex5 commented Aug 22, 2022

This can also be used as rmdir.

This can also be used as rmdir.
Copy link
Contributor

@haesbaert haesbaert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was gonna suggest to use memcpy thinking String_val was not guaranteed to be terminated, but it is.

@haesbaert haesbaert merged commit f518db8 into ocaml-multicore:main Aug 22, 2022
@talex5 talex5 deleted the unlink branch August 22, 2022 15:44
@talex5
Copy link
Collaborator Author

talex5 commented Aug 22, 2022

I was gonna suggest to use memcpy thinking String_val was not guaranteed to be terminated, but it is.

That's not a bad idea. At the moment, we stop copying at the first \0, which is OK for paths but maybe not for strings in general.

However, the sketch buffer currently sets the length to the rounded length, not the length requested, so that won't work unless we change it to use the requested length.

@haesbaert
Copy link
Contributor

I was gonna suggest to use memcpy thinking String_val was not guaranteed to be terminated, but it is.

That's not a bad idea. At the moment, we stop copying at the first \0, which is OK for paths but maybe not for strings in general.

I considered that, but we're calling it a string, and you're using it a char *, and it should be ok for every C string, as long as it's a real string.

However, the sketch buffer currently sets the length to the rounded length, not the length requested, so that won't work unless we change it to use the requested length.

True, but if what we needed was not a string, the memcpy would be enough to not get a truncated thing, which would be the bug, if the area allocated is larger than the memcpy'ed, it's all fine.

talex5 added a commit to talex5/opam-repository that referenced this pull request Aug 26, 2022
CHANGES:

New features:

- Add `Uring.timeout` (@bikallem ocaml-multicore/ocaml-uring#59).

- Add `Uring.read` and `Uring.write` (@haesbaert ocaml-multicore/ocaml-uring#62).
  These are simple wrappers for read(2) and write(2).

- Add `Uring.unlink` (@talex5 ocaml-multicore/ocaml-uring#65).
  This uses unlinkat(2), and so can also be used to remove directories.

- Add support for uring probes (@talex5 ocaml-multicore/ocaml-uring#70).
  Allows checking whether a feature is supported by the kernel at runtime.

- Rename `peek` to `get_cqe_nonblocking` (@talex5 ocaml-multicore/ocaml-uring#67).
  The old name was confusing because it does remove the item from the ring.

- Update to liburing 2.2 (@talex5 ocaml-multicore/ocaml-uring#56).

- Add `Uring.active_ops` (@talex5 ocaml-multicore/ocaml-uring#68).
  Avoids needing to track the value returned by `submit`, which is important as it is sometimes called automatically.

- Add `Uring.iov_max` constant (@talex5 ocaml-multicore/ocaml-uring#76).

- Add `Uring.get_debug_stats` (@talex5 ocaml-multicore/ocaml-uring#64).
  This should make it easier to check that the uring is behaving as expected.

Performance:

- Introduce a Sketch buffer per Uring (@haesbaert ocaml-multicore/ocaml-uring#63).
  The main motivation of this change is to avoid having one malloc per packet in readv(2), writev(2) and friends.

- Use `submit_and_wait` where appropriate (@haesbaert ocaml-multicore/ocaml-uring#69).

- Add a `readv` benchmark (@talex5 ocaml-multicore/ocaml-uring#64).

- Avoid unnecessary use of `CAMLparam` in the C stubs (@haesbaert ocaml-multicore/ocaml-uring#61).

Bug fixes:

- Prevent ring from being used after exit (@talex5 ocaml-multicore/ocaml-uring#78).

Build changes:

- Remove use of notty for formatting benchmark results (@talex5 ocaml-multicore/ocaml-uring#71).
  It prevented uring from being tested on OCaml 5.

- Use MDX for README (@talex5 ocaml-multicore/ocaml-uring#57).

- Convert tests to MDX (@talex5 ocaml-multicore/ocaml-uring#58 ocaml-multicore/ocaml-uring#73).

- Use opam-repository syntax for license (@kit-ty-kate ocaml-multicore/ocaml-uring#72).

- Remove internal `is_dirty` flag (@talex5 ocaml-multicore/ocaml-uring#77).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants