From 14f66e3ff589c7eff34ecb224a2ebc67555d3959 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Tue, 1 Sep 2015 22:41:06 +0200 Subject: [PATCH 1/7] nbd: import from oldpackages and make myself maintainer Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 net/nbd/Makefile diff --git a/net/nbd/Makefile b/net/nbd/Makefile new file mode 100644 index 000000000..6037a0957 --- /dev/null +++ b/net/nbd/Makefile @@ -0,0 +1,53 @@ +# +# Copyright (C) 2006-2011 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=nbd +PKG_VERSION:=2.9.23 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=@SF/nbd +PKG_MD5SUM:=065b6ded41887a08be6dbb8d77280f24 +PKG_MAINTAINER:=Marcin Jurkowski + +PKG_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk + +# -liconv due to glib2, to be revisited later +include $(INCLUDE_DIR)/nls.mk + +PKG_BUILD_DEPENDS:=glib2 libintl + +define Package/nbd + SECTION:=net + CATEGORY:=Network + TITLE:=Network Block Device utilities + URL:=http://nbd.sourceforge.net + DEPENDS:=+kmod-nbd +endef + +define Package/nbd/description + This package contains the network block device client. +endef + +CONFIGURE_ARGS+= \ + --disable-glibtest + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + nbd-client +endef + +define Package/nbd/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nbd-client $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,nbd)) From 9bf1fa66225fe95eb29c75249fa5821f5159ab93 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Sat, 2 Mar 2013 13:32:29 +0000 Subject: [PATCH 2/7] nbd: new package nbd-server Network block device server allows to export a block device from router to remote host. This is particularly useful if no network filesystem server is feasible or direct access to a block device is needed. It's been tested for nearly a month on ar71xx (TL-WR842ND) and proved to be very stable and efficient solution. The package comes with init.d script and conf.d file allowing to configure most nbd-server options using standard uci interface. Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 31 +++++++++- net/nbd/files/nbd-server.conf | 31 ++++++++++ net/nbd/files/nbd-server.init | 108 ++++++++++++++++++++++++++++++++++ 3 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 net/nbd/files/nbd-server.conf create mode 100644 net/nbd/files/nbd-server.init diff --git a/net/nbd/Makefile b/net/nbd/Makefile index 6037a0957..dbe61c7c4 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -37,12 +37,24 @@ define Package/nbd/description This package contains the network block device client. endef +define Package/nbd-server + SECTION:=net + CATEGORY:=Network + TITLE:=Network Block Device Server + URL:=http://nbd.sourceforge.net + DEPENDS:=+glib2 +endef + +define Package/nbd-server/description + This package contains the network block device server. +endef + CONFIGURE_ARGS+= \ --disable-glibtest define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ - nbd-client + nbd-client nbd-server endef define Package/nbd/install @@ -51,3 +63,20 @@ define Package/nbd/install endef $(eval $(call BuildPackage,nbd)) + +define Package/nbd-server/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/nbd-server $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/nbd-server.conf $(1)/etc/config/nbd-server + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/nbd-server.init $(1)/etc/init.d/nbd-server +endef + +define Package/nbd-server/conffiles +/etc/config/nbd-server +/etc/nbd-server/conf.d +/etc/nbd-server/allow +endef + +$(eval $(call BuildPackage,nbd-server)) diff --git a/net/nbd/files/nbd-server.conf b/net/nbd/files/nbd-server.conf new file mode 100644 index 000000000..ec9a1c3e8 --- /dev/null +++ b/net/nbd/files/nbd-server.conf @@ -0,0 +1,31 @@ +config nbd-server + option enabled 0 +# option port 10809 +# option user root +# option group root +# option allowlist 0 +# option includedir '/etc/nbd-server/conf.d' +# option listenaddr '0.0.0.0' +# option oldstyle 0 + +config share usb_sda1 + option filename '/dev/sda1' +# option authfile '/etc/nbd-server/allow' +# option timeout 0 +# option flush 0 +# option fua 0 +# option rotational 0 +# option sync 0 +# option discard 0 +# option maxconnections 10 +# option filesize 1000000 +# option multifile 0 +# option copyonwrite 0 +# option sparse_cow 1 +# option readonly 0 +# option prerun '/bin/true' +# option postrun '/bin/true' +# option virtstyle 'ipliteral' +# option oldstyle_port 12345 +# option oldstyle_listenaddr '0.0.0.0' + diff --git a/net/nbd/files/nbd-server.init b/net/nbd/files/nbd-server.init new file mode 100644 index 000000000..7759219a8 --- /dev/null +++ b/net/nbd/files/nbd-server.init @@ -0,0 +1,108 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2012 OpenWrt.org + +START=60 +SERVICE_USE_PID=1 + +CONFIGFILE="/var/etc/nbd-server.conf" + + +append_plain() { + echo "$1" >> $CONFIGFILE +} + +append_val_str() { + local resultname="$1" + local cfg="$2" + local uciname="${3:-$1}" + local value= + + config_get value "$cfg" "$uciname" + + if [ -z "$value" ]; then + return + fi + append_plain "$resultname = $value" +} + +append_val_bool() { + local resultname="$1" + local cfg="$2" + local uciname="${3:-$1}" + local value= + + config_get_bool value "$cfg" "$uciname" + if [ -z "$value" ]; then + return + fi + + [ $value == 1 ] && value="true" || value="false" + append_plain "$resultname = $value" +} + +config_handle_generic() { + local cfg="$1" + + append_plain "[generic]" + append_val_str user "$cfg" + append_val_str group "$cfg" + append_val_str port "$cfg" + append_val_str listenaddr "$cfg" + append_val_bool allowlist "$cfg" + append_val_str includedir "$cfg" + append_val_bool oldstyle "$cfg" + + config_get_bool SERVICE_ENABLED "$cfg" enabled 0 +} + +config_handle_share() { + local cfg="$1" + + append_plain + append_plain "[$cfg]" + append_val_str exportname "$cfg" filename + append_val_str timeout "$cfg" + append_val_str maxconnections "$cfg" + append_val_str authfile "$cfg" + append_val_str filesize "$cfg" + append_val_str readonly "$cfg" + append_val_str multifile "$cfg" + append_val_str copyonwrite "$cfg" + append_val_bool sparse_cow "$cfg" + append_val_bool flush "$cfg" + append_val_bool fua "$cfg" + append_val_bool rotational "$cfg" + append_val_bool sync "$cfg" + append_val_bool discard "$cfg" + append_val_str prerun "$cfg" + append_val_str postrun "$cfg" + append_val_str virtstyle "$cfg" + append_val_str port "$cfg" oldstyle_port + append_val_str listenaddr "$cfg" oldstyle_listenaddr +} + +config_read() { + + mkdir -p $(dirname $CONFIGFILE) + echo -n > $CONFIGFILE + + config_load nbd-server + config_foreach config_handle_generic nbd-server + config_foreach config_handle_share share +} + +start() { + config_read + + if [ "$SERVICE_ENABLED" = "1" ]; then + service_start /usr/bin/nbd-server \ + --pid-file /var/run/nbd-server.pid \ + --config-file=$CONFIGFILE + fi +} + +stop() { + service_stop /usr/bin/nbd-server +} + + From 0c06e2a080727b4bc66f22cfd7c7d249203f69b9 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 00:27:36 +0200 Subject: [PATCH 3/7] nbd: add nbd-client init script Adds init.d and config files for nbd-client. Each section holds parameters of one block device, where section name (eg. nbd0) is NBD device name. Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 8 ++++ net/nbd/files/nbd-client.conf | 9 +++++ net/nbd/files/nbd-client.init | 69 +++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 net/nbd/files/nbd-client.conf create mode 100644 net/nbd/files/nbd-client.init diff --git a/net/nbd/Makefile b/net/nbd/Makefile index dbe61c7c4..aea9e4bfb 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -60,6 +60,14 @@ endef define Package/nbd/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nbd-client $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/nbd-client.conf $(1)/etc/config/nbd-client + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/nbd-client.init $(1)/etc/init.d/nbd-client +endef + +define Package/nbd/conffiles +/etc/config/nbd-client endef $(eval $(call BuildPackage,nbd)) diff --git a/net/nbd/files/nbd-client.conf b/net/nbd/files/nbd-client.conf new file mode 100644 index 000000000..e355c6163 --- /dev/null +++ b/net/nbd/files/nbd-client.conf @@ -0,0 +1,9 @@ +config nbd-client nbd0 + option enabled '0' + option server '127.0.0.1' + option port 10809 + option sdp 0 + option swap 0 + option persist 0 + option blocksize 1024 + option exportname foo diff --git a/net/nbd/files/nbd-client.init b/net/nbd/files/nbd-client.init new file mode 100644 index 000000000..e10c22044 --- /dev/null +++ b/net/nbd/files/nbd-client.init @@ -0,0 +1,69 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2015 OpenWrt.org + +START=90 +STOP=10 +USE_PROCD=1 + +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val + + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" +} + +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val + + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && procd_append_param command "$opt" +} + +start_instance() { + local cfg="$1" + local enabled + + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 + + procd_open_instance + + procd_set_param command /usr/sbin/nbd-client + + append_arg "$cfg" server + append_arg "$cfg" port + # device path + procd_append_param command "/dev/$cfg" + procd_append_param command -nofork + append_bool "$cfg" sdp "-sdp" + append_bool "$cfg" swap "-swap" + append_bool "$cfg" persist "-persist" + append_arg "$cfg" blocksize "-block-size" + append_arg "$cfg" timeout "-timeout" + append_arg "$cfg" exportname "-name" + + procd_close_instance +} + +service_triggers() { + procd_add_reload_trigger "nbd-client" +} + +start_service() { + config_load nbd-client + config_foreach start_instance nbd-client +} + +stop_service() { + for dev in /dev/nbd*; do + nbd-client -d $dev 1>/dev/null 2>&1 + done +} From e4017f15733964c7dd1c7cc8b649ed68f26ec891 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 01:31:24 +0200 Subject: [PATCH 4/7] nbd: bump version to 3.11 Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/nbd/Makefile b/net/nbd/Makefile index aea9e4bfb..45bce5042 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=nbd -PKG_VERSION:=2.9.23 +PKG_VERSION:=3.11 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@SF/nbd -PKG_MD5SUM:=065b6ded41887a08be6dbb8d77280f24 +PKG_MD5SUM:=73d11644a28b9f335292cdb3bdc4b74b PKG_MAINTAINER:=Marcin Jurkowski PKG_INSTALL:=1 From 891951cae24ddfdcc90e06498cc7e0aeb46b5b98 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 11:05:09 +0200 Subject: [PATCH 5/7] nbd: bump copyright header and add PKG_LICENSE tag Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/nbd/Makefile b/net/nbd/Makefile index 45bce5042..ae6ff373b 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2011 OpenWrt.org +# Copyright (C) 2006-2015 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -14,6 +14,7 @@ PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@SF/nbd PKG_MD5SUM:=73d11644a28b9f335292cdb3bdc4b74b +PKG_LICENSE:=GPL-2.0+ PKG_MAINTAINER:=Marcin Jurkowski PKG_INSTALL:=1 From 6bb198c646a6ef053fa59668ee3dfe98c743f839 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 11:57:39 +0200 Subject: [PATCH 6/7] nbd: get rid of unnecessary Build/Compile macro Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/net/nbd/Makefile b/net/nbd/Makefile index ae6ff373b..4f1840298 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -50,13 +50,10 @@ define Package/nbd-server/description This package contains the network block device server. endef -CONFIGURE_ARGS+= \ +CONFIGURE_ARGS += \ --disable-glibtest -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) \ - nbd-client nbd-server -endef +TARGET_CFLAGS += --std=gnu99 define Package/nbd/install $(INSTALL_DIR) $(1)/usr/sbin From 5ba490239a18ccd483c5462b61f0277d0572ffd0 Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 00:12:24 +0200 Subject: [PATCH 7/7] nbd: use procd style init script for nbd-server Runs nbd-server in foreground. Signed-off-by: Marcin Jurkowski --- net/nbd/Makefile | 2 +- net/nbd/files/nbd-server.init | 40 +++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/net/nbd/Makefile b/net/nbd/Makefile index 4f1840298..130b31b6e 100644 --- a/net/nbd/Makefile +++ b/net/nbd/Makefile @@ -53,7 +53,7 @@ endef CONFIGURE_ARGS += \ --disable-glibtest -TARGET_CFLAGS += --std=gnu99 +TARGET_CFLAGS += --std=gnu99 -DNODAEMON define Package/nbd/install $(INSTALL_DIR) $(1)/usr/sbin diff --git a/net/nbd/files/nbd-server.init b/net/nbd/files/nbd-server.init index 7759219a8..ae3db2460 100644 --- a/net/nbd/files/nbd-server.init +++ b/net/nbd/files/nbd-server.init @@ -1,9 +1,11 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2012 OpenWrt.org +# Copyright (C) 2015 OpenWrt.org START=60 -SERVICE_USE_PID=1 +STOP=40 +USE_PROCD=1 +PROG=/usr/bin/nbd-server CONFIGFILE="/var/etc/nbd-server.conf" @@ -81,28 +83,30 @@ config_handle_share() { append_val_str listenaddr "$cfg" oldstyle_listenaddr } -config_read() { +start_instance() { + local cfg="$1" + local enabled - mkdir -p $(dirname $CONFIGFILE) - echo -n > $CONFIGFILE + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 + + procd_open_instance + procd_set_param command $PROG --config-file=$CONFIGFILE + procd_set_param file $CONFIGFILE + procd_close_instance +} +start_service() { config_load nbd-server + + mkdir -p $(dirname $CONFIGFILE) + echo "# auto-generated config file from /etc/config/nbd-server" > $CONFIGFILE config_foreach config_handle_generic nbd-server config_foreach config_handle_share share -} - -start() { - config_read - if [ "$SERVICE_ENABLED" = "1" ]; then - service_start /usr/bin/nbd-server \ - --pid-file /var/run/nbd-server.pid \ - --config-file=$CONFIGFILE - fi + config_foreach start_instance nbd-server } -stop() { - service_stop /usr/bin/nbd-server +service_triggers() { + procd_add_reload_trigger "nbd-server" } - -