Write nbdkit plugins in shell script(!)

nbdkit is a pluggable NBD server and you can write plugins in C or several other scripting languages. But not shell script – until now. Shell script turns out to be a reasonably nice language for this:

case "$1" in
  get_size)
    stat -L -c '%s' $f ||
      exit 1 ;;
  pread)
    dd iflag=skip_bytes,count_bytes skip=$4 count=$3 if=$f ||
      exit 1 ;;
  pwrite)
    dd oflag=seek_bytes conv=notrunc seek=$4 of=$f ||
      exit 1 ;;

Now that coreutils util-linux provides the fallocate program we can even implement efficient trim and zeroing operations.

2 Comments

Filed under Uncategorized

2 responses to “Write nbdkit plugins in shell script(!)

  1. Pingback: nbdkit supports exportnames | Richard WM Jones

  2. Pingback: nbdkit new eval plugin and ip filter | Richard WM Jones

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.