Compare commits

...

179 Commits

Author SHA1 Message Date
Vitaliy Filippov 3bbc46543d Fix vitastor-cli create syntax 1 week ago
Vitaliy Filippov 2fb0c85618 Allow to start OSDs without local store (only for tests) 2 weeks ago
Vitaliy Filippov d81a6c04fc Update cmake min version so it does not complain about deprecation 2 weeks ago
Vitaliy Filippov 7b35801647 Fix possible bad realloc in disk_tool_meta for non-standard metadata block sizes 2 weeks ago
Vitaliy Filippov f3228d5c07 Fix typo (did not affect execution though) 2 weeks ago
Vitaliy Filippov 18366f5055 Fix read/write return type in rw_blocking 2 weeks ago
Vitaliy Filippov 851507c147 Add missing close() in test stubs 2 weeks ago
Vitaliy Filippov 9aaad28488 Fix "null pointer exception" for unhandled OSD_OP_DELETEs (when pool is not loaded yet) 3 weeks ago
Vitaliy Filippov dd57d086fe Add a missing part of the "theoretical performance" to the Russian version 4 weeks ago
Vitaliy Filippov 8810eae8fb Release 0.8.6 4 weeks ago
Vitaliy Filippov c1365f46c9 Use vitastor-cli instead of direct etcd interaction in the CSI driver 4 weeks ago
Vitaliy Filippov 14d6acbcba Set default rdma_max_recv/send to 16/8, fix documentation 4 weeks ago
Vitaliy Filippov 1e307069bc Fix missing parity chunk calculation for EC n+k, k > 1 and first parity chunk missing 4 weeks ago
Vitaliy Filippov c3e80abad7 Allow to send more than 1 operation at a time 4 weeks ago
Vitaliy Filippov 138ffe4032 Reuse incoming RDMA buffers 4 weeks ago
Vitaliy Filippov 8139a34e97 Fix json11: allow trailing comma 1 month ago
Vitaliy Filippov 4ab630b44d Use just sfdisk --json, --dump is not needed 1 month ago
Vitaliy Filippov 2c8241b7db Remove PG "peered" state 1 month ago
Vitaliy Filippov 36a7dd3671 Move tests to "make test" 1 month ago
Vitaliy Filippov 936122bbcf Initialize msgr lazily in client to speedup vitastor-cli with RDMA enabled 1 month ago
Vitaliy Filippov 1a1ba0d1e7 Add set_immediate to ringloop and use it for bs/osd ops to prevent reenterability issues 1 month ago
Vitaliy Filippov 3d09c9cec7 Remove unused wait_sqe() from ringloop 1 month ago
Vitaliy Filippov 3d08a1ad6c Fix cluster_client test after last reenterability fixes 2 months ago
Vitaliy Filippov 499881d81c Fix typo 2 months ago
Vitaliy Filippov aba93b951b Fix incorrect EC free space statistics in vitastor-cli df output 2 months ago
Vitaliy Filippov d125fb1f30 Release 0.8.5 2 months ago
Vitaliy Filippov 9d3fd72298 Require liburing < 2 in rpm specs 2 months ago
Vitaliy Filippov 8b552a01f9 Do not retry successful operation parts in client (could lead to "double free" bugs) 2 months ago
Vitaliy Filippov 0385b2f9e8 Fix write hangs on PG epoch update - always set pg.history_changed to true 2 months ago
Vitaliy Filippov 749c837045 Replace non-existing local.target with multi-user.target 2 months ago
Vitaliy Filippov 98001d845b Remove version from vitastor-release.rpm links 2 months ago
Vitaliy Filippov c96bcae74b Allow "content" option in PVE storage plugin to allow to enable containers 2 months ago
Vitaliy Filippov 9f4e34a8cc Build client library without tcmalloc 2 months ago
Vitaliy Filippov 81fc8bb94c Release 0.8.4 2 months ago
Vitaliy Filippov bc465c16de Fix arithmetic on void* for clang 2 months ago
Vitaliy Filippov 8763e9211c Fix qemu driver compilation warning/error 2 months ago
Vitaliy Filippov 9e1a80bd17 Replace apt-key with trusted.gpg.d 2 months ago
Vitaliy Filippov 3e280f2f08 Mark vitastor as shared storage in PVE driver 2 months ago
Vitaliy Filippov fe87b4076b Fix backwards compatibility in cluster_client 2 months ago
Vitaliy Filippov a38957c1a7 Skip empty hosts in lp-optimizer 2 months ago
Vitaliy Filippov 137309cf29 Implement bdrv_co_block_status for snapshot export support 3 months ago
Vitaliy Filippov 373f9d0387 Try to re-peer PGs on history change 3 months ago
Vitaliy Filippov c4516ea971 Also remove deleted OSD from PG configuration and last_clean_pgs 3 months ago
Vitaliy Filippov 91065c80fc Try to prevent left_on_dead when deleting OSDs by removing them from PG history 3 months ago
Vitaliy Filippov 0f6b946add Time changes with every stat change, do not schedule checks based on it 3 months ago
Vitaliy Filippov 465cbf0b2f Do not re-schedule recheck indefinitely, run it after mon_change_timeout in any case 3 months ago
Vitaliy Filippov 41add50e4e Track last_clean_pgs on a per-pool basis 3 months ago
Vitaliy Filippov 02e7be7dc9 Prevent reenterability side effects during PG history operation resume 3 months ago
Vitaliy Filippov 73940adf07 Prioritize EC (non-instantly-stable) operations under journal pressure 3 months ago
Vitaliy Filippov e950c024d3 Do not sync peer OSDs before listing 3 months ago
Vitaliy Filippov 71d6d9f868 Fix possible crash on ENOSPC during operation cancel in blockstore 3 months ago
Vitaliy Filippov a4dfa519af Report PG history synchronously during write 3 months ago
Vitaliy Filippov 37a6aff2fa Write OSD numbers always as numbers in mon 3 months ago
Vitaliy Filippov 67019f5b02 Make OSD sort & sanitize PG history items 3 months ago
Vitaliy Filippov 0593e5c21c Fix OSD peer config safety check 3 months ago
Vitaliy Filippov 998e24adf8 Add a new recovery_pg_switch setting to mix all PGs during recovery 3 months ago
Vitaliy Filippov d7bd36dc32 Fix another rare journal flush stall 3 months ago
Vitaliy Filippov cf5c562800 Log all object locations when peering PGs 3 months ago
Vitaliy Filippov 629200b0cc Return ENOSPC as the primary OSD 3 months ago
Vitaliy Filippov 3589ccec22 Do not disconnect peer on ENOSPC during write 3 months ago
Vitaliy Filippov 8d55a1e780 Build osd_rmw_test both with and without ISA-L 3 months ago
Vitaliy Filippov 65f6b3a4eb Fix jerasure crashing on bitmap calculation/restoration due to the lack of 16-byte alignment 3 months ago
Vitaliy Filippov fd216eac77 Add a test for missing parity chunk calculation 3 months ago
Vitaliy Filippov 61fca7c426 Fix crash when calculating a parity chunk with previous parity chunk missing (test coming shortly) 3 months ago
Vitaliy Filippov 1c29ed80b9 Fix quote in docs :) 3 months ago
Vitaliy Filippov 68f3fb795e Suppress warnings in vitastor-disk purge correctly 3 months ago
Vitaliy Filippov fa90f287da Release 0.8.3 3 months ago
Vitaliy Filippov 795020674d Loop journal flusher when the queue is empty but there is a trim request 3 months ago
Vitaliy Filippov 8e12285629 Fix vitastor-disk purge (now it works) 3 months ago
Vitaliy Filippov b9b50ab4cc Implement vitastor-disk purge command 3 months ago
Vitaliy Filippov 0d8625f92d Make vitastor-cli print help on missing command 3 months ago
Vitaliy Filippov 2f3c2c5140 Implement safety check for OSD removal, translate all '-' to '_' in cli options 3 months ago
Vitaliy Filippov 4ebdd02b0f Remove LIST op limiter 3 months ago
Vitaliy Filippov bf6fdc4141 Check add/rm osd with 2048 PGs 3 months ago
Vitaliy Filippov c2244331e6 Add vitastor-cli rm-osd command 3 months ago
Vitaliy Filippov 3de57e87b1 Recheck OSD tree in monitor on /osd/stats changes 3 months ago
Vitaliy Filippov 2d4cc688b2 Add a remove-osd test 3 months ago
Vitaliy Filippov 31bd1ec145 Fix object creation check for statistics 3 months ago
Vitaliy Filippov c08d1f2dfe Add missing offset&len into big_writes journal dump, fix commas again 3 months ago
Vitaliy Filippov 1d80bcc8d0 Fix blockstore returning garbage for unstable reads if there is an in-flight version 3 months ago
Vitaliy Filippov 5ef8bed75f Release 0.8.2 3 months ago
Vitaliy Filippov 8669998e5e Fix discard_list_subop() for local ops 3 months ago
Vitaliy Filippov b457327e77 Oops. Fix metadata read after fixes :-) 3 months ago
Vitaliy Filippov f7fa9d5e34 Fix SCSI device cache type check 3 months ago
Vitaliy Filippov 49b88b01f9 Fix clang build 3 months ago
Vitaliy Filippov 71688bcb59 Disable HDD autodetection in non-hybrid mode 3 months ago
Vitaliy Filippov 552e207d2b Explicitly print errors about -EAGAIN in io_uring 3 months ago
Vitaliy Filippov 5464821fa5 Final fix for the lack of zeroing out of old metadata entries 3 months ago
Vitaliy Filippov 6917a32ca8 Add --force to vitastor-disk read-sb 3 months ago
Vitaliy Filippov f8722a8bd5 Dump meta in hex 3 months ago
Vitaliy Filippov 9c2f69c9fa Add forgotten commas to vitastor-disk dump-journal 3 months ago
Vitaliy Filippov 1a93e3f33a Wait for data writes before fsyncing data if data fsync is enabled 3 months ago
Vitaliy Filippov 3f35744052 Fix compatibility with QEMU aio_set_fd_handler signatures in 7.0 and < 2.9 3 months ago
Vitaliy Filippov 66f14ac019 Update notes about Proxmox 7.1-7.3 3 months ago
Vitaliy Filippov 1364009931 Add patches for pve-qemu-kvm 7.1 (PVE 7.3) and pve-qemu-kvm 6.2 (PVE 7.2) 3 months ago
Vitaliy Filippov d7e30b8353 Fix pve-storage-vitastor filename 3 months ago
Vitaliy Filippov cb437913d3 Never try to wait for free space inside blockstore 3 months ago
Vitaliy Filippov 472bce58ab Fix rare crash in osd_peering due to callback ordering 3 months ago
Vitaliy Filippov 7a71e7ef01 Fix possible duplication of ping & op message IDs 4 months ago
Vitaliy Filippov c71e5e7bbd Fix possible use-after-free during pings 4 months ago
Vitaliy Filippov 8fdf30b21f Release 0.8.1 4 months ago
Vitaliy Filippov 238037ae31 Make journal trimmer wait until reads are completed when inmemory_journal is false 4 months ago
Vitaliy Filippov 09a8864686 Fix degraded parity writes for EC N+K when K>1 4 months ago
Vitaliy Filippov 6e6f6ecbb0 Add missing journal space check for big_writes 4 months ago
Vitaliy Filippov 9491f81419 Add missing documentation for OSD tags 4 months ago
Vitaliy Filippov 44c2b30167 Take newest packages every time when rebuilding CSI 4 months ago
Vitaliy Filippov bf8a0581cd Fix possible "assertion failed: next->prev_wait >= 0" in client 4 months ago
Vitaliy Filippov 5953942042 Add crc32c test utility 4 months ago
Vitaliy Filippov a276a1f737 Do not copy journal data additional time when flushing 4 months ago
Vitaliy Filippov cc24e5796e Add a FIXME 4 months ago
Vitaliy Filippov 6e26732e6a Fix skipped "len" field in vitastor-disk write-journal big_writes 4 months ago
Vitaliy Filippov b4edc79449 Fix possible segfault on ENOSPC 4 months ago
Vitaliy Filippov 5f26887d32 Fix csi endpoint in liveness probe 4 months ago
Vitaliy Filippov 11ec9ad874 Release 0.8.0 7 months ago
Vitaliy Filippov 83bb6598dc Fix fsync autodetection for the single-device mode 7 months ago
Vitaliy Filippov 150f369346 Hotfixes for vitastor-disk prepare: max_other, get device size, older sfdisk 7 months ago
Vitaliy Filippov 8d9a5fde15 Fix docs (block_size vs object_size) 7 months ago
Vitaliy Filippov 9ccc607ab9 Fix parse_size 7 months ago
Vitaliy Filippov 8972878c77 Fix make-etcd for ip:port 7 months ago
Vitaliy Filippov 2a1da88253 Create /etc/vitastor during package installation 7 months ago
Vitaliy Filippov 2f13f347b0 Fix space stats in mon 7 months ago
Vitaliy Filippov 9453db0e99 Add a newer make-etcd.js 7 months ago
Vitaliy Filippov a828a1233d Remove old make-osd scripts 7 months ago
Vitaliy Filippov 9481456dfe Automatically check whether to disable cache during prepare 7 months ago
Vitaliy Filippov bd11db5d0a Add vitastor-mon.service, vitastor.target, create user and log directory during package installation 7 months ago
Vitaliy Filippov 68ebe5993a Fix partition reuse 7 months ago
Vitaliy Filippov eecbfb66ce Remove the old make-osd.sh script from packages 7 months ago
Vitaliy Filippov a537db8909 Add documentation for the new "vitastor-disk" tool 7 months ago
Vitaliy Filippov 54ef2c389f Followup to the "tried to overwrite" fix: also handle it in case of inmemory_meta == false 7 months ago
Vitaliy Filippov 153c73574a Refactor blockstore_init_meta into slightly more obvious code 7 months ago
Vitaliy Filippov d83580bd68 Fix "tried to overwrite non-zero metadata entry" when during a previous metadata 7 months ago
Vitaliy Filippov 29b40aba93 Add write-meta command (for debug) 7 months ago
Vitaliy Filippov a52f2b0e8f Add write-journal command (for debug) 7 months ago
Vitaliy Filippov 1407db9c08 Fix vitastor-disk prepare bugs 7 months ago
Vitaliy Filippov c0d5e83fb8 Run partprobe when partitions do not appear 7 months ago
Vitaliy Filippov 40d8d65188 Rewrite upgrade-simple to C++ 7 months ago
Vitaliy Filippov a16263e88c Fix bugs in the upgrade script and in the udev startup script 7 months ago
Vitaliy Filippov e62bab1b39 Add systemd unit for udev deployments 7 months ago
Vitaliy Filippov cb4e3a118d Fix warning 7 months ago
Vitaliy Filippov b1e39b5dea Split disk_tool.cpp into separate files 7 months ago
Vitaliy Filippov 1170319431 Finish vitastor-disk prepare in theory 7 months ago
Vitaliy Filippov 2e0a2221eb vitastor-disk prepare: WIP second form command of the command 8 months ago
Vitaliy Filippov 5a10d135f3 Allow to configure block_size, bitmap_granularity and immediate_commit per-pool 8 months ago
Vitaliy Filippov 4c9aaa8a86 vitastor-disk prepare: implement first form of the command 8 months ago
Vitaliy Filippov ae99ee6266 Rename base64.{cpp.h} to str_util 8 months ago
Vitaliy Filippov 5af75f7d78 Implement vitastor-cli and vitastor-disk --help <command> 8 months ago
Vitaliy Filippov 7dc6f10ea1 Add read-sb command 8 months ago
Vitaliy Filippov 6fde9950d6 Implement upgrade tool from "simple" units to superblock+udev deployments 8 months ago
Vitaliy Filippov 76dd0fdcea Implement pre-exec command with on-start OSD checks 8 months ago
Vitaliy Filippov 5acc19bbd5 Implement systemctl start/stop and other commands 8 months ago
Vitaliy Filippov d5ca4e1f90 Add exec-osd command 8 months ago
Vitaliy Filippov 67e04f789f Add write-sb (superblock) command 8 months ago
Vitaliy Filippov 837407a84c Add udev import command 8 months ago
Vitaliy Filippov 1fe5908899 WIP OSD activation from superblock 8 months ago
Vitaliy Filippov dcc6d546be Move simple-offsets into vitastor-disk, too 8 months ago
Vitaliy Filippov 85fa389557 Add a test for disk-tool resize 8 months ago
Vitaliy Filippov dfa433c63b Add JSON format to dump-journal 8 months ago
Vitaliy Filippov cf487c95aa Fix resizer 8 months ago
Vitaliy Filippov b10656ca09 Parse new disk params in disk_tool resizer 8 months ago
Vitaliy Filippov ea632367e9 Do not alter dsk.meta_offset/len to skip superblock 8 months ago
Vitaliy Filippov 4d777c6729 Set journal/meta devices to data device explicitly instead of "" 8 months ago
Vitaliy Filippov 0c404c5074 Use blockstore_disk in disk_tool 8 months ago
Vitaliy Filippov dfd80626bd Extract disk opening functions to separate module 8 months ago
Vitaliy Filippov 30907852c2 Use simple std::map for the config 8 months ago
Vitaliy Filippov 078ed5b116 WIP Data area resize tool 8 months ago
Vitaliy Filippov 73a363bf92 Rename some variables and constants 8 months ago
Vitaliy Filippov b0e86ca643 Merge dump-journal and dump-meta into the new "vitastor-disk" tool 8 months ago
Vitaliy Filippov 8800afb649 Fix void* arithmetic again 8 months ago
Vitaliy Filippov c10c90f620 Swap cli.en.md and cli.ru.md contents O_o 8 months ago
Vitaliy Filippov e20cdd13b6 Fix simple-offsets return value 8 months ago
Vitaliy Filippov d29b5d2d04 Add Russian translation of VNPL-1.1 9 months ago
Vitaliy Filippov 65b0e8e940 Fix typo in VNPL-1.1 9 months ago
Vitaliy Filippov bce357e2a5 Do not read all metadata into memory when dumping 10 months ago
Vitaliy Filippov 0876ca09cd Fix dumper includes and print format 10 months ago
Vitaliy Filippov dac12d8a4c Implement metadata dump tool 10 months ago
Vitaliy Filippov 1eec4407ab Fix inode creation when /index/maxid is out of sync 10 months ago
huy 3b7c6dcac2 Fix volume creation from snapshots in Cinder driver 10 months ago
Vitaliy Filippov 342517d126 Fix typo 10 months ago
Vitaliy Filippov 675bc12a13 Add extern "C" for systems like Gentoo which miss it in jerasure includes 10 months ago
  1. 4
      CMakeLists.txt
  2. 5
      README-ru.md
  3. 1
      README.md
  4. 680
      VNPL-1.1-RU.txt
  5. 4
      VNPL-1.1.txt
  6. 10
      csi/Dockerfile
  7. 2
      csi/Makefile
  8. 4
      csi/deploy/004-csi-nodeplugin.yaml
  9. 2
      csi/deploy/007-csi-provisioner.yaml
  10. 2
      csi/src/config.go
  11. 236
      csi/src/controllerserver.go
  12. 4
      debian/changelog
  13. 2
      debian/control
  14. 2
      debian/pve-storage-vitastor.install
  15. 1
      debian/vitastor-client.install
  16. 1
      debian/vitastor-mon.install
  17. 9
      debian/vitastor-mon.postinst
  18. 4
      debian/vitastor-osd.install
  19. 10
      debian/vitastor-osd.postinst
  20. 8
      debian/vitastor.Dockerfile
  21. 55
      docs/config/layout-cluster.en.md
  22. 50
      docs/config/layout-cluster.ru.md
  23. 43
      docs/config/network.en.md
  24. 48
      docs/config/network.ru.md
  25. 11
      docs/config/osd.en.md
  26. 12
      docs/config/osd.ru.md
  27. 51
      docs/config/pool.en.md
  28. 59
      docs/config/pool.ru.md
  29. 10
      docs/config/src/layout-cluster.en.md
  30. 10
      docs/config/src/layout-cluster.ru.md
  31. 76
      docs/config/src/layout-cluster.yml
  32. 73
      docs/config/src/network.yml
  33. 14
      docs/config/src/osd.yml
  34. 6
      docs/installation/packages.en.md
  35. 6
      docs/installation/packages.ru.md
  36. 8
      docs/installation/proxmox.en.md
  37. 8
      docs/installation/proxmox.ru.md
  38. 2
      docs/intro/architecture.ru.md
  39. 4
      docs/intro/author.ru.md
  40. 2
      docs/intro/features.en.md
  41. 2
      docs/intro/features.ru.md
  42. 21
      docs/intro/quickstart.en.md
  43. 22
      docs/intro/quickstart.ru.md
  44. 13
      docs/performance/theoretical.en.md
  45. 19
      docs/performance/theoretical.ru.md
  46. 106
      docs/usage/cli.en.md
  47. 106
      docs/usage/cli.ru.md
  48. 257
      docs/usage/disk.en.md
  49. 262
      docs/usage/disk.ru.md
  50. 37
      docs/usage/qemu.en.md
  51. 37
      docs/usage/qemu.ru.md
  52. 2
      json11
  53. 7
      mon/90-vitastor.rules
  54. 2
      mon/PGUtil.js
  55. 2
      mon/lp-optimizer.js
  56. 110
      mon/make-etcd
  57. 414
      mon/make-osd-hybrid.js
  58. 66
      mon/make-osd.sh
  59. 86
      mon/make-units.sh
  60. 2
      mon/mon-main.js
  61. 78
      mon/mon.js
  62. 18
      mon/vitastor-mon.service
  63. 22
      mon/vitastor-osd@.service
  64. 4
      mon/vitastor.target
  65. 9
      patches/VitastorPlugin.pm
  66. 4
      patches/cinder-vitastor.py
  67. 169
      patches/pve-qemu-6.2-vitastor.patch
  68. 169
      patches/pve-qemu-7.1-vitastor.patch
  69. 2
      patches/qemu-make-patches.sh
  70. 2
      rpm/build-tarball.sh
  71. 2
      rpm/qemu-kvm-4.2-el7.spec.patch
  72. 2
      rpm/vitastor-el7.Dockerfile
  73. 32
      rpm/vitastor-el7.spec
  74. 2
      rpm/vitastor-el8.Dockerfile
  75. 32
      rpm/vitastor-el8.spec
  76. 66
      src/CMakeLists.txt
  77. 55
      src/base64.cpp
  78. 8
      src/base64.h
  79. 16
      src/blockstore.h
  80. 323
      src/blockstore_disk.cpp
  81. 42
      src/blockstore_disk.h
  82. 122
      src/blockstore_flush.cpp
  83. 75
      src/blockstore_impl.cpp
  84. 51
      src/blockstore_impl.h
  85. 318
      src/blockstore_init.cpp
  86. 24
      src/blockstore_init.h
  87. 7
      src/blockstore_journal.cpp
  88. 3
      src/blockstore_journal.h
  89. 322
      src/blockstore_open.cpp
  90. 87
      src/blockstore_read.cpp
  91. 12
      src/blockstore_rollback.cpp
  92. 8
      src/blockstore_stable.cpp
  93. 14
      src/blockstore_sync.cpp
  94. 124
      src/blockstore_write.cpp
  95. 217
      src/cli.cpp
  96. 8
      src/cli.h
  97. 2
      src/cli_alloc_osd.cpp
  98. 19
      src/cli_common.cpp
  99. 40
      src/cli_create.cpp
  100. 5
      src/cli_df.cpp
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 2.8.12)
project(vitastor)
set(VERSION "0.7.1")
set(VERSION "0.8.6")
add_subdirectory(src)

