[LTP] [PATCH] nfs_lib.sh: run exportfs at "server side" in LTP_NETNS case

Petr Vorel pvorel@suse.cz
Fri Jan 14 21:23:40 CET 2022


> 13.01.2022 18:50, Petr Vorel wrote:
> > Hi Nikita,

> > [ Cc Alexey ]

> > > In LTP_NETNS case, nfs server is the root namespace and nfs client is
> > > the ltp namespace.

> > > Then, exportfs shall be executed locally, without tst_rhost_run.

> > > Otherwise, things implicitly depend on /var/lib/nfs being the same in
> > > the root namespace and the ltp namespace.
> > Not sure if I understand your use case. Do you run rpc.statd (or what is using
> > /var/lib/nfs) in non-default net namespace?

> 'exportfs' command maintains /var/lib/nfs/etab file, to be read by
> rpc.mountd when processing mount requests.

> 'exportfs' must be executed in the same environment where rpc.mountd runs

> In LTP_NETNS case, rpc.mountd runs on the host's root namespaces
> (and mount runs in ltp's non-root namespace).

> Thus for correctness, must execute 'exportfs' in the root namespace.

Ah, you're right.

> Currently ltp runs 'exportfs' in ltpns, which works only because ltpns does
> not unshare /var from root namespace.

> But not unsharing /var makes AF_UNIX socket for host's rpcbind to become
> available inside ltpns. Then, at nfs3 mount time, kernel creates an instance
> of lockd for ltpns, and ports for that instance leak to host's rpcbind and
> overwrite ports for lockd already active for root namespace. This breaks
> nfs3 file locking. But that is not found by nfslock01 test because that test
> ignores the errors from the very operations it is intended to test.

> This patch, and the patch that makes nfslock01 to actually fail on errors, is part of fixing all that mess.
+1. FYI I get errno ENOLCK for NFSv3 on both unpatched and patched nfs_lib.sh.

> > > -	if ! tst_rhost_run -c "test -d $remote_dir"; then
> > > -		tst_rhost_run -s -c "mkdir -p $remote_dir; $export_cmd"
> > > +	if [ -n "$LTP_NETNS" ]; then
> > Please use tst_net_use_netns (as in the patch I Cc you just now).

> > Shouldn't be also $LTP_NFS_NETNS_USE_LO considered?

> The rule is - run exportfs in the environment that plays the 'nfs server' role.

> I'm not sure about exact semantics of $LTP_NFS_NETNS_USE_LO, but per
> what I see in the code, it does not affect how address in $mount_dir is
> configured. Then, it also shall not affect the choice of where 'exportfs'
> runs.
Sorry, $LTP_NFS_NETNS_USE_LO is separated thing (mounting does not affect server
setup).

Waiting for Alexey or Martin if they have any comment before merging both fixes on Monday.

Kind regards,
Petr

> Nikita


More information about the ltp mailing list