[Samba] Status of vfs object expand_msdfs

Eibo Thieme eibo at plusgut.de
Fri Feb 6 13:56:46 UTC 2026


Samba 4.13.13
Devuan Chimaera
Windows 11

My current setup consists of 9 locations connected via slow VPNs, each 
with their own Samba server acting as a DC and fileserver (this is not 
recommended but it works quite well for several years now). I would like 
to consolidate some shares to a central DFS location with referrals 
pointing to the nearest server. This would perfectly be provided by the 
expand_msdfs vfs module, but unfortunately it does not work.

smb.conf, same except for netbios name changed on all servers:

[global]
         bind interfaces only = Yes
         interfaces = lo eth1
         netbios name = FILESERVER1
         realm = TEST.COM
         server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, 
drepl, winbindd, ntp_signd, kcc, dnsupdate
         workgroup = TEST
         server role = active directory domain controller
         idmap_ldb:use rfc2307  = yes
         ntlm auth = yes
         lanman auth = no
         client lanman auth = no
         comment =
         host msdfs = yes
         log level = 1 vfs:10
...
[dfs]
         path = /home/dfsroot
         msdfs root = yes
         vfs objects = dfs_samba4,acl_xattr,expand_msdfs
...

Links in /home/dfsroot created by

ln -s "msdfs:@ref@/templates" templates

File ref containing:

192.168.10    fileserver1.test.com
192.168.20    filesserver2.test.com
     fileserver1.test.com

Doubleclick in Windows Explorer on this link will throw an error saying 
this share is not accessible. With this loglevel I see the following in 
the logs (more debug log at the end):

[2026/02/06 13:14:20.537260, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:66(vfs_find_backend_entry)
   vfs_find_backend_entry called for expand_msdfs
   Successfully loaded vfs module [expand_msdfs] with the new modules system

...

[2026/02/06 13:14:20.536509,  3, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/modules/vfs_default.c:257(vfswrap_get_dfs_referrals)
   Path \fileserver1\dfs\templates to alternate path(s): \@ref@\templates.
...

[2026/02/06 13:14:20.536545,  1] 
../../librpc/ndr/ndr.c:478(ndr_print_function_debug)
        dfs_GetDFSReferral: struct dfs_GetDFSReferral
...
                                       netw_address             : *
                                           netw_address  : 
'\@ref@\templates'

What I do not see are the debug messages mentioned in the source like 
this in vfs_expand_msdfs.c:

                 DEBUG(0,("can't open IP map %s. Error %s\n",
                          mapfile, strerror(errno) ));

Even though I should have seen this error message I did place the file 
ref in several locations and tried using a fully qualified path to the 
file ref. I also tried changing the order of vfs objects.

What did work was server based DFS with regular links pointing to 
several file locations, even though it appears to always prefer the 
first fileserver in the link:

ln -s 'msdfs:fileserver2/templates,msdfs:fileserver1/templates' templates2

Domain based DFs did not work from Windows 11 and 10, so on \\test.com\ 
the share DFS is visible besides sysvol and other shares but it will 
throw an error when I try to open it, different from the sysvol folder 
which may be descended into. It does work with smbclient though.

Have I missed something? Is expand_msdfs no longer operational?

Regards,
Eibo


#### full debug

[2026/02/06 13:14:20.532834,  1] 
../../librpc/ndr/ndr.c:478(ndr_print_function_debug)
        dfs_GetDFSReferral: struct dfs_GetDFSReferral
           in: struct dfs_GetDFSReferral
               req: struct dfs_GetDFSReferral_in
                   max_referral_level       : 0x0004 (4)
                   servername               : '\filerserver1\dfs\templates'
[2026/02/06 13:14:20.533013,  3, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:115(vfs_init_default)
   Initialising default vfs hooks
[2026/02/06 13:14:20.533046,  3, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:141(vfs_init_custom)
   Initialising custom vfs hooks from [/[Default VFS]/]
[2026/02/06 13:14:20.533068, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:66(vfs_find_backend_entry)
   vfs_find_backend_entry called for /[Default VFS]/
   Successfully loaded vfs module [/[Default VFS]/] with the new modules 
system
[2026/02/06 13:14:20.533096,  3, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:141(vfs_init_custom)
   Initialising custom vfs hooks from [expand_msdfs]
[2026/02/06 13:14:20.533116, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:66(vfs_find_backend_entry)
   vfs_find_backend_entry called for expand_msdfs
   Successfully loaded vfs module [expand_msdfs] with the new modules system
[2026/02/06 13:14:20.533141,  3, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:141(vfs_init_custom)
   Initialising custom vfs hooks from [acl_xattr]
[2026/02/06 13:14:20.533160, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:66(vfs_find_backend_entry)
   vfs_find_backend_entry called for acl_xattr
   Successfully loaded vfs module [acl_xattr] with the new modules system
[2026/02/06 13:14:20.533184,  3, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:141(vfs_init_custom)
   Initialising custom vfs hooks from [dfs_samba4]
[2026/02/06 13:14:20.533202, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/smbd/vfs.c:66(vfs_find_backend_entry)
   vfs_find_backend_entry called for dfs_samba4
   Successfully loaded vfs module [dfs_samba4] with the new modules system
[2026/02/06 13:14:20.533250,  2, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/modules/vfs_acl_xattr.c:289(connect_acl_xattr)
   connect_acl_xattr: setting 'inherit acls = true' 'dos filemode = 
true' and 'force unknown acl user = true' for service dfs
[2026/02/06 13:14:20.536110, 10, pid=10707, effective(0, 0), real(0, 0), 
class=vfs] ../../source3/modules/vfs_default.c:180(vfswrap_fs_capabilities)
   vfswrap_fs_capabilities: timestamp resolution of sec available on 
share dfs, directory /home/dfsroot
[2026/02/06 13:14:20.536171,  4, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] ../../source3/smbd/vfs.c:939(vfs_ChDir)
   vfs_ChDir to /home/dfsroot
[2026/02/06 13:14:20.536204,  5, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] ../../source3/smbd/vfs.c:1001(vfs_ChDir)
   vfs_ChDir: vfs_ChDir got /home/dfsroot
[2026/02/06 13:14:20.536260, 10, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/smbd/vfs.c:1327(check_reduced_name)
   check_reduced_name: check_reduced_name [.] [/home/dfsroot]
[2026/02/06 13:14:20.536286, 10, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/smbd/vfs.c:1389(check_reduced_name)
   check_reduced_name realpath [.] -> [/home/dfsroot]
[2026/02/06 13:14:20.536307,  5, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/smbd/vfs.c:1495(check_reduced_name)
   check_reduced_name: . reduced to /home/dfsroot
[2026/02/06 13:14:20.536378,  5, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/modules/vfs_default.c:486(vfswrap_read_dfs_pathat)
   vfswrap_read_dfs_pathat: test -> msdfs:@ref@/templates
[2026/02/06 13:14:20.536418,  4, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] ../../source3/smbd/vfs.c:939(vfs_ChDir)
   vfs_ChDir to /tmp
[2026/02/06 13:14:20.536449,  5, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] ../../source3/smbd/vfs.c:1001(vfs_ChDir)
   vfs_ChDir: vfs_ChDir got /tmp
[2026/02/06 13:14:20.536509,  3, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/modules/vfs_default.c:257(vfswrap_get_dfs_referrals)
   Path \fileserver1\dfs\templates to alternate path(s): \@ref@\templates.
[2026/02/06 13:14:20.536531, 10, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/modules/vfs_default.c:369(vfswrap_get_dfs_referrals)
[2026/02/06 13:14:20.536545,  1] 
../../librpc/ndr/ndr.c:478(ndr_print_function_debug)
        dfs_GetDFSReferral: struct dfs_GetDFSReferral
           out: struct dfs_GetDFSReferral
               resp                     : *
                   resp: struct dfs_referral_resp
                       path_consumed            : 0x0024 (36)
                       nb_referrals             : 0x0001 (1)
                       header_flags             : 0x00000002 (2)
                              0: DFS_HEADER_FLAG_REFERAL_SVR
                              1: DFS_HEADER_FLAG_STORAGE_SVR
                              0: DFS_HEADER_FLAG_TARGET_BCK
                       referral_entries: ARRAY(1)
                           referral_entries: struct dfs_referral_type
                               version                  : 0x0003 (3)
                               referral                 : union 
dfs_referral_version(case 3)
                               v3: struct dfs_referral_v3
                                   size                     : 0x0022 (34)
                                   server_type              : 
DFS_SERVER_NON_ROOT (0)
                                   entry_flags              : 
UNKNOWN_ENUM_VALUE (0)
                                   ttl                      : 0x00000258 
(600)
                                   referrals                : union 
dfs_referral(case 0)
                                   r1: struct dfs_normal_referral
                                       DFS_path                 : *
                                           DFS_path  : 
'\fileserver1\dfs\templates'
                                       DFS_alt_path             : *
                                           DFS_alt_path  : 
'\fileserver1\dfs\templates'
                                       netw_address             : *
                                           netw_address  : 
'\@ref@\templates'
                                   service_site_guid        : union 
dfs_padding(case 16)
                                   value: ARRAY(16)
                                       [0]                      : 0x00 (0)
                                       [1]                      : 0x00 (0)
                                       [2]                      : 0x00 (0)
                                       [3]                      : 0x00 (0)
                                       [4]                      : 0x00 (0)
                                       [5]                      : 0x00 (0)
                                       [6]                      : 0x00 (0)
                                       [7]                      : 0x00 (0)
                                       [8]                      : 0x00 (0)
                                       [9]                      : 0x00 (0)
                                       [10]                     : 0x00 (0)
                                       [11]                     : 0x00 (0)
                                       [12]                     : 0x00 (0)
                                       [13]                     : 0x00 (0)
                                       [14]                     : 0x00 (0)
                                       [15]                     : 0x00 (0)
[2026/02/06 13:14:20.537015, 10, pid=10707, effective(3000021, 100), 
real(3000021, 0), class=vfs] 
../../source3/modules/vfs_default.c:203(vfswrap_get_dfs_referrals)
[2026/02/06 13:14:20.537037,  1] 
../../librpc/ndr/ndr.c:478(ndr_print_function_debug)
        dfs_GetDFSReferral: struct dfs_GetDFSReferral
           in: struct dfs_GetDFSReferral
               req: struct dfs_GetDFSReferral_in
                   max_referral_level       : 0x0004 (4)
                   servername               : '\fileserve1\dfs\templates'


-- 
Tel: +491775062083
https://bsky.app/profile/eibo.bsky.social
https://www.xing.com/profile/Eibo_Thieme
https://www.linkedin.com/in/eibo-thieme-89207589




More information about the samba mailing list