Displaying 4 results from an estimated 4 matches for "io_manag".
Did you mean:
io_manager
2020 Feb 11
1
Re: nbdkit background threads
...ps to be
> have a life equal to the connection itself, rather than
> stack-allocated. I'm hoping to post a patch for that shortly, as
> part of my experimentation with implementing ext2 as a filter
> instead of a plugin, where ext2 has the limitation that when writing
> a custom io_manager, you only get ONE spot where you can pass in an
> opaque pointer: our .prepare will have to pass a long-lived nxdata
> to ext2fs_open().
Yes I can see this could be tricky, especially in the presence of
multiple threads serving a single connection. The only alternative
way I can think to...
2020 Feb 10
3
nbdkit background threads
https://github.com/libguestfs/nbdkit/blob/ecef5b16359fb5af7e7abf4fd2fb3ad5438b16be/TODO#L76
Already existing filters (readahead, cache) could be improved if
filters could open a background work thread or threads which connect
independently to the plugin. A proposed new filter (scan) cannot
really be written at all without this capability.
First of all the reason this can't be done today is
2020 Feb 10
0
Re: nbdkit background threads
...this: we want next_ops to be have
a life equal to the connection itself, rather than stack-allocated. I'm
hoping to post a patch for that shortly, as part of my experimentation
with implementing ext2 as a filter instead of a plugin, where ext2 has
the limitation that when writing a custom io_manager, you only get ONE
spot where you can pass in an opaque pointer: our .prepare will have to
pass a long-lived nxdata to ext2fs_open().
But that's only a partial solution towards the rest of your goal of
having threading available.
>
> The seemingly obvious implementation - which is...
2020 Feb 12
4
[nbdkit PATCH 0/3] Make ext2 a filter
..._FLAG_64BITS;
#endif
+ r = next_ops->get_size (nxdata);
+ if (r == -1)
+ return -1;
+ r = next_ops->can_write (nxdata);
+ if (r == -1)
+ return -1;
+ if (r == 0)
+ readonly = 1;
+
if (!readonly)
fs_flags |= EXT2_FLAG_RW;
- err = ext2fs_open (disk, fs_flags, 0, 0, unix_io_manager, &h->fs);
+ h->next.next_ops = next_ops;
+ h->next.nxdata = nxdata;
+ name = nbdkit_io_encode (&h->next);
+ if (!name) {
+ nbdkit_error ("nbdkit_io_encode: %m");
+ return -1;
+ }
+
+ err = ext2fs_open (name, fs_flags, 0, 0, nbdkit_io_manager, &h->f...