1. 30 Aug, 2011 1 commit
  2. 25 Aug, 2011 1 commit
  3. 23 Aug, 2011 1 commit
  4. 05 Aug, 2011 1 commit
    • Iustin Pop's avatar
      Zero DRBD metadata before creation · 18e4dee6
      Iustin Pop authored
      The docstring of the DRBD8 class says:
        … The meta device is checked for valid size and is zeroed on create.
      which is not done today, hence we have
        node1# mkreiserfs -f /dev/xenvg/t8
        ReiserFS is successfully created on /dev/xenvg/t8.
        node1# drbdmeta --force /dev/drbd256 v08 /dev/xenvg/t8 0 create-md
        md_offset 0
        al_offset 4096
        bm_offset 36864
        Found reiser filesystem
        This would corrupt existing data.
        If you want me to do this, you need to zero out the first part
        of the device (destroy the content).
        You should be very sure that you mean it.
        Operation refused.
      I've tested and even just 1MB is enough to wipe the meta, but let's be
      safer and pass a 'clean' meta to drbd.
      Note: I didn't copy _WipeDevice from backend.py since it seemed more
      complex than needed here.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
  5. 25 Jul, 2011 1 commit
  6. 10 May, 2011 1 commit
  7. 08 Mar, 2011 1 commit
    • Apollon Oikonomopoulos's avatar
      Shared block storage support · b6135bbc
      Apollon Oikonomopoulos authored
      This patch introduces basic shared block storage support.
      It introduces a new storage backend, bdev.PersistentBlockDevice, to
      use as a backend for shared block storage. The new bdev requires a new
      BLOCKDEV_DRIVER_MANUAL constant with the value "manual" and uses it as
      the first part of the block device unique_id.
      A new disk template, DT_BLOCK is introduced as well and added to
      DTS_EXT_MIRROR and DTS_MAY_ADOPT. Also added DTS_MUST_ADOPT constant
      and use it to check for the presence of the adopt keyword during LU
      invocation. We enforce the /dev/disk limitation upon adoption, but we
      allow block devices to reside anywhere under /dev.
      This is very basic support and includes no storage manipulation (provisioning,
      resizing, renaming) which will have to be implemented through a "driver"
      Signed-off-by: default avatarApollon Oikonomopoulos <apollon@noc.grnet.gr>
      [iustin@google.com: slight changes to bdev.py]
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
  8. 01 Mar, 2011 1 commit
    • Apollon Oikonomopoulos's avatar
      Core shared file storage support · 4b97f902
      Apollon Oikonomopoulos authored
      This patch introduces core file storage support, consisting of the following:
      A configure-time switch for enabling/disabling shared file storage
      support and controlling the shared file storage location:
      --with-shared-file-storage-dir=.  Shared file storage configuration is then
      available as _autoconf.ENABLE_SHARED_FILE_STORAGE and
      _autoconf.SHARED_FILE_STORAGE_DIR and there is a cluster-wide ssconf
      key named "shared_file_storage_dir" for changing the file location.
      A new disk template named "sharedfile" (DT_SHARED_FILE), using
      Auxiliary functions in lib/config.py to handle shared file storage.
      Signed-off-by: default avatarApollon Oikonomopoulos <apollon@noc.grnet.gr>
      [iustin@google.com: small style fixes]
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
  9. 11 Jan, 2011 1 commit
  10. 02 Dec, 2010 1 commit
  11. 23 Sep, 2010 1 commit
  12. 22 Sep, 2010 1 commit
  13. 18 Aug, 2010 1 commit
    • Manuel Franceschini's avatar
      Introduce new IPAddress classes · 8b312c1d
      Manuel Franceschini authored
      This patch unifies the netutils functions dealing with IP addresses to
      three classes:
      - IPAddress: Common IP address functionality
      - IPv4Address: IPv4 specific functionality
      - IPv6address: IPv6-specific functionality
      Furthermore it adds methods to check whether an address is a loopback
      address, replacing the .startswith("127") for IPv4 and adding IPv6
      It also provides the basis for future IPv6 address handling. Methods to
      convert IP strings to their corresponding interger values will allow to
      canonicalize IPv6 addresses.
      Signed-off-by: default avatarManuel Franceschini <livewire@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
  14. 05 Aug, 2010 1 commit
  15. 09 Jul, 2010 1 commit
  16. 06 Jul, 2010 1 commit
  17. 30 Jun, 2010 1 commit
  18. 28 Jun, 2010 1 commit
    • Guido Trotter's avatar
      Remove pred from compat.any/all · 403f5172
      Guido Trotter authored
      This makes it compatible with the python builtin, and we can even use
      the builtin when running under the right version of python. The all and
      any functions are renamed to _all and _any, so that they can be tested,
      and (non)existing unittests are updated (translation: there are no unit
      tests, so none are updated).
      This patch also moves the code deciding which partial to use next to
      the definition of the _partial function, rather than after TryToRoman.
      Signed-off-by: default avatarGuido Trotter <ultrotter@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
  19. 22 Jun, 2010 1 commit
  20. 21 Apr, 2010 1 commit
  21. 23 Mar, 2010 1 commit
  22. 22 Mar, 2010 1 commit
  23. 15 Mar, 2010 1 commit
  24. 08 Mar, 2010 2 commits
    • Iustin Pop's avatar
      Add strict name validation for the LVM backend · 6136f8f0
      Iustin Pop authored
      Currently we don't enforce name validation for the LVM backend, on the
      idea that LVM itself will reject invalid names and we catch those
      However, recent LVM documents the accepted VG/LV name space, so it's
      easy to add this in the LVM backend code.
      In addition, the patch changes some hardcoded /dev/ constructions with
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
    • Iustin Pop's avatar
      Implement disabling of file-based storage · cb7c0198
      Iustin Pop authored
      Rationale: the file-based storage backend can add/remove files under a
      certain directory. However, the master node is also controlling the
      setting of the file-based root directory, so basically it means we can't
      prevent arbitrary modifications by the master of the node's filesystem.
      In order to mitigate this for setups where the file-based storage is not
      used, we introduce a new setting at ./configure time, that controls the
      enable/disable of file-based storage. Since this is not modifiable by
      the master (over RPC), it is now possible in this case to prevent
      unintended modifications of the node's filesystem from the master.
      The new setting is used in bdev.py to not expose the file-based storage
      at all, and in cmdlib.py to prevent attempts at creation of such
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
  25. 15 Feb, 2010 1 commit
  26. 25 Jan, 2010 2 commits
    • Iustin Pop's avatar
      Add a crude disable for DRBD barriers · 89b70f39
      Iustin Pop authored
      Ideally we want to/will have per-device DRBD controls of disk/metadata
      flushes. In the meantime, we want at least a disable of the barrier
      functionality for cases where one has battery-backed caches.
      Background: DRBD has four mechanism of handling ordered disk-writes.
      From the drbdsetup man-page, these are: barrier, flush, drain and none.
      DRBD prior to 8.2 only has drain and none. This patch makes all 8.x
      versions of DRBD disable all methods, and revert to none, in case one
      fully trusts batteries (either UPS for the whole system or battery for
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
    • Iustin Pop's avatar
      Ensure all int/float conversions are handled right · 691744c4
      Iustin Pop authored
      int()/float() can raise either ValueError (in case of int("a")), or
      TypeError (in case of int(None)). We had many bugs over time due to
      this, and a recent one was just diagnosed, so we go over the codebase
      and replace all 'except ValueError' with 'except (TypeError,
      ValueError)' that protect such conversions (there were no 'except
      TypeError' cases that needed a ValueError added).
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
  27. 04 Jan, 2010 3 commits
  28. 28 Dec, 2009 1 commit
  29. 01 Dec, 2009 1 commit
  30. 03 Nov, 2009 4 commits
  31. 03 Sep, 2009 1 commit
  32. 21 Aug, 2009 1 commit
  33. 06 Aug, 2009 1 commit