Re: autofs 5.1.8 and TCP_REQUESTED

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2021-10-29 at 13:02 +0300, Stanislav Levin wrote:
> Hello.
> 
> With switching of autofs 5.1.7 -> 5.1.8 we faced the next issue.
> 
> My Linux distro (ALTLinux) has the policy for rpcbind which controls
> the
> localhostness (localhost only by default). NFSv4 doesn't require
> rpcbind. But with 606795ecfaa1ba45ab58fa20376213f6089e42e9
> (
> https://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git/commit/?id=606795ecfaa1ba45ab58fa20376213f6089e42e9
> )
> it is mandatory and broken our users.
> 
> autoumount log:
> 
> Oct 28 08:23:24 client3.ipa.test automount[1243]: handle_packet: type
> = 3
> Oct 28 08:23:24 client3.ipa.test automount[1243]:
> handle_packet_missing_indirect: token 2, name athena, request pid
> 1297
> Oct 28 08:23:24 client3.ipa.test automount[1243]: attempting to mount
> entry /home/athena
> Oct 28 08:23:24 client3.ipa.test automount[1243]: lookup_mount:
> lookup(sss): looking up athena
> Oct 28 08:23:24 client3.ipa.test automount[1243]: lookup_mount:
> lookup(sss): athena -> -fstype=nfs4,rw,sec=krb5p
> client1.ipa.test:/krbnfs_home/&
> Oct 28 08:23:24 client3.ipa.test automount[1243]: parse_mount:
> parse(sun): expanded entry: -fstype=nfs4,rw,sec=krb5p
> client1.ipa.test:/krbnfs_home/athena
> Oct 28 08:23:24 client3.ipa.test automount[1243]: parse_mount:
> parse(sun): gathered options: fstype=nfs4,rw,sec=krb5p
> Oct 28 08:23:24 client3.ipa.test automount[1243]: parse_mount:
> parse(sun): dequote("client1.ipa.test:/krbnfs_home/athena") ->
> client1.ipa.test:/krbnfs_home/athena
> Oct 28 08:23:24 client3.ipa.test automount[1243]: parse_mount:
> parse(sun): core of entry: options=fstype=nfs4,rw,sec=krb5p,
> loc=client1.ipa.test:/krbnfs_home/athena
> Oct 28 08:23:24 client3.ipa.test automount[1243]: sun_mount:
> parse(sun):
> mounting root /home, mountpoint athena, what
> client1.ipa.test:/krbnfs_home/athena, fstype nfs4, options
> rw,sec=krb5p
> Oct 28 08:23:24 client3.ipa.test automount[1243]: mount(nfs):
> root=/home
> name=athena what=client1.ipa.test:/krbnfs_home/athena, fstype=nfs4,
> options=rw,sec=krb5p
> Oct 28 08:23:24 client3.ipa.test automount[1243]: mount(nfs): nfs
> options="rw,sec=krb5p", nobind=0, nosymlink=0, ro=0
> Oct 28 08:23:24 client3.ipa.test automount[1243]: get_nfs_info:
> called
> with host client1.ipa.test(172.18.0.2) proto 6 version 0x40
> Oct 28 08:23:24 client3.ipa.test automount[1243]: get_portmap_client:
> error 0x3 getting portmap client
> Oct 28 08:23:24 client3.ipa.test automount[1243]: mount(nfs): no
> hosts
> available
> 
> reason:
> 
> (gdb) bt
> #0  get_vers_and_cost (logopt=logopt@entry=1,
> host=host@entry=0x7f239c002240, version=version@entry=65,
> port=port@entry=-1) at /usr/src/debug/autofs-
> 5.1.8/modules/replicated.c:552
> #1  0x00007f23a52a2b12 in prune_host_list (logopt=1,
> list=list@entry=0x7f23a4a64590, vers=vers@entry=65, port=port@entry=-
> 1)
> at /usr/src/debug/autofs-5.1.8/modules/replicated.c:785
> #2  0x00007f23a52a384e in mount_mount (ap=<optimized out>,
> root=<optimized out>, name=<optimized out>, name_len=<optimized out>,
> what=<optimized out>, fstype=<optimized out>, options=<optimized
> out>,
> context=<optimized out>) at
> /usr/src/debug/autofs-5.1.8/modules/mount_nfs.c:270
> #3  0x00007f23a52c4e23 in sun_mount (ap=ap@entry=0x562be0d49120,
> root=root@entry=0x562be0d49200 "/home",
> name=name@entry=0x7f23a4a668d0
> "athena", namelen=namelen@entry=6, loc=loc@entry=0x7f239c001f80
> "client1.ipa.test:/krbnfs_home/athena", loclen=loclen@entry=36,
> options=0x7f23a4a656a0 "rw,sec=krb5p", ctxt=<optimized out>) at
> /usr/src/debug/autofs-5.1.8/modules/parse_sun.c:713
> #4  0x00007f23a52cd1cd in parse_mount (ap=0x562be0d49120,
> name=0x7f23a4a668d0 "athena", name_len=6, mapent=<optimized out>,
> context=0x7f2398000f80) at
> /usr/src/debug/autofs-5.1.8/modules/parse_sun.c:1708
> #5  0x00007f23a52f7f35 in lookup_mount (ap=0x562be0d49120,
> name=<optimized out>, name_len=<optimized out>,
> context=0x7f2398000ef0)
> at /usr/src/debug/autofs-5.1.8/modules/lookup_sss.c:1121
> #6  0x0000562bdf8e7fe7 in do_lookup_mount
> (ap=ap@entry=0x562be0d49120,
> map=0x7f2398000d80, name=name@entry=0x7f23a4a6bd90 "athena",
> name_len=name_len@entry=6) at
> /usr/src/debug/autofs-5.1.8/daemon/lookup.c:823
> #7  0x0000562bdf8ee4ec in lookup_name_source_instance
> (ap=ap@entry=0x562be0d49120, map=map@entry=0x562be0d49220,
> type=type@entry=0x7f239c001ab0 "sss", name=name@entry=0x7f23a4a6bd90
> "athena", name_len=name_len@entry=6) at
> /usr/src/debug/autofs-5.1.8/daemon/lookup.c:993
> #8  0x0000562bdf8ee5d8 in lookup_map_name
> (this=this@entry=0x7f239c001a70, ap=ap@entry=0x562be0d49120,
> map=map@entry=0x562be0d49220, name=name@entry=0x7f23a4a6bd90
> "athena",
> name_len=name_len@entry=6) at
> /usr/src/debug/autofs-5.1.8/daemon/lookup.c:1044
> #9  0x0000562bdf8ef5ae in lookup_nss_mount (ap=0x562be0d49120,
> source=0x0, name=0x7f23a4a6bd90 "athena", name_len=6) at
> /usr/src/debug/autofs-5.1.8/daemon/lookup.c:1241
> #10 0x0000562bdf8e032b in do_mount_indirect (arg=<optimized out>) at
> /usr/src/debug/autofs-5.1.8/daemon/indirect.c:756
> 
> (gdb) info args
> logopt = 1
> host = 0x7f239c002240
> version = 65
> port = -1
> 
> (gdb) p /t version
> $22 = 1000001
> 
> so, version is (NFS4_REQUESTED | TCP_REQUESTED). It's ok.
> 
> vers is defined as (NFS_VERS_MASK | NFS4_VERS_MASK)
> (gdb) p /t 0x0010 | 0x0020 | 0x0040
> $21 = 1110000
> 
> with vers &= version; TCP_REQUESTED is filtered out and only
> NFS4_REQUESTED stay in. Thus, get_nfs_info will never(?) receive
> TCP_REQUESTED and this makes NFSv4 port setting unreachable:
>  294                 if ((version & NFS4_REQUESTED) && (version &
> TCP_REQUESTED))
>  295                         rpc_info->port = NFS_PORT;

Yes, that's broken.

I'll need to fix that, I'll get back with a patch.

Ian




[Index of Archives]     [Linux Filesystem Development]     [Linux Ext4]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux