1 /* nbdkit 2 * Copyright (C) 2018 Red Hat Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: 7 * 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * * Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * * Neither the name of Red Hat nor the names of its contributors may be 16 * used to endorse or promote products derived from this software without 17 * specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 22 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 27 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 29 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30 * SUCH DAMAGE. 31 */ 32 33 #ifndef NBDKIT_METHODS_H 34 #define NBDKIT_METHODS_H 35 36 /* Defined by the plugin, returns the script name. For sh_dump_plugin 37 * and sh_thread_model ONLY it is possible for this function to return 38 * NULL. From all other contexts it must return a script name. 39 */ 40 extern const char *get_script (const char *method); 41 42 extern void sh_dump_plugin (void); 43 extern int sh_thread_model (void); 44 extern int sh_get_ready (void); 45 extern int sh_preconnect (int readonly); 46 extern void *sh_open (int readonly); 47 extern void sh_close (void *handle); 48 extern int64_t sh_get_size (void *handle); 49 extern int sh_pread (void *handle, void *buf, uint32_t count, uint64_t offset, 50 uint32_t flags); 51 extern int sh_pwrite (void *handle, const void *buf, uint32_t count, 52 uint64_t offset, uint32_t flags); 53 extern int sh_can_write (void *handle); 54 extern int sh_can_flush (void *handle); 55 extern int sh_is_rotational (void *handle); 56 extern int sh_can_trim (void *handle); 57 extern int sh_can_zero (void *handle); 58 extern int sh_can_extents (void *handle); 59 extern int sh_can_fua (void *handle); 60 extern int sh_can_multi_conn (void *handle); 61 extern int sh_can_cache (void *handle); 62 extern int sh_can_fast_zero (void *handle); 63 extern int sh_flush (void *handle, uint32_t flags); 64 extern int sh_trim (void *handle, uint32_t count, uint64_t offset, 65 uint32_t flags); 66 extern int sh_zero (void *handle, uint32_t count, uint64_t offset, 67 uint32_t flags); 68 extern int sh_extents (void *handle, uint32_t count, uint64_t offset, 69 uint32_t flags, struct nbdkit_extents *extents); 70 extern int sh_cache (void *handle, uint32_t count, uint64_t offset, 71 uint32_t flags); 72 73 #endif /* NBDKIT_METHODS_H */ 74