@ -58,6 +58,7 @@ Vitastor поддерживает QEMU-драйвер, протоколы NBD и
- [Метаданные образов в etcd](docs/config/inode.ru.md)
- Использование
- [vitastor-cli](docs/usage/cli.ru.md) (консольный интерфейс)
- [vitastor-disk](docs/usage/disk.ru.md) (управление дисками)
- [fio](docs/usage/fio.ru.md) для тестов производительности
- [NBD](docs/usage/nbd.ru.md) для монтирования ядром
- [QEMU и qemu-img](docs/usage/qemu.ru.md)
@ -96,5 +97,5 @@ Vitastor Network Public License 1.1, основанная на GNU GPL 3.0 с д
и также на условиях GNU GPL 2.0 или более поздней версии. Так сделано в целях
совместимости с таким ПО, как QEMU и fio.
Вы можете найти полный текст VNPL 1.1 в файле [VNPL-1.1.txt](VNPL-1.1.txt),
а GPL 2.0 в файле [GPL-2.0.txt](GPL-2.0.txt).
Вы можете найти полный текст VNPL 1.1 на английском языке в файле [VNPL-1.1.txt](VNPL-1.1.txt),
VNPL 1.1 на русском языке в файле [VNPL-1.1-RU.txt](VNPL-1.1-RU.txt), а GPL 2.0 в файле [GPL-2.0.txt](GPL-2.0.txt).

