[Samba] dfree does not work on a btrfs subvolume with qgroups (Samba 4.13.13, Debian 11)

Kristaps Esterliņš kristaps.esterlins at gmail.com
Tue Mar 29 13:59:59 UTC 2022


Good Day!

I am bumping this question again, maybe somebody can give me a hint why
sys_disk_free does not return correct value:

OS - Debian 11.3
Samba - 4.13.13

 2 x 8Tb HDDs with btrfs filesystem and subvolume dedicated to samba share.
The subvolume is 1.43T large but samba share returns the whole (7.3T) space
available which is not true.


# cat /etc/debian_version
11.3
# dpkg -l | grep -i samba
ii  libnss-winbind:amd64                 2:4.13.13+dfsg-1~deb11u3
 amd64        Samba nameservice integration plugins
ii  libwbclient0:amd64                   2:4.13.13+dfsg-1~deb11u3
 amd64        Samba winbind client library
ii  python3-samba                        2:4.13.13+dfsg-1~deb11u3
 amd64        Python 3 bindings for Samba
ii  samba                                2:4.13.13+dfsg-1~deb11u3
 amd64        SMB/CIFS file, print, and login server for Unix
ii  samba-common                         2:4.13.13+dfsg-1~deb11u3
 all          common files used by both the Samba server and client
ii  samba-common-bin                     2:4.13.13+dfsg-1~deb11u3
 amd64        Samba common files used by both the server and the client
ii  samba-libs:amd64                     2:4.13.13+dfsg-1~deb11u3
 amd64        Samba core libraries
ii  samba-vfs-modules:amd64              2:4.13.13+dfsg-1~deb11u3
 amd64        Samba Virtual FileSystem plugins


# btrfs qgroup show -reF /srv/samba/sales


*qgroupid         rfer         excl     max_rfer     max_excl--------
  ----         ----     --------     --------0/696       117.74GiB
 117.74GiB      1.43TiB         non*e

Samba is a member of an existing Active Directory (Windows Server 2019)
server.

# /etc/samba/smb.conf


# https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member
[global]
#
https://wiki.samba.org/index.php/Configure_Samba_to_Bind_to_Specific_Interfaces

  bind interfaces only = yes
  interfaces = lo br0

# 29.03.2022 -
https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X

  min protocol = SMB2
  ea support = yes

# Active Directory
  workgroup = AD1
  security = ADS
  realm = AD1.domain.LV

# Samba Log File
  log file = /var/log/samba/%m.log
  max log size = 32768
  log level = 1

# Active Directory
  winbind refresh tickets = Yes
# https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs
  vfs objects = acl_xattr
  map acl inherit = Yes
  store dos attributes = Yes

  dedicated keytab file = /etc/krb5.keytab
  kerberos method = secrets and keytab

  load printers = no
  printing = bsd
  printcap name = /dev/null
  disable spoolss = yes

  # Default ID mapping configuration for local BUILTIN accounts
  # and groups on a domain member. The default (*) domain:
  # - must not overlap with any domain ID mapping configuration!
  # - must use a read-write-enabled back end, such as tdb.
 idmap config * : backend = tdb
 idmap config * : range = 3000-7999

  # - You must set a DOMAIN backend configuration
  # idmap config for the AD1 domain

  idmap config AD1 : backend = rid
  idmap config AD1 : range = 10000-999999

  # ! Setting the default back end is mandatory.

  # ! For every domain, set these parameters individually.
  # ! The ID ranges of the * default domain and all other domains
configured in the smb.conf file must not overlap.

  # Template settings for login shell and home directory
  template shell = /bin/bash
  template homedir = /home/%U

  username map = /usr/local/samba/etc/user.map

  # https://lists.samba.org/archive/samba/2021-November/238643.html
  min domain uid = 0

  #
https://wiki.samba.org/index.php/Troubleshooting_Samba_Domain_Members#getent_not_Finding_Domain_Users_and_Groups

  winbind enum users = yes
  winbind enum groups = yes

# Default Share - "Sales"
[Sales]
  path = /srv/samba/sales
  read only = no
  # https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs

  acl_xattr:ignore system acls = yes

  # 15.02.2022 - Log activity on the "Sales" share
  #
https://wiki.samba.org/index.php/Server-Side_Copy#Btrfs_Enhanced_Server-Side_Copy_Offload

  vfs objects = full_audit btrfs
  full_audit:prefix = %u|%I|%m|%S
  full_audit:success = mkdirat renameat unlinkat pwrite pread
  full_audit:failure = none

  dfree command = /usr/local/samba/bin/dfree
  dfree cache time = 0

# journalctl -t smbd_audit

*Mar 29 15:49:43 office smbd_audit[76824]: [2022/03/29 15:49:43.487977,  0]
../../source3/smbd/dfree.c:133(sys_disk_free)Mar 29 15:49:43 office
smbd_audit[76824]:   sys_disk_free: file_lines_load() failed for command
'/usr/local/samba/bin/dfree .'. Error was : No child processes*

# ls -al /usr/local/samba/bin/dfree

*-rwxrwxrwx 1 root root 371 Feb 17 09:49 /usr/local/samba/bin/dfree*

