Compare commits
39 Commits
2da50a7b5a
...
576694c780
Author | SHA1 | Date |
---|---|---|
Vitaliy Filippov | 576694c780 | |
Vitaliy Filippov | 37915d8315 | |
Vitaliy Filippov | 496d6122d0 | |
Vitaliy Filippov | ec5b761903 | |
Vitaliy Filippov | 2d7069abdb | |
Vitaliy Filippov | b032cb767a | |
Vitaliy Filippov | 6203b12203 | |
Vitaliy Filippov | c51644727b | |
Vitaliy Filippov | af651aef24 | |
Vitaliy Filippov | b4962e636d | |
Vitaliy Filippov | 2aaa7f13c4 | |
Vitaliy Filippov | ba3eb5c0f5 | |
Vitaliy Filippov | cac938e5b4 | |
Vitaliy Filippov | 6771f766af | |
Vitaliy Filippov | 9d354ae4e5 | |
Vitaliy Filippov | a6067124fc | |
Vitaliy Filippov | 58b04953e3 | |
Vitaliy Filippov | da4f1def94 | |
Vitaliy Filippov | 14a6ddcf3f | |
Vitaliy Filippov | 5e61f34f1e | |
Vitaliy Filippov | d362602c17 | |
Vitaliy Filippov | 4b285437fe | |
Vitaliy Filippov | b9d21348b3 | |
Vitaliy Filippov | 6865ffa9e7 | |
Vitaliy Filippov | e5cc6cb30e | |
Vitaliy Filippov | ca2a8fe464 | |
Vitaliy Filippov | 1d2a6c20b4 | |
Vitaliy Filippov | c50b256cef | |
Vitaliy Filippov | 1db4d8668d | |
Vitaliy Filippov | 447569cae6 | |
Vitaliy Filippov | 811d6c71f8 | |
Vitaliy Filippov | fca151336f | |
Vitaliy Filippov | 0ff803138a | |
Vitaliy Filippov | 938991b102 | |
Vitaliy Filippov | d00d4dbac0 | |
Vitaliy Filippov | 5d9d6f32a0 | |
Vitaliy Filippov | 5280d1d561 | |
Vitaliy Filippov | 317b0feb0a | |
Vitaliy Filippov | 247f0552db |
|
@ -2,6 +2,6 @@ cmake_minimum_required(VERSION 2.8.12)
|
||||||
|
|
||||||
project(vitastor)
|
project(vitastor)
|
||||||
|
|
||||||
set(VERSION "1.3.1")
|
set(VERSION "1.4.0")
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
VERSION ?= v1.3.1
|
VERSION ?= v1.4.0
|
||||||
|
|
||||||
all: build push
|
all: build push
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ spec:
|
||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
allowPrivilegeEscalation: true
|
allowPrivilegeEscalation: true
|
||||||
image: vitalif/vitastor-csi:v1.3.1
|
image: vitalif/vitastor-csi:v1.4.0
|
||||||
args:
|
args:
|
||||||
- "--node=$(NODE_ID)"
|
- "--node=$(NODE_ID)"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
|
|
|
@ -121,7 +121,7 @@ spec:
|
||||||
privileged: true
|
privileged: true
|
||||||
capabilities:
|
capabilities:
|
||||||
add: ["SYS_ADMIN"]
|
add: ["SYS_ADMIN"]
|
||||||
image: vitalif/vitastor-csi:v1.3.1
|
image: vitalif/vitastor-csi:v1.4.0
|
||||||
args:
|
args:
|
||||||
- "--node=$(NODE_ID)"
|
- "--node=$(NODE_ID)"
|
||||||
- "--endpoint=$(CSI_ENDPOINT)"
|
- "--endpoint=$(CSI_ENDPOINT)"
|
||||||
|
|
|
@ -5,7 +5,7 @@ package vitastor
|
||||||
|
|
||||||
const (
|
const (
|
||||||
vitastorCSIDriverName = "csi.vitastor.io"
|
vitastorCSIDriverName = "csi.vitastor.io"
|
||||||
vitastorCSIDriverVersion = "1.3.1"
|
vitastorCSIDriverVersion = "1.4.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Config struct fills the parameters of request or user input
|
// Config struct fills the parameters of request or user input
|
||||||
|
|
|
@ -188,7 +188,6 @@ func (ns *NodeServer) unmapNbd(devicePath string)
|
||||||
|
|
||||||
func findByPidFile(pidFile string) (*os.Process, error)
|
func findByPidFile(pidFile string) (*os.Process, error)
|
||||||
{
|
{
|
||||||
klog.Infof("killing process with PID from file %s", pidFile)
|
|
||||||
pidBuf, err := os.ReadFile(pidFile)
|
pidBuf, err := os.ReadFile(pidFile)
|
||||||
if (err != nil)
|
if (err != nil)
|
||||||
{
|
{
|
||||||
|
@ -209,6 +208,7 @@ func findByPidFile(pidFile string) (*os.Process, error)
|
||||||
|
|
||||||
func killByPidFile(pidFile string) error
|
func killByPidFile(pidFile string) error
|
||||||
{
|
{
|
||||||
|
klog.Infof("killing process with PID from file %s", pidFile)
|
||||||
proc, err := findByPidFile(pidFile)
|
proc, err := findByPidFile(pidFile)
|
||||||
if (err != nil)
|
if (err != nil)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
vitastor (1.3.1-1) unstable; urgency=medium
|
vitastor (1.4.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
* Bugfixes
|
* Bugfixes
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,8 @@ RUN set -e -x; \
|
||||||
mkdir -p /root/packages/vitastor-$REL; \
|
mkdir -p /root/packages/vitastor-$REL; \
|
||||||
rm -rf /root/packages/vitastor-$REL/*; \
|
rm -rf /root/packages/vitastor-$REL/*; \
|
||||||
cd /root/packages/vitastor-$REL; \
|
cd /root/packages/vitastor-$REL; \
|
||||||
cp -r /root/vitastor vitastor-1.3.1; \
|
cp -r /root/vitastor vitastor-1.4.0; \
|
||||||
cd vitastor-1.3.1; \
|
cd vitastor-1.4.0; \
|
||||||
ln -s /root/fio-build/fio-*/ ./fio; \
|
ln -s /root/fio-build/fio-*/ ./fio; \
|
||||||
FIO=$(head -n1 fio/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \
|
FIO=$(head -n1 fio/debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \
|
||||||
ls /usr/include/linux/raw.h || cp ./debian/raw.h /usr/include/linux/raw.h; \
|
ls /usr/include/linux/raw.h || cp ./debian/raw.h /usr/include/linux/raw.h; \
|
||||||
|
@ -49,8 +49,8 @@ RUN set -e -x; \
|
||||||
rm -rf a b; \
|
rm -rf a b; \
|
||||||
echo "dep:fio=$FIO" > debian/fio_version; \
|
echo "dep:fio=$FIO" > debian/fio_version; \
|
||||||
cd /root/packages/vitastor-$REL; \
|
cd /root/packages/vitastor-$REL; \
|
||||||
tar --sort=name --mtime='2020-01-01' --owner=0 --group=0 --exclude=debian -cJf vitastor_1.3.1.orig.tar.xz vitastor-1.3.1; \
|
tar --sort=name --mtime='2020-01-01' --owner=0 --group=0 --exclude=debian -cJf vitastor_1.4.0.orig.tar.xz vitastor-1.4.0; \
|
||||||
cd vitastor-1.3.1; \
|
cd vitastor-1.4.0; \
|
||||||
V=$(head -n1 debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \
|
V=$(head -n1 debian/changelog | perl -pe 's/^.*\((.*?)\).*$/$1/'); \
|
||||||
DEBFULLNAME="Vitaliy Filippov <vitalif@yourcmc.ru>" dch -D $REL -v "$V""$REL" "Rebuild for $REL"; \
|
DEBFULLNAME="Vitaliy Filippov <vitalif@yourcmc.ru>" dch -D $REL -v "$V""$REL" "Rebuild for $REL"; \
|
||||||
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage --jobs=auto -sa; \
|
DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage --jobs=auto -sa; \
|
||||||
|
|
|
@ -37,6 +37,7 @@ Vitastor CSI supports:
|
||||||
- Volume snapshots. Example: [snapshot class](../../csi/deploy/example-snapshot-class.yaml), [snapshot](../../csi/deploy/example-snapshot.yaml), [clone](../../csi/deploy/example-snapshot-clone.yaml)
|
- Volume snapshots. Example: [snapshot class](../../csi/deploy/example-snapshot-class.yaml), [snapshot](../../csi/deploy/example-snapshot.yaml), [clone](../../csi/deploy/example-snapshot-clone.yaml)
|
||||||
- [VDUSE](../usage/qemu.en.md#vduse) (preferred) and [NBD](../usage/nbd.en.md) device mapping methods
|
- [VDUSE](../usage/qemu.en.md#vduse) (preferred) and [NBD](../usage/nbd.en.md) device mapping methods
|
||||||
- Upgrades with VDUSE - new handler processes are restarted when CSI pods are restarted themselves
|
- Upgrades with VDUSE - new handler processes are restarted when CSI pods are restarted themselves
|
||||||
|
- VDUSE daemon auto-restart - handler processes are automatically restarted if they crash due to a bug in Vitastor client code
|
||||||
- Multiple clusters by using multiple configuration files in ConfigMap.
|
- Multiple clusters by using multiple configuration files in ConfigMap.
|
||||||
|
|
||||||
Remember that to use snapshots with CSI you also have to install [Snapshot Controller and CRDs](https://kubernetes-csi.github.io/docs/snapshot-controller.html#deployment).
|
Remember that to use snapshots with CSI you also have to install [Snapshot Controller and CRDs](https://kubernetes-csi.github.io/docs/snapshot-controller.html#deployment).
|
||||||
|
|
|
@ -37,6 +37,7 @@ CSI-плагин Vitastor поддерживает:
|
||||||
- Снимки томов. Пример: [класс снимков](../../csi/deploy/example-snapshot-class.yaml), [снимок](../../csi/deploy/example-snapshot.yaml), [клон снимка](../../csi/deploy/example-snapshot-clone.yaml)
|
- Снимки томов. Пример: [класс снимков](../../csi/deploy/example-snapshot-class.yaml), [снимок](../../csi/deploy/example-snapshot.yaml), [клон снимка](../../csi/deploy/example-snapshot-clone.yaml)
|
||||||
- Способы подключения устройств [VDUSE](../usage/qemu.ru.md#vduse) (предпочитаемый) и [NBD](../usage/nbd.ru.md)
|
- Способы подключения устройств [VDUSE](../usage/qemu.ru.md#vduse) (предпочитаемый) и [NBD](../usage/nbd.ru.md)
|
||||||
- Обновление при использовании VDUSE - новые процессы-обработчики устройств успешно перезапускаются вместе с самими подами CSI
|
- Обновление при использовании VDUSE - новые процессы-обработчики устройств успешно перезапускаются вместе с самими подами CSI
|
||||||
|
- Автоперезауск демонов VDUSE - процесс-обработчик автоматически перезапустится, если он внезапно упадёт из-за бага в коде клиента Vitastor
|
||||||
- Несколько кластеров через задание нескольких файлов конфигурации в ConfigMap.
|
- Несколько кластеров через задание нескольких файлов конфигурации в ConfigMap.
|
||||||
|
|
||||||
Не забывайте, что для использования снимков нужно сначала установить [контроллер снимков и CRD](https://kubernetes-csi.github.io/docs/snapshot-controller.html#deployment).
|
Не забывайте, что для использования снимков нужно сначала установить [контроллер снимков и CRD](https://kubernetes-csi.github.io/docs/snapshot-controller.html#deployment).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "vitastor-mon",
|
"name": "vitastor-mon",
|
||||||
"version": "1.3.1",
|
"version": "1.4.0",
|
||||||
"description": "Vitastor SDS monitor service",
|
"description": "Vitastor SDS monitor service",
|
||||||
"main": "mon-main.js",
|
"main": "mon-main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -50,7 +50,7 @@ from cinder.volume import configuration
|
||||||
from cinder.volume import driver
|
from cinder.volume import driver
|
||||||
from cinder.volume import volume_utils
|
from cinder.volume import volume_utils
|
||||||
|
|
||||||
VERSION = '1.3.1'
|
VERSION = '1.4.0'
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -24,4 +24,4 @@ rm fio
|
||||||
mv fio-copy fio
|
mv fio-copy fio
|
||||||
FIO=`rpm -qi fio | perl -e 'while(<>) { /^Epoch[\s:]+(\S+)/ && print "$1:"; /^Version[\s:]+(\S+)/ && print $1; /^Release[\s:]+(\S+)/ && print "-$1"; }'`
|
FIO=`rpm -qi fio | perl -e 'while(<>) { /^Epoch[\s:]+(\S+)/ && print "$1:"; /^Version[\s:]+(\S+)/ && print $1; /^Release[\s:]+(\S+)/ && print "-$1"; }'`
|
||||||
perl -i -pe 's/(Requires:\s*fio)([^\n]+)?/$1 = '$FIO'/' $VITASTOR/rpm/vitastor-el$EL.spec
|
perl -i -pe 's/(Requires:\s*fio)([^\n]+)?/$1 = '$FIO'/' $VITASTOR/rpm/vitastor-el$EL.spec
|
||||||
tar --transform 's#^#vitastor-1.3.1/#' --exclude 'rpm/*.rpm' -czf $VITASTOR/../vitastor-1.3.1$(rpm --eval '%dist').tar.gz *
|
tar --transform 's#^#vitastor-1.4.0/#' --exclude 'rpm/*.rpm' -czf $VITASTOR/../vitastor-1.4.0$(rpm --eval '%dist').tar.gz *
|
||||||
|
|
|
@ -36,7 +36,7 @@ ADD . /root/vitastor
|
||||||
RUN set -e; \
|
RUN set -e; \
|
||||||
cd /root/vitastor/rpm; \
|
cd /root/vitastor/rpm; \
|
||||||
sh build-tarball.sh; \
|
sh build-tarball.sh; \
|
||||||
cp /root/vitastor-1.3.1.el7.tar.gz ~/rpmbuild/SOURCES; \
|
cp /root/vitastor-1.4.0.el7.tar.gz ~/rpmbuild/SOURCES; \
|
||||||
cp vitastor-el7.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
cp vitastor-el7.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
||||||
cd ~/rpmbuild/SPECS/; \
|
cd ~/rpmbuild/SPECS/; \
|
||||||
rpmbuild -ba vitastor.spec; \
|
rpmbuild -ba vitastor.spec; \
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
Name: vitastor
|
Name: vitastor
|
||||||
Version: 1.3.1
|
Version: 1.4.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Vitastor, a fast software-defined clustered block storage
|
Summary: Vitastor, a fast software-defined clustered block storage
|
||||||
|
|
||||||
License: Vitastor Network Public License 1.1
|
License: Vitastor Network Public License 1.1
|
||||||
URL: https://vitastor.io/
|
URL: https://vitastor.io/
|
||||||
Source0: vitastor-1.3.1.el7.tar.gz
|
Source0: vitastor-1.4.0.el7.tar.gz
|
||||||
|
|
||||||
BuildRequires: liburing-devel >= 0.6
|
BuildRequires: liburing-devel >= 0.6
|
||||||
BuildRequires: gperftools-devel
|
BuildRequires: gperftools-devel
|
||||||
|
|
|
@ -35,7 +35,7 @@ ADD . /root/vitastor
|
||||||
RUN set -e; \
|
RUN set -e; \
|
||||||
cd /root/vitastor/rpm; \
|
cd /root/vitastor/rpm; \
|
||||||
sh build-tarball.sh; \
|
sh build-tarball.sh; \
|
||||||
cp /root/vitastor-1.3.1.el8.tar.gz ~/rpmbuild/SOURCES; \
|
cp /root/vitastor-1.4.0.el8.tar.gz ~/rpmbuild/SOURCES; \
|
||||||
cp vitastor-el8.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
cp vitastor-el8.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
||||||
cd ~/rpmbuild/SPECS/; \
|
cd ~/rpmbuild/SPECS/; \
|
||||||
rpmbuild -ba vitastor.spec; \
|
rpmbuild -ba vitastor.spec; \
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
Name: vitastor
|
Name: vitastor
|
||||||
Version: 1.3.1
|
Version: 1.4.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Vitastor, a fast software-defined clustered block storage
|
Summary: Vitastor, a fast software-defined clustered block storage
|
||||||
|
|
||||||
License: Vitastor Network Public License 1.1
|
License: Vitastor Network Public License 1.1
|
||||||
URL: https://vitastor.io/
|
URL: https://vitastor.io/
|
||||||
Source0: vitastor-1.3.1.el8.tar.gz
|
Source0: vitastor-1.4.0.el8.tar.gz
|
||||||
|
|
||||||
BuildRequires: liburing-devel >= 0.6
|
BuildRequires: liburing-devel >= 0.6
|
||||||
BuildRequires: gperftools-devel
|
BuildRequires: gperftools-devel
|
||||||
|
|
|
@ -18,7 +18,7 @@ ADD . /root/vitastor
|
||||||
RUN set -e; \
|
RUN set -e; \
|
||||||
cd /root/vitastor/rpm; \
|
cd /root/vitastor/rpm; \
|
||||||
sh build-tarball.sh; \
|
sh build-tarball.sh; \
|
||||||
cp /root/vitastor-1.3.1.el9.tar.gz ~/rpmbuild/SOURCES; \
|
cp /root/vitastor-1.4.0.el9.tar.gz ~/rpmbuild/SOURCES; \
|
||||||
cp vitastor-el9.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
cp vitastor-el9.spec ~/rpmbuild/SPECS/vitastor.spec; \
|
||||||
cd ~/rpmbuild/SPECS/; \
|
cd ~/rpmbuild/SPECS/; \
|
||||||
rpmbuild -ba vitastor.spec; \
|
rpmbuild -ba vitastor.spec; \
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
Name: vitastor
|
Name: vitastor
|
||||||
Version: 1.3.1
|
Version: 1.4.0
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Vitastor, a fast software-defined clustered block storage
|
Summary: Vitastor, a fast software-defined clustered block storage
|
||||||
|
|
||||||
License: Vitastor Network Public License 1.1
|
License: Vitastor Network Public License 1.1
|
||||||
URL: https://vitastor.io/
|
URL: https://vitastor.io/
|
||||||
Source0: vitastor-1.3.1.el9.tar.gz
|
Source0: vitastor-1.4.0.el9.tar.gz
|
||||||
|
|
||||||
BuildRequires: liburing-devel >= 0.6
|
BuildRequires: liburing-devel >= 0.6
|
||||||
BuildRequires: gperftools-devel
|
BuildRequires: gperftools-devel
|
||||||
|
|
|
@ -16,7 +16,7 @@ if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/local/?$")
|
||||||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_definitions(-DVERSION="1.3.1")
|
add_definitions(-DVERSION="1.4.0")
|
||||||
add_definitions(-Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith -fdiagnostics-color=always -fno-omit-frame-pointer -I ${CMAKE_SOURCE_DIR}/src)
|
add_definitions(-Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith -fdiagnostics-color=always -fno-omit-frame-pointer -I ${CMAKE_SOURCE_DIR}/src)
|
||||||
add_link_options(-fno-omit-frame-pointer)
|
add_link_options(-fno-omit-frame-pointer)
|
||||||
if (${WITH_ASAN})
|
if (${WITH_ASAN})
|
||||||
|
@ -181,23 +181,29 @@ target_link_libraries(vitastor-nbd
|
||||||
vitastor_client
|
vitastor_client
|
||||||
)
|
)
|
||||||
|
|
||||||
# vitastor-kv
|
# libvitastor_kv.so
|
||||||
add_executable(vitastor-kv
|
add_library(vitastor_kv SHARED
|
||||||
kv_cli.cpp
|
|
||||||
kv_db.cpp
|
kv_db.cpp
|
||||||
kv_db.h
|
kv_db.h
|
||||||
)
|
)
|
||||||
target_link_libraries(vitastor-kv
|
target_link_libraries(vitastor_kv
|
||||||
vitastor_client
|
vitastor_client
|
||||||
)
|
)
|
||||||
|
set_target_properties(vitastor_kv PROPERTIES VERSION ${VERSION} SOVERSION 0)
|
||||||
|
|
||||||
|
# vitastor-kv
|
||||||
|
add_executable(vitastor-kv
|
||||||
|
kv_cli.cpp
|
||||||
|
)
|
||||||
|
target_link_libraries(vitastor-kv
|
||||||
|
vitastor_kv
|
||||||
|
)
|
||||||
|
|
||||||
add_executable(vitastor-kv-stress
|
add_executable(vitastor-kv-stress
|
||||||
kv_stress.cpp
|
kv_stress.cpp
|
||||||
kv_db.cpp
|
|
||||||
kv_db.h
|
|
||||||
)
|
)
|
||||||
target_link_libraries(vitastor-kv-stress
|
target_link_libraries(vitastor-kv-stress
|
||||||
vitastor_client
|
vitastor_kv
|
||||||
)
|
)
|
||||||
|
|
||||||
# vitastor-nfs
|
# vitastor-nfs
|
||||||
|
@ -213,6 +219,7 @@ add_executable(vitastor-nfs
|
||||||
)
|
)
|
||||||
target_link_libraries(vitastor-nfs
|
target_link_libraries(vitastor-nfs
|
||||||
vitastor_client
|
vitastor_client
|
||||||
|
vitastor_kv
|
||||||
)
|
)
|
||||||
|
|
||||||
# vitastor-cli
|
# vitastor-cli
|
||||||
|
|
|
@ -558,13 +558,14 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
if (stable_count >= stable_alloc)
|
if (stable_count >= stable_alloc)
|
||||||
{
|
{
|
||||||
stable_alloc *= 2;
|
stable_alloc *= 2;
|
||||||
stable = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
obj_ver_id* nst = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
||||||
if (!stable)
|
if (!nst)
|
||||||
{
|
{
|
||||||
op->retval = -ENOMEM;
|
op->retval = -ENOMEM;
|
||||||
FINISH_OP(op);
|
FINISH_OP(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
stable = nst;
|
||||||
}
|
}
|
||||||
stable[stable_count++] = {
|
stable[stable_count++] = {
|
||||||
.oid = clean_it->first,
|
.oid = clean_it->first,
|
||||||
|
@ -642,8 +643,8 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
if (stable_count >= stable_alloc)
|
if (stable_count >= stable_alloc)
|
||||||
{
|
{
|
||||||
stable_alloc += 32768;
|
stable_alloc += 32768;
|
||||||
stable = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
obj_ver_id *nst = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
||||||
if (!stable)
|
if (!nst)
|
||||||
{
|
{
|
||||||
if (unstable)
|
if (unstable)
|
||||||
free(unstable);
|
free(unstable);
|
||||||
|
@ -651,6 +652,7 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
FINISH_OP(op);
|
FINISH_OP(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
stable = nst;
|
||||||
}
|
}
|
||||||
stable[stable_count++] = dirty_it->first;
|
stable[stable_count++] = dirty_it->first;
|
||||||
}
|
}
|
||||||
|
@ -666,8 +668,8 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
if (unstable_count >= unstable_alloc)
|
if (unstable_count >= unstable_alloc)
|
||||||
{
|
{
|
||||||
unstable_alloc += 32768;
|
unstable_alloc += 32768;
|
||||||
unstable = (obj_ver_id*)realloc(unstable, sizeof(obj_ver_id) * unstable_alloc);
|
obj_ver_id *nst = (obj_ver_id*)realloc(unstable, sizeof(obj_ver_id) * unstable_alloc);
|
||||||
if (!unstable)
|
if (!nst)
|
||||||
{
|
{
|
||||||
if (stable)
|
if (stable)
|
||||||
free(stable);
|
free(stable);
|
||||||
|
@ -675,6 +677,7 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
FINISH_OP(op);
|
FINISH_OP(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
unstable = nst;
|
||||||
}
|
}
|
||||||
unstable[unstable_count++] = dirty_it->first;
|
unstable[unstable_count++] = dirty_it->first;
|
||||||
}
|
}
|
||||||
|
@ -694,8 +697,8 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
if (stable_count+unstable_count > stable_alloc)
|
if (stable_count+unstable_count > stable_alloc)
|
||||||
{
|
{
|
||||||
stable_alloc = stable_count+unstable_count;
|
stable_alloc = stable_count+unstable_count;
|
||||||
stable = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
obj_ver_id *nst = (obj_ver_id*)realloc(stable, sizeof(obj_ver_id) * stable_alloc);
|
||||||
if (!stable)
|
if (!nst)
|
||||||
{
|
{
|
||||||
if (unstable)
|
if (unstable)
|
||||||
free(unstable);
|
free(unstable);
|
||||||
|
@ -703,6 +706,7 @@ void blockstore_impl_t::process_list(blockstore_op_t *op)
|
||||||
FINISH_OP(op);
|
FINISH_OP(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
stable = nst;
|
||||||
}
|
}
|
||||||
// Copy unstable entries
|
// Copy unstable entries
|
||||||
for (int i = 0; i < unstable_count; i++)
|
for (int i = 0; i < unstable_count; i++)
|
||||||
|
|
|
@ -28,7 +28,7 @@ struct etcd_kv_t
|
||||||
{
|
{
|
||||||
std::string key;
|
std::string key;
|
||||||
json11::Json value;
|
json11::Json value;
|
||||||
uint64_t mod_revision;
|
uint64_t mod_revision = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct pg_config_t
|
struct pg_config_t
|
||||||
|
|
754
src/nfs_conn.cpp
754
src/nfs_conn.cpp
File diff suppressed because it is too large
Load Diff
|
@ -4,6 +4,7 @@
|
||||||
#include "epoll_manager.h"
|
#include "epoll_manager.h"
|
||||||
#include "nfs_portmap.h"
|
#include "nfs_portmap.h"
|
||||||
#include "nfs/xdr_impl.h"
|
#include "nfs/xdr_impl.h"
|
||||||
|
#include "kv_db.h"
|
||||||
|
|
||||||
#define RPC_INIT_BUF_SIZE 32768
|
#define RPC_INIT_BUF_SIZE 32768
|
||||||
|
|
||||||
|
@ -16,6 +17,22 @@ struct nfs_dir_t
|
||||||
timespec mtime;
|
timespec mtime;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct list_cookie_t
|
||||||
|
{
|
||||||
|
uint64_t dir_ino, cookieverf, cookie;
|
||||||
|
};
|
||||||
|
|
||||||
|
inline bool operator < (const list_cookie_t & a, const list_cookie_t & b)
|
||||||
|
{
|
||||||
|
return a.dir_ino < b.dir_ino || a.dir_ino == b.dir_ino &&
|
||||||
|
(a.cookieverf < b.cookieverf || a.cookieverf == b.cookieverf && a.cookie < b.cookie);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct list_cookie_val_t
|
||||||
|
{
|
||||||
|
std::string key;
|
||||||
|
};
|
||||||
|
|
||||||
class nfs_proxy_t
|
class nfs_proxy_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -27,6 +44,7 @@ public:
|
||||||
std::string export_root;
|
std::string export_root;
|
||||||
bool portmap_enabled;
|
bool portmap_enabled;
|
||||||
unsigned nfs_port;
|
unsigned nfs_port;
|
||||||
|
int readdir_getattr_parallel = 8, id_alloc_batch_size = 200;
|
||||||
|
|
||||||
pool_id_t default_pool_id;
|
pool_id_t default_pool_id;
|
||||||
|
|
||||||
|
@ -35,6 +53,12 @@ public:
|
||||||
epoll_manager_t *epmgr = NULL;
|
epoll_manager_t *epmgr = NULL;
|
||||||
cluster_client_t *cli = NULL;
|
cluster_client_t *cli = NULL;
|
||||||
cli_tool_t *cmd = NULL;
|
cli_tool_t *cmd = NULL;
|
||||||
|
kv_dbw_t *db = NULL;
|
||||||
|
uint64_t root_uid = 0, root_gid = 0;
|
||||||
|
std::map<list_cookie_t, list_cookie_val_t> list_cookies;
|
||||||
|
uint64_t fs_min_id = 0, fs_max_id = 0;
|
||||||
|
uint64_t fs_next_id = 0, fs_allocated_id = 0;
|
||||||
|
std::vector<uint64_t> unallocated_ids;
|
||||||
|
|
||||||
std::vector<XDR*> xdr_pool;
|
std::vector<XDR*> xdr_pool;
|
||||||
|
|
||||||
|
@ -106,6 +130,8 @@ struct extend_write_t
|
||||||
struct extend_inode_t
|
struct extend_inode_t
|
||||||
{
|
{
|
||||||
uint64_t cur_extend = 0, next_extend = 0;
|
uint64_t cur_extend = 0, next_extend = 0;
|
||||||
|
std::string old_ientry;
|
||||||
|
json11::Json::object attrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
class nfs_client_t
|
class nfs_client_t
|
||||||
|
|
|
@ -6,7 +6,7 @@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
Name: Vitastor
|
Name: Vitastor
|
||||||
Description: Vitastor client library
|
Description: Vitastor client library
|
||||||
Version: 1.3.1
|
Version: 1.4.0
|
||||||
Libs: -L${libdir} -lvitastor_client
|
Libs: -L${libdir} -lvitastor_client
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue