cifsd: update to git (2019-11-27), fix reload/restart not applying smb.conf changes
* fix reload/restart not applying luci/smb.conf changes * remove hotfix for 'read only = no' (fixed by upstream) * update documentation, example *cifsd: fix the lost of dos file attributes *cifsd: store FILE_ATTRIBUTE_SPARSE into xattr *cifsd: release v2.0.2 *cifsd-tools: add smb.conf.list file to show supported parameters list *cifsd-tools: set CIFSD_SHARE_FLAG_WRITEABLE flags if read only = no *cifsd-tools: release cifsd-tools v2.0.2 Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>
This commit is contained in:
parent
9082be3a62
commit
b85a124ff6
5 changed files with 45 additions and 26 deletions
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd.git
|
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd.git
|
||||||
PKG_SOURCE_DATE:=2019-11-22
|
PKG_SOURCE_DATE:=2019-11-27
|
||||||
PKG_SOURCE_VERSION:=511ee7e852c0be06b74fbb3eba69760b86658679
|
PKG_SOURCE_VERSION:=b8675c8ac144ece00f3e6bcc5436c8ace99e23e9
|
||||||
PKG_MIRROR_HASH:=23040d73230ff6afcea46cf9c51a1aab7b706859471de204da4824bfea5934c8
|
PKG_MIRROR_HASH:=3d67af87f30d837f95510663efc42f1451651dc235987408924b56cb277fc8e8
|
||||||
|
|
||||||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
|
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
|
||||||
PKG_LICENSE:=GPL-2.0-or-later
|
PKG_LICENSE:=GPL-2.0-or-later
|
||||||
|
|
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd-tools.git
|
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd-tools.git
|
||||||
PKG_SOURCE_DATE:=2019-11-25
|
PKG_SOURCE_DATE:=2019-11-27
|
||||||
PKG_SOURCE_VERSION:=49d0c40129fe22161999ffb7e059b90089f23078
|
PKG_SOURCE_VERSION:=06fd4153a5d5af1f96a20234f397bd149a8e4832
|
||||||
PKG_MIRROR_HASH:=cd3702f1387ab643233200dcf5c244989b6d6efa196c69e842791e434eb3eea7
|
PKG_MIRROR_HASH:=2849d2af471e327abc8d67afc91ca767c410e2b307d6554531a0b387d9ad909a
|
||||||
|
|
||||||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
|
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
|
||||||
PKG_LICENSE:=GPL-2.0-or-later
|
PKG_LICENSE:=GPL-2.0-or-later
|
||||||
|
@ -46,7 +46,7 @@ define Package/cifsd-tools/install
|
||||||
$(INSTALL_BIN) ./files/cifsd.init $(1)/etc/init.d/cifsd
|
$(INSTALL_BIN) ./files/cifsd.init $(1)/etc/init.d/cifsd
|
||||||
# copy examples until we have a wiki page
|
# copy examples until we have a wiki page
|
||||||
$(INSTALL_DATA) ./files/cifsd.config.example $(1)/etc/cifs/
|
$(INSTALL_DATA) ./files/cifsd.config.example $(1)/etc/cifs/
|
||||||
$(INSTALL_DATA) ./files/smb.conf.help $(1)/etc/cifs/
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/Documentation/configuration.txt $(1)/etc/cifs/
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/cifsd-tools/conffiles
|
define Package/cifsd-tools/conffiles
|
||||||
|
|
|
@ -4,8 +4,8 @@ config globals
|
||||||
config share
|
config share
|
||||||
option name 'testshare'
|
option name 'testshare'
|
||||||
option path '/tmp'
|
option path '/tmp'
|
||||||
|
option read_only 'no'
|
||||||
option guest_ok 'yes'
|
option guest_ok 'yes'
|
||||||
option create_mask '0666'
|
option create_mask '0666'
|
||||||
option dir_mask '0777'
|
option dir_mask '0777'
|
||||||
option writeable 'yes'
|
|
||||||
option force_root '1'
|
option force_root '1'
|
||||||
|
|
|
@ -103,12 +103,8 @@ smb_add_share()
|
||||||
|
|
||||||
[ -n "$browseable" ] && printf "\tbrowseable = %s\n" "$browseable"
|
[ -n "$browseable" ] && printf "\tbrowseable = %s\n" "$browseable"
|
||||||
[ -n "$read_only" ] && printf "\tread only = %s\n" "$read_only"
|
[ -n "$read_only" ] && printf "\tread only = %s\n" "$read_only"
|
||||||
# possible upstream bug?
|
[ -n "$writeable" ] && printf "\twriteable = %s\n" "$writeable"
|
||||||
if [ "$read_only" = "no" ]; then
|
|
||||||
printf "\twriteable = yes\n"
|
|
||||||
else
|
|
||||||
[ -n "$writeable" ] && printf "\twriteable = %s\n" "$writeable"
|
|
||||||
fi
|
|
||||||
[ -n "$guest_ok" ] && printf "\tguest ok = %s\n" "$guest_ok"
|
[ -n "$guest_ok" ] && printf "\tguest ok = %s\n" "$guest_ok"
|
||||||
[ -n "$inherit_owner" ] && printf "\tinherit owner = %s\n" "$inherit_owner"
|
[ -n "$inherit_owner" ] && printf "\tinherit owner = %s\n" "$inherit_owner"
|
||||||
|
|
||||||
|
@ -153,6 +149,15 @@ start_service()
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -e /sys/module/cifsd ]; then
|
||||||
|
if [ -e /sys/class/cifsd-control/kill_server ]; then
|
||||||
|
# upstream "BUG": ensure changes in smb.conf are reflected on a running kernel-server
|
||||||
|
echo hard > /sys/class/cifsd-control/kill_server
|
||||||
|
# we need a extra timeout for the reset
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
modprobe cifsd 2> /dev/null
|
modprobe cifsd 2> /dev/null
|
||||||
if [ ! -e /sys/module/cifsd ]; then
|
if [ ! -e /sys/module/cifsd ]; then
|
||||||
logger -t 'cifsd' "modprobe of cifsd module failed, can\'t start cifsd!"
|
logger -t 'cifsd' "modprobe of cifsd module failed, can\'t start cifsd!"
|
||||||
|
@ -162,6 +167,7 @@ start_service()
|
||||||
logger -t 'cifsd' "Starting CIFS/SMB userspace service."
|
logger -t 'cifsd' "Starting CIFS/SMB userspace service."
|
||||||
procd_open_instance
|
procd_open_instance
|
||||||
procd_set_param command /usr/sbin/cifsd --n
|
procd_set_param command /usr/sbin/cifsd --n
|
||||||
|
procd_set_param file /var/etc/cifs/smb.conf
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,20 +175,33 @@ stop_service()
|
||||||
{
|
{
|
||||||
logger -t 'cifsd' "Stopping CIFSD userspace service."
|
logger -t 'cifsd' "Stopping CIFSD userspace service."
|
||||||
killall cifsd > /dev/null 2>&1
|
killall cifsd > /dev/null 2>&1
|
||||||
sleep 1
|
|
||||||
[ -e /sys/class/cifsd-control/kill_server ] && echo hard > /sys/class/cifsd-control/kill_server
|
|
||||||
sleep 2
|
|
||||||
[ -e /sys/module/cifsd ] && rmmod cifsd > /dev/null 2>&1
|
[ -e /sys/module/cifsd ] && rmmod cifsd > /dev/null 2>&1
|
||||||
# With open smb connections rmmod takes longer
|
# With open smb connections rmmod is not possible, without waiting for the long 'ipc timeout', so we use 'kill_server'!
|
||||||
if [ -e /sys/module/cifsd ]; then
|
if [ -e /sys/module/cifsd ]; then
|
||||||
sleep 5
|
logger -t 'cifsd' "triggering kill_server"
|
||||||
rmmod cifsd > /dev/null 2>&1
|
if [ -e /sys/class/cifsd-control/kill_server ]; then
|
||||||
|
echo hard > /sys/class/cifsd-control/kill_server
|
||||||
|
# we need a extra timeout for the reset
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# next try
|
||||||
|
[ -e /sys/module/cifsd ] && rmmod cifsd > /dev/null 2>&1
|
||||||
|
# check again
|
||||||
|
if [ -e /sys/module/cifsd ]; then
|
||||||
|
# wait more...
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
# last try
|
||||||
|
[ -e /sys/module/cifsd ] && rmmod cifsd > /dev/null 2>&1
|
||||||
|
|
||||||
|
if [ -e /sys/module/cifsd ]; then
|
||||||
|
logger -t 'cifsd' "module still loaded after 8s timeout"
|
||||||
fi
|
fi
|
||||||
[ -f /tmp/cifsd.lock ] && rm /tmp/cifsd.lock
|
[ -f /tmp/cifsd.lock ] && rm /tmp/cifsd.lock
|
||||||
}
|
}
|
||||||
|
|
||||||
reload_service() {
|
# reload_service() {
|
||||||
stop_service "$@"
|
# restart "$@"
|
||||||
sleep 1
|
# }
|
||||||
start_service "$@"
|
|
||||||
}
|
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
workgroup = |WORKGROUP|
|
workgroup = |WORKGROUP|
|
||||||
interfaces = |INTERFACES|
|
interfaces = |INTERFACES|
|
||||||
bind interfaces only = yes
|
bind interfaces only = yes
|
||||||
ipc timeout = 8
|
ipc timeout = 20
|
||||||
deadtime = 15
|
deadtime = 15
|
||||||
map to guest = Bad User
|
map to guest = Bad User
|
||||||
|
|
Loading…
Reference in a new issue