# /bin/bash /usr/local/samba/bin/dfree
*1530920960 1407461720 1024*

*# strace *
















*write(13, "  sys_disk_free: file_lines_load"..., 117) = 117sendto(43,
"<27>Mar 29 16:34:20 smbd_audit: "..., 149, MSG_NOSIGNAL, NULL, 0) =
149statfs(".", {f_type=BTRFS_SUPER_MAGIC, f_bsize=4096,
f_blocks=1953506385, f_bfree=1558219039, f_bavail=1558158146, f_files=0,
f_ffree=0, f_fsid={val=[69581704, 4285057198]}, f_namelen=255,
f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0stat(".",
{st_mode=S_IFDIR|0771, st_size=2012, ...}) = 0getcwd("/srv/samba/sales",
4096)        = 17stat("/srv/samba/sales", {st_mode=S_IFDIR|0771,
st_size=2012, ...}) = 0stat("/srv/samba", {st_mode=S_IFDIR|0755,
st_size=30, ...}) = 0stat("/srv", {st_mode=S_IFDIR|0755, st_size=36, ...})
= 0openat(AT_FDCWD, "/etc/mtab", O_RDONLY|O_CLOEXEC) = 46fstat(46,
{st_mode=S_IFREG|0444, st_size=0, ...}) = 0read(46, "sysfs /sys sysfs
rw,nosuid,nodev"..., 1024) = 1024read(46, "e_ino=14902 0 0\nmqueue
/dev/mque"..., 1024) = 829stat("/srv/samba", {st_mode=S_IFDIR|0755,
st_size=30, ...}) = 0close(46)                               = 0geteuid()
                            = 11124quotactl(QCMD(Q_GETQUOTA, USRQUOTA),
"/dev/sdc1", 11124, 0x7ffe61cab2d0) = -1 ENODEV (No such device)*

Thanks!


On Thu, 17 Feb 2022 at 10:11, Kristaps Esterliņš <
kristaps.esterlins at gmail.com> wrote:

> Good Day!
>
> Configuration:
>
> Debian 11
> Samba 4.13.13
>
> I have 2 x 8 Tb HDDs with btrfs filesystem with subvolume dedicated to a
> samba share and I have created a disk quota:
>
> # btrfs qgroup show -reF /srv/samba/sales
>
>
> *qgroupid         rfer         excl     max_rfer     max_excl--------
>     ----         ----     --------     --------0/696       117.74GiB
>  117.74GiB      1.43TiB         none*
>
> # mount /srv/samba
>
>
> */dev/sdc1 on /srv/samba type btrfs
> (rw,relatime,space_cache,subvolid=696,subvol=/samba)*
>
> # /etc/sama/smb.conf
>
> ...
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *# Default Share - "Sales"[Sales]  path = /srv/samba/sales  read only =
> no  #
> https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs
> <https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs>
> acl_xattr:ignore system acls = yes  # 15.02.2022 - Log activity on the
> "Sales" share  #
> https://wiki.samba.org/index.php/Server-Side_Copy#Btrfs_Enhanced_Server-Side_Copy_Offload
> <https://wiki.samba.org/index.php/Server-Side_Copy#Btrfs_Enhanced_Server-Side_Copy_Offload>
> vfs objects = full_audit btrfs  full_audit:prefix = %u|%I|%m|%S
> full_audit:success = mkdirat renameat unlinkat pwrite pread
> full_audit:failure = none  dfree command = /usr/local/samba/bin/dfree
> dfree cache time = 0*
>
> # /usr/local/samba/bin/dfree
>
>
>
>
>
>
>
>
>
>
> *#!/bin/shCUR_PATH=/srv/samba/salesTOTAL=$((`/usr/bin/btrfs qgroup show
> -rF --raw $CUR_PATH --sync | /usr/bin/tail -1 | /usr/bin/awk '{print
> $(NF-0)/1024}'`)) > /dev/nullUSED=$((`/usr/bin/btrfs qgroup show -rF --raw
> $CUR_PATH --sync | /usr/bin/tail -1 | /usr/bin/awk '{print
> $(NF-2)/1024}'`)) > /dev/nullAVAIL=$(($TOTAL-$USED)) > /dev/nullecho $TOTAL
> $AVAIL 1024*
>
> office:/usr/local/samba/bin# ls -al
> total 4
> drwxrwxrwx 1 root root  10 Feb 17 09:50 .
> drwxr-xr-x 1 root root  12 Feb 15 11:51 ..
> -rwxrwxrwx 1 root root 371 Feb 17 09:49 dfree
>
> office:/usr/local/samba/bin# ./dfree
>
> *1530920960 1407461464 1024*
>
> # journalctl
>  ...
>
> Feb 17 09:29:12 office smbd_audit[59818]: [2022/02/17 09:29:12.668171,  0]
> ../../source3/smbd/dfree.c:133(sys_disk_free)
> Feb 17 09:29:12 office smbd_audit[59818]:   sys_disk_free:
> file_lines_load() failed for command '/usr/local/samba/bin/dfree .'. Error
> was : No child processes
>
> Please see the strace file - https://pastebin.com/raw/rnDy44T6
> <https://pastebin.com/raw/4kWZsnqm>
>
> Thanks!
>


More information about the samba mailing list