@ -58,6 +58,7 @@ Read more details below in the documentation.
- [Image metadata in etcd](docs/config/inode.en.md)
- Usage
- [vitastor-cli](docs/usage/cli.en.md) (command-line interface)
- [vitastor-disk](docs/usage/disk.en.md) (disk management tool)
- [fio](docs/usage/fio.en.md) for benchmarks
- [NBD](docs/usage/nbd.en.md) for kernel mounts
- [QEMU and qemu-img](docs/usage/qemu.en.md)

@ -0,0 +1,680 @@
СЕТЕВАЯ ПУБЛИЧНАЯ ЛИЦЕНЗИЯ VITASTOR
VITASTOR NETWORK PUBLIC LICENSE
Версия 1.1, от 6 февраля 2021
Автор лицензии: Виталий Филиппов <vitalif@yourcmc.ru>, 2021 год
Каждый имеет право копировать и распространять точные копии этой
лицензии, но без внесения изменений.
ПРЕАМБУЛА
Сетевая Публичная Лицензия Vitastor - это свободная "копилефт" лицензия для
для программного обеспечения (ПО) и других видов произведений, специально
разработанная, чтобы гарантировать кооперацию с сообществом при разработке
сетевых приложений.
Большинство лицензий на программное обеспечение и другие произведения
спроектированы так, чтобы лишить Вас свободы делиться ими и изменять их.
Сетевая Публичная Лицензия Vitastor, напротив, разработана с целью
гарантировать Ваше право распространять и вносить изменения во все версии
программного обеспечения -- для уверенности, что ПО останется свободным для
всех пользователей.
Когда мы говорим о свободном ПО, мы имеем в виду свободу использования, а не
бесплатность. Свободные лицензии, такие, как Сетевая Публичная Лицензия
Vitastor, составлены для того, чтобы убедиться, что у Вас есть право
распространять копии свободного ПО (и взимать плату за них, если Вы хотите),
что Вы получаете исходные тексты или можете получить их, если захотите, что Вы
можете изменять программное обеспечение или использовать его части в новых
свободных программах, и что Вы знаете о своем праве делать всё это.
Разработчики, использующие Сетевую Публичную Лицензию Vitastor, гарантируют
Ваши права при помощи следующих мер: (1) закрепляют авторское право на
программное обеспечение, и (2) предлагают Вам принять условия настоящей
Лицензии, закрепляющей Ваше право на создание копий, распространение и (или)
модификацию программного обеспечения.
Еще одно преимущество защиты свободы всех пользователей заключается в том,
что улучшения, сделанные в разных версиях программы, при их широком
распространении становятся доступными для использования другими разработчиками.
Многие разработчики программного обеспечения воодушевляются этим
сотрудничеством и пользуются его преимуществами. Однако, если программное
обеспечение используется на сетевых серверах, данный результат не всегда
достигается. Генеральная публичная лицензия GNU разрешает создание измененных
версий и предоставление неограниченного доступа к ним, не делая общедоступным
их исходный текст. Даже генеральная публичная лицензия GNU Affero разрешает
использование модифицированной версии свободной программы в закрытой среде, где
внешние пользователи взаимодействуют с ней только через закрытый промежуточный
интерфейс (прокси), опять же, без открытия в свободный публичный доступ как
самой программы, так и прокси.
Сетевая Публичная Лицензия Vitastor разработана специально, чтобы
гарантировать, что в таких случаях и модифицированная версия программы, и
прокси останутся доступными сообществу. Для этого лицензия требует от
операторов сетевых серверов предоставлять исходный код оригинальной программы,
а также всех других программ, взаимодействующих с ней на их серверах,
пользователям этих серверов, на условиях свободных лицензий. Таким образом,
публичное использование изменённой версии ПО на сервере, прямо или косвенно
доступном пользователям, даёт пользователям доступ к исходным кодам изменённой
версии.
Детальные определения используемых терминов и описание условий копирования,
распространения и внесения изменений приведены ниже.
ТЕРМИНЫ И УСЛОВИЯ
0. Определения.
"Настоящая Лицензия" -- версия 1.1 Сетевой Публичной Лицензии Vitastor.
Под "Авторским правом" понимаются все законы, сходные с авторско-правовыми,
которые применяются к любым видам работ, например, к топологиям микросхем.
Термином "Программа" обозначается любое охраноспособное произведение,
используемое в соответствии с настоящей Лицензией. Лицензиат именуется "Вы".
"Лицензиаты" и "получатели" могут быть как физическими лицами, так и
организациями.
"Внесение изменений" в произведение означает копирование или адаптацию
произведения целиком или в части, способом, требующим разрешения
правообладателя, за исключением изготовления его точной копии. Получившееся
произведение называется "измененной версией" предыдущего произведения или
произведением, "основанным на" более ранней работе.
Термином "Лицензионное произведение" обозначается неизмененная Программа или
произведение, основанное на Программе.
"Распространение" произведения означает совершение с ним действий, которые
при отсутствии разрешения сделают Вас прямо или косвенно ответственным за
нарушение действующего закона об авторском праве, за исключением запуска на
компьютере или изменения копии, созданной в личных целях. Распространение
включает в себя копирование, раздачу копий (с изменениями или без них),
доведение до всеобщего сведения, а в некоторых странах -- и другие действия.
"Передача" произведения означает любой вид распространения, который позволяет
другим лицам создавать или получать копии произведения. Обычное взаимодействие
с пользователем через компьютерную сеть без создания копии передачей не
является.
Интерактивный интерфейс пользователя должен отображать "Информация об
авторском праве", достаточную для того, чтобы (1) обеспечить отображение
соответствующего уведомления об авторских правах и (2) сообщить пользователю
о том, что ему не предоставляются никакие гарантии на произведение (за
исключением явным образом предоставленных гарантий), о том, что лицензиаты
могут передавать произведение на условиях, описанных в настоящей Лицензии,
а также о том, как ознакомиться с текстом настоящей Лицензии. Если интерфейс
предоставляет собой список пользовательских команд или настроек, наподобие
меню, это требование считается выполненным при наличии явно выделенного
пункта в таком меню.
1. Исходный текст.
Под "Исходным текстом" понимается произведение в форме, которая более всего
подходит для внесения в него изменений. "Объектным кодом" называется
произведение в любой иной форме.
"Стандартный интерфейс" -- интерфейс, который либо является общепринятым
стандартом, введенным общепризнанным органом по стандартизации, либо, в случае
интерфейсов, характерных для конкретного языка программирования -- тот,
который широко используется разработчиками, пишущими программы на этом языке.
"Системные библиотеки" исполняемого произведения включают в себя то, что не
относится к произведению в целом и при этом (a) входит в обычный комплект
Основного компонента, но при этом не является его частью и (b) служит только
для обеспечения работы с этим Основным компонентом или для реализации
Стандартного интерфейса, для которого существует общедоступная реализация,
опубликованная в виде исходного текста. "Основным компонентом" в данном
контексте назван главный существенный компонент (ядро, оконная система и т.д.)
определенной операционной системы (если она используется), под управлением
которой функционирует исполняемое произведение, либо компилятор, используемый
для создания произведения или интерпретатор объектного кода, используемый для
его запуска.
"Полный исходный текст" для произведения в форме объектного кода -- весь
исходный текст, необходимый для создания, установки и (для исполняемого
произведения) функционирования объектного кода, а также модификации
произведения, включая сценарии, контролирующие эти действия. Однако он не
включает в себя Системные библиотеки, необходимые для функционирования
произведения, инструменты общего назначения или общедоступные свободные
программы, которые используются в неизменном виде для выполнения этих
действий, но не являются частью произведения. Полный исходный текст включает
в себя, например, файлы описания интерфейса, прилагаемые к файлам исходного
текста произведения, а также исходные тексты общих библиотек и динамически
связанных подпрограмм, которые требуются для функционирования произведения
и разработаны специально для этого, например, для прямой передачи данных
или управления потоками между этими подпрограммами и другими частями
произведения. Полный исходный текст не включает в себя то, что пользователи
могут сгенерировать автоматически из других частей Полного исходного текста.
Полным исходным текстом для произведения в форме исходных текстов является
само это произведение.
2. Основные права.
Все права, предоставленные на основании настоящей Лицензии, действуют в
течение срока действия авторских прав на Программу и не могут быть отозваны
при условии, что сформулированные в ней условия соблюдены. Настоящая Лицензия
однозначно подтверждает Ваши неограниченные права на запуск неизмененной
Программы. Настоящая Лицензия распространяется на результаты функционирования
Лицензионного произведения только в том случае, если они, учитывая их
содержание, сами являются частью Лицензионного произведения. Настоящая
Лицензия подтверждает Ваши права на свободное использование произведения
или другие аналогичные полномочия, предусмотренные действующим
законодательством об авторском праве.
Если Вы не осуществляете обычную передачу Лицензионного произведения, то
можете как угодно создавать, запускать и распространять его копии до тех пор,
пока ваша Лицензия сохраняет силу. Вы можете передавать Лицензионные
произведения третьим лицам исключительно для того, чтобы они внесли в них
изменения для Вас или предоставили Вам возможность их запуска, при условии,
что Вы соглашаетесь с условиями настоящей Лицензии при передаче всех
материалов, авторскими правами на которые Вы не обладаете. Лица, создающие
или запускающие Лицензионные произведения для Вас, должны делать это
исключительно от Вашего имени, под Вашим руководством и контролем, на
условиях, которые запрещают им создание без Вашей санкции каких-либо копий
материалов, на которые Вы обладаете авторским правом.
Любая другая передача разрешается исключительно при соблюдении описанных
ниже условий. Сублицензирование не допускается; раздел 10 делает его не нужным.
3. Защита прав пользователей от законов, запрещающих обход технических средств.
Ни одно Лицензионное произведение не должно считаться содержащим эффективные
технические средства, удовлетворяющие требованиям любого действующего закона,
принятого для исполнения обязательств, предусмотренных статьей 11 Договора ВОИС
по авторскому праву от 20 декабря 1996 года или аналогичных законов,
запрещающих или ограничивающих обход таких технических средств.
При передаче Лицензионного произведения Вы отказываетесь от всех
предоставляемых законом полномочий по запрету обхода технических средств,
используемых авторами в связи с осуществлением их прав, признавая, что такой
обход находится в рамках осуществления прав на использование Лицензионного
произведения, предоставленных настоящей Лицензией; также Вы отказываетесь
от любых попыток ограничить функционирование произведения или внесение в него
изменений, направленных на реализацию предоставленных Вам законом прав на
запрет пользователю обхода технических средств.
4. Передача неизмененных копий.
Вы можете передавать точные копии исходных текстов Программы в том виде,
в котором Вы их получили, на любом носителе, при условии, что Вы прилагаете
к каждой копии соответствующее уведомление об авторских правах способом,
обеспечивающим ознакомление с ним пользователя; сохраняете все уведомления
о том, что к тексту применима настоящая Лицензия и любые ограничения,
добавленные в соответствии с разделом 7; сохраняете все уведомления об
отсутствии каких-либо гарантий; предоставляете всем получателям вместе с
Программой копию настоящей Лицензии.
Вы можете установить любую цену за каждую копию, которую Вы передаете,
или распространять копии бесплатно; также Вы можете предложить поддержку
или гарантию за отдельную плату.
5. Передача измененных исходных текстов.
Вы можете передавать исходный текст произведения, основанного на Программе,
или изменений, необходимых для того, чтобы получить его из Программы, на
условиях, описанных в разделе 4, при соблюдении следующих условий:
а) Произведение должно содержать уведомления о произведенных Вами
изменениях с указанием их даты, сделанные способом, обеспечивающим
ознакомление с ними пользователя.
b) Произведение должно содержать уведомление о том, что оно
распространяется на условиях настоящей Лицензии, а также об условиях,
добавленных в соответствии с разделом 7, сделанное способом,
обеспечивающим ознакомление с ним пользователя. Данное требование имеет
приоритет над требованиями раздела 4 "оставлять нетронутыми все
уведомления".
c) Вы должны передать на условиях настоящей Лицензии всю работу целиком
любому лицу, которое приобретает копию. Таким образом, настоящая Лицензия
вместе с любыми применимыми условиями раздела 7 будет применяться к
произведению в целом и всем его частям, независимо от их комплектности.
Настоящая Лицензия не дает права на лицензирование произведения на любых
других условиях, но это не лишает законной силы такое разрешение, если Вы
получили его отдельно.
d) Если произведение имеет интерактивные пользовательские интерфейсы,
каждый из них должен отображать Информацию об авторском праве; однако,
если Программа имеет пользовательские интерфейсы, которые не отображают
информацию об авторском праве, от Вашего произведения этого также не
требуется.
Включение Лицензионного произведения в подборку на разделе хранения данных
или на носителе, на котором распространяется произведение, вместе с другими
отдельными самостоятельными произведениями, которые по своей природе не
являются переработкой Лицензионного произведения и не объединены с ним,
например, в программный комплекс, называется "набором", если авторские права
на подборку не используются для ограничения доступа к ней или законных прав
её пользователей сверх того, что предусматривают лицензии на отдельные
произведения. Включение Лицензионного произведения в набор не влечет применения
положений настоящей Лицензии к остальным его частям.
6. Передача произведения в формах, не относящихся к исходному тексту.
Вы можете передавать Лицензионное произведение в виде объектного кода в
соответствии с положениями разделов 4 и 5, при условии, что Вы также передаете
машиночитаемый Полный исходный текст в соответствии с условиями настоящей
Лицензии, одним из следующих способов:
а) Передавая объектный код или содержащий его материальный продукт (включая
распределенный материальный носитель), с приложением Полного исходного
текста наматериальном носителе, обычно используемом для обмена программным
обеспечением.
b) Передавая объектный код или содержащий его материальный продукт (включая
носитель, на котором распространяется произведение), с письменным
предложением, действительным в течение не менее трех лет либо до тех пор,
пока Вы предоставляете запасные части или поддержку для данного продукта,
о передаче любому обладателю объектного кода (1) копии Полного исходного
текста для всего программного обеспечения, содержащегося в продукте, на
которое распространяется действие настоящей Лицензии, на физическом
носителе, обычно используемом для обмена программным обеспечением, по цене,
не превышающей разумных затрат на передачу копии, или (2) доступа к Полному
исходному тексту с возможностью его копирования с сетевого сервера без
взимания платы.
с) Передавая отдельные копии объектного кода с письменной копией предложения
о предоставлении Полного исходного текста. Этот вариант допускается только
в отдельных случаях при распространении без извлечения прибыли, и только
если Вы получили объектный код с таким предложением в соответствии
с пунктом 6b.
d) Передавая объектный код посредством предоставления доступа к нему по
определенному адресу (бесплатно или за дополнительную плату), и предлагая
эквивалентный доступ к Полному исходному тексту таким же способом по тому же
адресу без какой-либо дополнительной оплаты. От Вас не требуется принуждать
получателей копировать Полный исходный текст вместе с объектным кодом. Если
объектный код размещен на сетевом сервере, Полный исходный текст может
находиться на другом сервере (управляемом Вами или третьим лицом), который
предоставляет аналогичную возможность копирования; при этом Вы должны четко
указать рядом с объектным кодом способ получения Полного исходного текста.
Независимо от того, на каком сервере расположен Полный исходный текст, Вы
обязаны убедиться в том, что он будет распространяться в течение времени,
необходимого для соблюдения этих требований.
e) Передавая объектный код с использованием одноранговой (пиринговой) сети,
при условии информирования других пользователей сети о том, где можно
бесплатно получить объектный код и Полный исходный текст произведения
способом, описанным в пункте 6d.
Не нужно включать в передаваемый объектный код его отделимые части, исходные
тексты которых не входят в состав Полного исходного текста, такие как Системные
библиотеки.
"Потребительский товар" это либо (1) "товар, предназначенный для личных нужд",
под которым понимается любое материальное личное имущество, которое обычно
используется для личных, семейных или домашних целей, или (2) что-либо
спроектированное или продающееся для использования в жилище. При определении
того, предназначен ли товар для личных нужд, сомнения должны толковаться в
пользу положительного ответа на этот вопрос. Применительно к конкретному
товару, используемому конкретным пользователем, под выражением "обычно
используется" имеется в виду способ, которым данный вид товаров преимущественно
или как правило используется, независимо от статуса конкретного пользователя
или способа, которым конкретный пользователь использует, предполагает или
будет использовать товар. Товар относится к предназначенным для личных нужд
независимо от того, насколько часто он используется в коммерческой
деятельности, промышленности или иной сфере, не относящейся к личным нуждам,
за исключением случая, когда использование в этой сфере представляет собой
единственный основной способ использования такого товара.
"Информация, необходимая для установки" Потребительского товара -- любые
методы, процедуры, сведения, необходимые для авторизации, или другая
информация, необходимая для установки и запуска в Потребительском товаре
измененных версий Лицензионного произведения, полученных при изменении
Полного исходного текста. Данная информация должна быть достаточной для
того, чтобы обеспечить возможность внесения в исходный текст изменений,
не приводящих к ограничению или нарушению его дальнейшей работоспособности.
Если вместе с Потребительским товаром или специально для использования
в нём Вы передаете произведение в виде объектного кода на условиях, описанных
в данном разделе, и такая передача является частью сделки, по которой право
владения и пользования Потребительским товаром переходит к получателю
пожизненно или на определенный срок (независимо от признаков сделки), Полный
исходный текст, передаваемый согласно данному разделу, должен сопровождаться
Информацией, необходимой для установки. Но это требование не применяется,
если ни Вы, ни какое-либо третье лицо не сохраняет за собой возможности
установки измененного объектного кода на Потребительский товар (например,
произведение было установлено в постоянную память).
Требование о предоставлении Информации, необходимой для установки, не
включает в себя требование продолжения оказания услуг по поддержке,
предоставления гарантии или обновлений для произведения, которое было изменено
или установлено получателем, либо для Потребительского товара, в котором оно
было изменено или на который оно было установлено. В доступе к сети может быть
отказано, если само внесение изменений существенно и негативно влияет на
работу сети, нарушает правила обмена данными или не поддерживает протоколы для
обмена данными по сети.
Передаваемый в соответствии с данным разделом Полный исходный текст и
предоставленная Информация, необходимая для установки, должны быть записаны в
формате, который имеет общедоступное описание (и общедоступную реализацию,
опубликованную в форме исходного текста) и не должны требовать никаких
специальных паролей или ключей для распаковки, чтения или копирования.
7. Дополнительные условия.
"Дополнительными разрешениями" называются условия, которые дополняют условия
настоящей Лицензии, делая исключения из одного или нескольких её положений.
Дополнительные разрешения, которые применимы ко всей Программе, должны
рассматриваться как часть настоящей Лицензии, в той степени, в которой они
соответствуют действующему законодательству. Если дополнительные разрешения
применяются только к части Программы, эта часть может быть использована отдельно
на измененных условиях, но вся Программа продолжает использоваться на условиях
настоящей Лицензии без учета дополнительных разрешений.
Когда Вы передаете копию Лицензионного произведения, Вы можете по своему
усмотрению исключить любые дополнительные разрешения, примененные к этой копии
или к любой её части. (Для дополнительных разрешений может быть заявлено
требование об их удалении в определенных случаях, когда Вы вносите изменения в
произведение.) Вы можете добавлять дополнительные разрешения к добавленным Вами
в Лицензионное произведение материалам, на которые Вы обладаете авторскими
правами или правом выдачи соответствующего разрешения.
Независимо от любых других положений настоящей Лицензии, Вы можете дополнить
следующими условиями положения настоящей Лицензии в отношении материала,
добавленного к Лицензионному произведению (если это разрешено обладателями
авторских прав на материал):
a) отказом от гарантий или ограничением ответственности, отличающимися от
тех, что описаны в разделах 15 и 16 настоящей Лицензии; либо
b) требованием сохранения соответствующей информации о правах или об
авторстве материала, или включения её в Информацию об авторском праве,
отображаемую содержащим его произведением; либо
c) запретом на искажение информации об источнике происхождения материала
или требованием того, чтобы измененные версии такого материала содержали
корректную отметку об отличиях от исходной версии; либо
d) ограничением использования в целях рекламы имен лицензиаров или авторов
материала; либо
e) отказом от предоставления прав на использование в качестве товарных
знаков некоторых торговых наименований, товарных знаков или знаков
обслуживания; либо
f) требованием от каждого, кто по договору передает материал (или его
измененные версии), предоставления компенсации лицензиарам и авторам
материала в виде принятия на себя любой ответственности, которую этот
договор налагает на лицензиаров и авторов.
Все остальные ограничительные дополнительные условия считаются "дополнительными
запретами" по смыслу раздела 10. Если программа, которую Вы получили, или любая
её часть содержит уведомление о том, что наряду с настоящей Лицензией её
использование регулируется условием, относящимся к дополнительным запретам, Вы
можете удалить такое условие. Если лицензия содержит дополнительный запрет, но
допускает лицензирование на измененных условиях или передачу в соответствии с
настоящей Лицензией, Вы можете добавить к Лицензионному произведению материал,
используемый на условиях такой лицензии, в том случае, если дополнительный
запрет не сохраняется при таком изменении условий лицензии или передаче.
Если Вы добавляете условия для использования Лицензионного произведения в
соответствии с настоящим разделом, Вы должны поместить в соответствующих файлах
исходного текста уведомление о том, что к этим файлам применяются дополнительные
условия, или указание на то, как ознакомиться с соответствующими условиями.
Дополнительные разрешающие или ограничивающие условия могут быть сформулированы
в виде отдельной лицензии или зафиксированы как исключения; вышеуказанные
требования применяются в любом случае.
8. Прекращение действия.
Вы не можете распространять Лицензионное произведение или вносить в него
изменения на условиях, отличающихся от явно оговоренных в настоящей Лицензии.
Любая попытка распространения или внесения изменений на иных условиях является
ничтожной и автоматически прекращает Ваши права, полученные по настоящей
Лицензии (включая лицензию на любые патенты, предоставленные согласно третьему
пункту раздела 11).
Тем не менее если Вы прекращаете нарушение настоящей Лицензии, Ваши права,
полученные от конкретного правообладателя, восстанавливаются (а) временно, до
тех пор пока правообладатель явно и окончательно не прекратит действие Ваших
прав, и (б) навсегда, если правообладатель не уведомит Вас о нарушении с помощью
надлежащих средств в течение 60 дней после прекращения нарушений.
Кроме того, Ваши права, полученные от конкретного правообладателя,
восстанавливаются навсегда, если правообладатель впервые любым подходящим
способом уведомляет Вас о нарушении настоящей Лицензии на свое произведение (для
любого произведения) и Вы устраняете нарушение в течение 30 дней после получения
уведомления.
Прекращение Ваших прав, описанное в настоящем разделе, не прекращает действие
лицензий лиц, которые получили от Вас копии произведения или права,
предоставляемые настоящей Лицензией. Если Ваши права были прекращены навсегда и
не восстановлены, Вы не можете вновь получить право на тот же материал на
условиях, описанных в разделе 10.
9. Акцепт не требуется для получения копий.
Вы не обязаны принимать условия настоящей Лицензии для того, чтобы получить или
запустить копию Программы. Случайное распространение Лицензионного произведения,
происходящее вследствие использования одноранговой (пиринговой) сети для
получения его копии, также не требует принятия этих условий. Тем не менее только
настоящая Лицензия дает Вам право распространять или изменять любое Лицензионное
произведение. Если Вы не приняли условия настоящей Лицензии, такие действия
будут нарушением авторского права. Поэтому изменяя или распространяя
Лицензионное произведение, Вы выражаете согласие с условиями настоящей Лицензии.
10. Автоматическое получение прав последующими получателями.
Каждый раз, когда Вы передаете Лицензионное произведение, получатель
автоматически получает от его лицензиара право запускать, изменять и
распространять это произведение при условии соблюдения настоящей Лицензии. Вы не
несете ответственности за соблюдение третьими лицами условий настоящей Лицензии.
"Реорганизацией" называются действия, в результате которых передается управление
организацией или значительная часть её активов, а также происходит разделение
или слияние организаций. Если распространение Лицензионного произведения
является результатом реорганизации, каждая из сторон сделки, получающая копию
произведения, также получает все права на произведение, которые предшествующее
юридическое лицо имело или могло предоставить согласно предыдущему абзацу, а
также право на владение Полным исходным текстом произведения от предшественника,
осуществляемое в его интересах, если предшественник владеет им или может
получить его при разумных усилиях.
Вы не можете налагать каких-либо дополнительных ограничений на осуществление
прав, предоставленных или подтвержденных в соответствии с настоящей Лицензией.
Например, Вы не можете ставить осуществление прав, предоставленных по настоящей
Лицензии, в зависимость от оплаты отчислений, роялти или других сборов; также Вы
не можете инициировать судебный процесс (включая встречный иск или заявление
встречного требования в судебном процессе) о нарушении любых патентных прав при
создании, использовании, продаже, предложении продажи, импорте Программы или
любой её части.
11. Патенты.
"Инвестором" называется правообладатель, разрешающий использование Программы
либо произведения, на котором основана Программа, на условиях настоящей
Лицензии. Произведение, лицензированное таким образом, называется "версией со
вкладом" инвестора.
"Неотъемлемые патентные претензии" инвестора -- все патентные права,
принадлежащие инвестору или контролируемые им в настоящее время либо
приобретенные в будущем, которые могут быть нарушены созданием, использованием
или продажей версии со вкладом, допускаемыми настоящей Лицензией; они не
включают в себя права, которые будут нарушены исключительно вследствие будущих
изменений версии со вкладом. Для целей данного определения под "контролем"
понимается право выдавать патентные сублицензии способами, не нарушающими
требований настоящей Лицензии.
Каждый инвестор предоставляет Вам неисключительную безвозмездную лицензию на
патент, действующую во всем мире, соответствующую неотъемлемым патентным
претензиям инвестора, на создание, использование, продажу, предложение для
продажи, импорт, а также запуск, внесение изменений и распространение всего, что
входит в состав версии со вкладом.
В следующих трех абзацах "лицензией на патент" называется любое явно выраженное
вовне согласие или обязательство не применять патент (например, выдача
разрешения на использование запатентованного объекта или обещание не подавать в
суд за нарушение патента). "Выдать" кому-то такую лицензию на патент означает
заключить такое соглашение или обязаться не применять патент против него.
Если Вы передаете Лицензионное произведение, сознательно основываясь на лицензии
на патент, в то время как Полный исходный текст произведения невозможно
бесплатно скопировать с общедоступного сервера или другим не вызывающим
затруднений способом, Вы должны либо (1) обеспечить возможность такого доступа к
Полному исходному тексту, либо (2) отказаться от прав, предоставленных по
лицензии на патент для данного произведения, либо (3) принять меры по передаче
лицензии на патент последующим получателям произведения, в соответствии с
требованиями настоящей Лицензии. "Сознательно основываясь" означает, что Вы
знаете, что при отсутствии лицензии на патент передача Вами Лицензионного
произведения в определенной стране или использование получателем переданного ему
Вами Лицензионного произведения в этой стране нарушит один или несколько
определенных патентов этой страны, срок действия которых не истек.
Если в соответствии или в связи с единичной сделкой либо соглашением Вы
передаете или делаете заказ на распространение Лицензионного произведения, и
предоставляете определенным лицам, получающим Лицензионное произведение,
лицензию на патент, разрешающую им использовать, распространять, вносить
изменения или передавать конкретные экземпляры Лицензионного произведения,
права, которые Вы предоставляете по лицензии на патент, автоматически переходят
ко всем получателям Лицензионного произведения и произведений, созданных на его
основе.
Патентная лицензия называется "дискриминирующей", если она не покрывает,
запрещает осуществление или содержит в качестве условия отказ от применения
одного или нескольких прав, предоставленных настоящей Лицензией. Вы не можете
передавать Лицензионное произведение, если Вы являетесь участником договора с
третьим лицом, осуществляющим распространение программного обеспечения, в
соответствии с которым Вы делаете в пользу третьего лица выплаты, размер которых
зависит от масштабов Вашей деятельности по передаче произведения, и в
соответствии с которым любое третье лицо, получающее от Вас Лицензионное
произведение, делает это на условиях дискриминирующей патентной лицензии (а)
которая зависит от количества копий Лицензионного произведения, переданных Вами
(или копий, сделанных с этих копий), или (b) которая используется
преимущественно в конкретных товарах или подборках, содержащих Лицензионное
произведение, или в связи с ними, в том случае, если Вы заключили данный договор
или получили лицензию на патент после 28 марта 2007 года.
Ничто в настоящей Лицензии не должно толковаться как исключение или ограничение
любого предполагаемого права или других способов противодействия нарушениям,
которые во всем остальном могут быть доступны для Вас в соответствии с
применимым патентным правом.
12. Запрет отказывать в свободе другим.
Если на Вас наложены обязанности (будь то по решению суда, договору или иным
способом), которые противоречат условиям настоящей Лицензии, это не освобождает
Вас от соблюдения её условий. Если Вы не можете передать Лицензионное
произведение так, чтобы одновременно выполнять Ваши обязательства по настоящей
Лицензии и любые другие относящиеся к делу обязательства, то Вы не можете
передавать его вообще. Например, если Вы согласны с условием, обязывающими Вас
производить сбор отчислений за дальнейшую передачу от тех, кому Вы передаете
Программу, то для того, чтобы соблюсти это условие и выполнить требования
настоящей Лицензии, Вы должны полностью воздержаться от передачи Программы.
13. Удаленное сетевое взаимодействие.
Под "Прокси-программой" понимается отдельная программа, специально
разработанная для использования совместно с Лицензионным произведением,
и взаимодействующая с ним прямо или косвенно через любой вид программного
интерфейса, компьютерную сеть, имитацию такой сети, или, в свою очередь,
через другую Прокси-программу.
Независимо от любых других положений настоящей Лицензии, если вы
предоставляете любому пользователю возможность взаимодействовать с Лицензионным
произведением через компьютерную сеть, имитацию такой сети, или через любое
количество "Прокси-программ", вы должны в явной форме предложить этому
пользователю возможность получить Полный исходный текст Лицензионного
произведения и всех Прокси-программ путём предоставления доступа к нему
с сетевого сервера без взимания платы, посредством стандартных или
традиционных способов, используемых для копирования программного обеспечения.
Полный исходный текст Лицензионного произведения должен предоставляться
пользователю на условиях настоящей Лицензии, а Полный исходный текст
Прокси-программ должен предоставляться пользователю либо на условиях настоящей
Лицензии, либо на условиях одной из свободных лицензий, совместимых с
Генеральной публичной Лицензией GNU, перечисленных Фондом Свободного
Программного Обеспечения в списке под названием "Лицензии свободных программ,
совместимые с GPL".
14. Пересмотренные редакции настоящей Лицензии.
Автор настоящей Лицензии время от времени может публиковать пересмотренные
и (или) новые редакции Сетевой Публичной Лицензии Vitastor. Они будут аналогичны
по смыслу настоящей редакции, но могут отличаться от нее в деталях, направленных
на решение новых проблем или регулирование новых отношений.
Каждой редакции присваивается собственный номер. Если для Программы указано,
что к ней применима определенная редакция Сетевой Публичной Лицензии Vitastor
"или любая более поздняя редакция", у Вас есть возможность использовать термины
и условия, содержащиеся в редакции с указанным номером или любой более поздней
редакции, опубликованной автором настоящей Лицензии. Если для Программы не
указан номер редакции Сетевой Публичной Лицензии Vitastor, Вы можете выбрать
любую редакцию, опубликованную автором настоящей Лицензии.
Более поздние редакции Лицензии могут дать Вам дополнительные или принципиально
иные права. Тем не менее в результате Вашего выбора более поздней редакции на
автора или правообладателя не возлагается никаких дополнительных обязанностей.
15. Отказ от гарантий.
НА ПРОГРАММУ НЕ ПРЕДОСТАВЛЯЕТСЯ НИКАКИХ ГАРАНТИЙ ЗА ИСКЛЮЧЕНИЕМ ПРЕДУСМОТРЕННЫХ
ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ. ЕСЛИ ИНОЕ НЕ УКАЗАНО В ПИСЬМЕННОЙ ФОРМЕ,
ПРАВООБЛАДАТЕЛИ И (ИЛИ) ТРЕТЬИ ЛИЦА ПРЕДОСТАВЛЯЮТ ПРОГРАММУ "КАК ЕСТЬ", БЕЗ
КАКИХ-ЛИБО ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ВКЛЮЧАЯ ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ
КОНКРЕТНЫХ ЦЕЛЕЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. ВЕСЬ РИСК, СВЯЗАННЫЙ С КАЧЕСТВОМ И
ПРОИЗВОДИТЕЛЬНОСТЬЮ ПРОГРАММЫ, ВОЗЛАГАЕТСЯ НА ВАС. ЕСЛИ В ПРОГРАММЕ БУДУТ
ВЫЯВЛЕНЫ НЕДОСТАТКИ, ВЫ ПРИНИМАЕТЕ НА СЕБЯ СТОИМОСТЬ ВСЕГО НЕОБХОДИМОГО
ОБСЛУЖИВАНИЯ, РЕМОНТА ИЛИ ИСПРАВЛЕНИЯ.
16. Ограничение ответственности.
ЕСЛИ ИНОЕ НЕ ПРЕДУСМОТРЕНО ДЕЙСТВУЮЩИМ ЗАКОНОДАТЕЛЬСТВОМ ИЛИ СОГЛАШЕНИЕМ СТОРОН,
ЗАКЛЮЧЕННЫМ В ПИСЬМЕННОЙ ФОРМЕ, ПРАВООБЛАДАТЕЛЬ ИЛИ ИНОЕ ЛИЦО, КОТОРОЕ ВНОСИТ
ИЗМЕНЕНИЯ В ПРОГРАММУ И (ИЛИ) ПЕРЕДАЕТ ЕЁ НА УСЛОВИЯХ, СФОРМУЛИРОВАННЫХ ВЫШЕ, НЕ
МОЖЕТ НЕСТИ ОТВЕТСТВЕННОСТЬ ПЕРЕД ВАМИ ЗА ПРИЧИНЕННЫЙ УЩЕРБ, ВКЛЮЧАЯ УЩЕРБ
ОБЩЕГО ЛИБО КОНКРЕТНОГО ХАРАКТЕРА, ПРИЧИНЕННЫЙ СЛУЧАЙНО ИЛИ ЯВЛЯЮЩИЙСЯ
СЛЕДСТВИЕМ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ ЛИБО НЕВОЗМОЖНОСТИ ЕЁ ИСПОЛЬЗОВАНИЯ (В ТОМ
ЧИСЛЕ ЗА УНИЧТОЖЕНИЕ ИЛИ МОДИФИКАЦИЮ ИНФОРМАЦИИ, ЛИБО УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ
ИЛИ ТРЕТЬИМИ ЛИЦАМИ, ЛИБО СБОИ ПРОГРАММЫ ПРИ ВЗАИМОДЕЙСТВИИ С ДРУГИМ ПРОГРАММНЫМ
ОБЕСПЕЧЕНИЕМ), В ТОМ ЧИСЛЕ И В СЛУЧАЯХ, КОГДА ПРАВООБЛАДАТЕЛЬ ИЛИ ТРЕТЬЕ ЛИЦО
ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ПРИЧИНЕНИЯ ТАКИХ УБЫТКОВ.
17. Толкование разделов 15 и 16.
Если отказ от гарантии и ограничение ответственности, представленные выше, по
закону не могут быть применены в соответствии с их условиями, суды,
рассматривающие спор, должны применить действующий закон, который в наибольшей
степени предусматривает абсолютный отказ от всей гражданской ответственности в
связи с Программой, за исключением случаев, когда гарантия или принятие на себя
ответственности за копию программы предоставляется за плату.
КОНЕЦ ОПРЕДЕЛЕНИЙ И УСЛОВИЙ
Порядок применения условий Лицензии к Вашим программам
Если Вы разрабатываете новую программу и хотите, чтобы её использование принесло
максимальную пользу обществу, наилучший способ достичь этого -- сделать её
свободной, чтобы все могли распространять и изменять её на условиях настоящей
Лицензии.
Для этого сделайте так, чтобы программа содержала в себе описанные ниже
уведомления. Самым надежным способом это сделать является включение их в начало
каждого файла исходного текста, чтобы наиболее эффективным образом сообщить об
отсутствии гарантий; каждый файл должен иметь по меньшей мере одну строку с
оповещением об авторских правах и указанием на то, где находится полный текст
уведомлений.
<Строка с названием Программы и информацией о её назначении.>
Copyright © <год выпуска программы в свет> <имя автора>
Эта программа является свободным программным обеспечением: Вы можете
распространять её и (или) изменять, соблюдая условия Сетевой Публичной
Лицензии Vitastor, опубликованной автором Vitastor, либо редакции 1.1
Лицензии, либо (на Ваше усмотрение) любой редакции, выпущенной позже.
Эта программа распространяется в расчете на то, что она окажется полезной,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, включая подразумеваемую гарантию КАЧЕСТВА либо
ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Ознакомьтесь с Сетевой Публичной
Лицензией Vitastor для получения более подробной информации.
Также добавьте информацию о том, как связаться с Вами посредством электронной
или обычной почты.
Если ваша программа взаимодействует с пользователями удаленно через
компьютерную сеть, Вы также должны убедиться, что обеспечили её пользователям
возможность получить её исходные тексты. Например, если Ваша программа является
веб-приложением, её интерфейс может отображать ссылку "Исходные коды", которая
указывает на архив с текстом. Существует много способов, которыми Вы можете
распространять исходные тексты, для разных программ подходят разные решения;
ознакомьтесь с разделом 13 для того, чтобы узнать конкретные требования.

