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

switch ZFS volume backend to pyzfs / libzfs_core #1781

Open
wants to merge 27 commits into
base: master
Choose a base branch
from

Commits on Jul 17, 2015

  1. zfs: reimplement Filesystem._exists using lzc_exists

    This is a start of the conversion of the ZFS backend to libzfs_core /
    pyzfs.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    b3770ed View commit details
    Browse the repository at this point in the history
  2. zfs: add utility code for running lzc functions in a thread pool

    The helper wraps lzc functions but also provides a method to schedule
    any function without creating a wrapper.
    
    Currently a thread pool of a reactor is used, but a dedicated pool could
    be used.  Test reactor(s) without a thread pool are also supported.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    d6cbfaf View commit details
    Browse the repository at this point in the history
  3. zfs: switch snapshot creation to lzc

    Also, remove all unit tests for snapshots.
    The unit tests were based on the fact that the operations were done via
    zfs command, so they checked that the command was spawned with the correct
    arguments and the output was correctly parsed.
    
    To do:	invent the way to test the new implementation
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    e5531f6 View commit details
    Browse the repository at this point in the history
  4. zfs: switch filesystem creation to lzc

    Note that lzc_create() never mounts the filesystem.
    'zfs create' used to mount the filesystem, so now we have to do that
    explicitly and at the moment that is done via 'zfs mount'.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    9a8d17c View commit details
    Browse the repository at this point in the history
  5. zfs: convert set_maximum_size() to libzfs_core

    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    5f66c2d View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    fa0a0ff View commit details
    Browse the repository at this point in the history
  7. zfs: switch filesystem sending and receiving to lzc

    Note: lzc_send()/lzc_receive() do not close their end of the pipe
    (the file descriptor, in general) when they are done writing to it.
    
    Note: this API is synchrnous at the moment including a requirement
    for a synchronous cleanup of the file descriptors.
    There are functional tests to verify that.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    9a80397 View commit details
    Browse the repository at this point in the history
  8. zfs: switch cloning, renaming and setting some properties to lzc

    The properties are readonly and mountpoint properties.
    Note that one thing that all these operations have in common is that
    they may require a dataset to be unmounted and/or mounted.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    a44576f View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    bcd8bf1 View commit details
    Browse the repository at this point in the history
  10. zfs: make snapshot sorting more reliable by using createtxg property

    In theory two snapshots can the same 'creation' time because its resolution
    is on second.  In fact, I've seen a test failing because of that.
    createtxg is always unique, because ZFS does not allow to created more
    than one snapshot for the same filesystem within the same transaction
    group.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    8d8a6d8 View commit details
    Browse the repository at this point in the history
  11. zfs: convert filesystem listing to libzfs_core

    Also, internal _list_filesystems() method is changed to return an iterator
    rather than a deferred that produces an iterator.
    It's not clear why we need the iterator at all because the single user
    of this method consumes the whole iterator and builds a set.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    1349bfd View commit details
    Browse the repository at this point in the history
  12. zfs: convert filesystem (with snapshots) destruction to libzfs_core

    Note: that we need to explicitly unmount the filesystem before
    destroying it.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    35ce7c2 View commit details
    Browse the repository at this point in the history
  13. zfs: convert the initial setup of the pool root filesystem to libzfs_…

    …core
    
    _sync_command_error_squashed() became obsolete and was removed.
    Its unit tests are removed as well.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    f4eb274 View commit details
    Browse the repository at this point in the history
  14. zfs: fix a problem with unmounting of some filesystems

    'zfs umount' refuses to work on a ZFS filesystem if its mountpoint
    property is set to legacy or none.  On the other hand, 'umount'
    can handle all property settings.  So, prefer using the latter.
    
    The ZFS backend itself never sets mountpoint to those values, but
    there is at least one funcitonal test case that sets up a requried
    scenario by directly fiddling with the property.
    
    To implement the change zfs_command() function is split into
    ext_command() that can handle any external command and zfs_command()
    convenience facade.
    Andriy Gapon committed Jul 17, 2015
    Configuration menu
    Copy the full SHA
    186eff4 View commit details
    Browse the repository at this point in the history

Commits on Aug 7, 2015

  1. Configuration menu
    Copy the full SHA
    8308e8a View commit details
    Browse the repository at this point in the history
  2. zfs: catch up with lzc_create signature change

    Andriy Gapon committed Aug 7, 2015
    Configuration menu
    Copy the full SHA
    3d8f9cb View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2015

  1. log lzc_send and lzc_receive exceptions

    Andriy Gapon committed Aug 10, 2015
    Configuration menu
    Copy the full SHA
    dcc914f View commit details
    Browse the repository at this point in the history
  2. zfs backend: remove _FakeAsyncLZC that fell out of use

    Andriy Gapon committed Aug 10, 2015
    Configuration menu
    Copy the full SHA
    4d2bbdb View commit details
    Browse the repository at this point in the history

Commits on Aug 14, 2015

  1. Configuration menu
    Copy the full SHA
    e387cf5 View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2015

  1. add pyzfs to requirements

    Andriy Gapon committed Sep 29, 2015
    Configuration menu
    Copy the full SHA
    47dfab0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3123937 View commit details
    Browse the repository at this point in the history

Commits on Oct 1, 2015

  1. update pyzfs requirements

    Andriy Gapon committed Oct 1, 2015
    Configuration menu
    Copy the full SHA
    7cfdc3a View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2015

  1. Configuration menu
    Copy the full SHA
    80c1a02 View commit details
    Browse the repository at this point in the history

Commits on Oct 8, 2015

  1. flocker-volume: ensure that the reactor is running

    deferLater() unlike maybeDeferred ensures that the reactor is
    actually running.  This is required by the new ZFS backend, because
    it uses the reactor's thread pool to run lzc_send() and lzc_receive()
    in separate threads.  That has to be done because those calls lend
    their context to the kernel for doing the actual send / receive
    work.  The main thread pumps the stream data between the userspace
    and the kernel.
    Andriy Gapon committed Oct 8, 2015
    Configuration menu
    Copy the full SHA
    05fb5d5 View commit details
    Browse the repository at this point in the history
  2. Merge branch 'master' into pyzfs-FLOC-2683

    Andriy Gapon committed Oct 8, 2015
    Configuration menu
    Copy the full SHA
    ead482e View commit details
    Browse the repository at this point in the history

Commits on Oct 30, 2015

  1. Merge branch 'master' into pyzfs-FLOC-2683

    Andriy Gapon committed Oct 30, 2015
    Configuration menu
    Copy the full SHA
    3801ea8 View commit details
    Browse the repository at this point in the history
  2. use lzc_receive_with_header() instead of lzc_receive

    The latter can not automatically derive a snapshot name from
    the given stream.
    See ZFS-30 for more details.
    Andriy Gapon committed Oct 30, 2015
    Configuration menu
    Copy the full SHA
    8ba3807 View commit details
    Browse the repository at this point in the history