search for: init_fileops

Displaying 5 results from an estimated 5 matches for "init_fileops".

2020 Apr 09
6
[PATCH nbdkit v2 0/3] Implement fileops.
Needs some work still, see in particular the commit message for patch 3. Rich.
2020 Apr 09
0
[PATCH nbdkit v2 1/3] file: Move file operators to a new common/fileops mini-library.
...e and use NBDKIT_API_VERSION == 2 + * + * - your plugin per-connection handle must either have type ‘struct + * fileops *’, or include ‘struct fileops’ as the first member + * + * - add FILEOPS_READ_WRITE_CALLBACKS or + * FILEOPS_READ_ONLY_CALLBACKS to your ‘struct nbdkit_plugin’ + * + * - call init_fileops from your .open callback, and close_fileops + * from your .close callback + * + * - optionally call fileops_dump_plugin from your .dump_plugin + * callback if you have one + * + * - the fileops mini-library is linked statically into the plugin + * + * This mini-library is safe to use from any t...
2020 Apr 09
1
[PATCH nbdkit PRELIMINARY] file: Move file operators to a new fileops mini-library
...file callbacks (like file.pread, file.pwrite, file.zero etc) to a new mini-library. They can then be consumed by other plugins fairly easily by doing: static void * foo_open (int readonly) { struct fileops *fops; int fd, flags; /* Allocate *fops */ /* Set up fd however you want */ if (init_fileops (fd, fops) == -1) { free (fops); return NULL; } return fops; } static struct nbdkit_plugin plugin = { .name = "foo", .open = foo_open, .close = foo_close, FILEOPS_CALLBACKS }; If we did this then it would only work for plugins w...
2020 Apr 09
0
[PATCH nbdkit v2 2/3] iso: Implement this plugin using fileops (read-only).
...+ if (fops == NULL) { + nbdkit_error ("malloc: %m"); + return NULL; + } + + /* Copy the fd because fileops needs to have its own file descriptor. */ + fd = dup (iso_fd); + if (fd == -1) { + nbdkit_error ("dup: %m"); + free (fops); + return NULL; + } + + if (init_fileops (fd, fops) == -1) { + free (fops); + return NULL; + } + + return fops; +} + +/* Free up the per-connection handle. */ +static void +iso_close (void *handle) +{ + struct fileops *fops = handle; + + close_fileops (fops); + free (fops); } #define THREAD_MODEL NBDKIT_THREAD_MODEL_PARALLE...
2020 Apr 09
0
[PATCH nbdkit v2 3/3] tmpdisk: Implement this plugin using fileops.
...(h->fd); - if (h->size == -1) - goto error; - } - else /* Regular file. */ - h->size = statbuf.st_size; - nbdkit_debug ("tmpdisk: requested_size = %" PRIi64 ", size = %" PRIi64, - requested_size, h->size); + if (init_fileops (fd, fops) == -1) + goto error3; /* We don't need the disk to appear in the filesystem since we hold * a file descriptor and access it through that, so unlink the disk. @@ -357,139 +290,26 @@ tmpdisk_open (int readonly) rmdir (dir); /* Return the handle. */ - return h; + r...