@ -61,7 +61,7 @@ modification follow.
0. Definitions.
"This License" refers to version 1 of the Vitastor Network Public License.
"This License" refers to version 1.1 of the Vitastor Network Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@ -629,7 +629,7 @@ the "copyright" line and a pointer to where the full notice is found.
This program is free software: you can redistribute it and/or modify
it under the terms of the Vitastor Network Public License as published by
the Vitastor Author, either version 1 of the License, or
the Vitastor Author, either version 1.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,

@ -18,15 +18,19 @@ ENV CSI_ENDPOINT=""
RUN apt-get update && \
apt-get install -y wget && \
wget -q -O /etc/apt/trusted.gpg.d/vitastor.gpg https://vitastor.io/debian/pubkey.gpg && \
(echo deb http://vitastor.io/debian buster main > /etc/apt/sources.list.d/vitastor.list) && \
(echo deb http://deb.debian.org/debian buster-backports main > /etc/apt/sources.list.d/backports.list) && \
(echo "APT::Install-Recommends false;" > /etc/apt/apt.conf) && \
apt-get update && \
apt-get install -y e2fsprogs xfsprogs vitastor kmod && \
apt-get install -y e2fsprogs xfsprogs kmod && \
apt-get clean && \
(echo options nbd nbds_max=128 > /etc/modprobe.d/nbd.conf)
COPY --from=build /app/vitastor-csi /bin/
RUN (echo deb http://vitastor.io/debian buster main > /etc/apt/sources.list.d/vitastor.list) && \
wget -q -O /etc/apt/trusted.gpg.d/vitastor.gpg https://vitastor.io/debian/pubkey.gpg && \
apt-get update && \
apt-get install -y vitastor-client && \
apt-get clean
ENTRYPOINT ["/bin/vitastor-csi"]

@ -1,4 +1,4 @@
VERSION ?= v0.7.1
VERSION ?= v0.8.6
all: build push

@ -49,7 +49,7 @@ spec:
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: vitalif/vitastor-csi:v0.7.1
image: vitalif/vitastor-csi:v0.8.6
args:
- "--node=$(NODE_ID)"
- "--endpoint=$(CSI_ENDPOINT)"
@ -102,7 +102,7 @@ spec:
- "--health-port=9898"
env:
- name: CSI_ENDPOINT
value: unix://csi/csi.sock
value: unix:///csi/csi.sock
volumeMounts:
- mountPath: /csi
name: socket-dir

@ -116,7 +116,7 @@ spec:
privileged: true
capabilities:
add: ["SYS_ADMIN"]
image: vitalif/vitastor-csi:v0.7.1
image: vitalif/vitastor-csi:v0.8.6
args:
- "--node=$(NODE_ID)"
- "--endpoint=$(CSI_ENDPOINT)"

@ -5,7 +5,7 @@ package vitastor
const (
vitastorCSIDriverName = "csi.vitastor.io"
vitastorCSIDriverVersion = "0.7.1"
vitastorCSIDriverVersion = "0.8.6"
)
// Config struct fills the parameters of request or user input

@ -6,11 +6,11 @@ package vitastor
import (
"context"
"encoding/json"
"fmt"
"strings"
"bytes"
"strconv"
"time"
"fmt"
"os"
"os/exec"
"io/ioutil"