Re: nfs4.1+: workaround for defunct clientaddr?

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

 



On Sun, 2022-10-02 at 14:35 +0200, Manfred Schwarb wrote:
> Hi,
> 
> I have 2 boxes connected with 2 network cards each, one
> crossover connection and one connection via LAN.
> I want to use the crossover connection for backup,
> so I want to be able to select exactly this wire when
> doing my NFS backup transfers. Everything interconnected via NFS4.1
> and automount.
> 
> Now the thing is, if there is an already existing connection
> via LAN, I am not able to select the crossover connection,
> there is some session reuse against my will.
> 
> automount config:
> /net/192.168.99.1  -fstype=nfs4,nfsvers=4,minorversion=1,clientaddr=192.168.99.100   /  192.168.99.1:/
> /net2/192.168.98.1 -fstype=nfs4,nfsvers=4,minorversion=1,clientaddr=192.168.98.100   /  192.168.98.1:/
> 
> mount -l:
> 192.168.99.1:/data on /net/192.168.99.1/data type nfs4 (...,clientaddr=192.168.99.100,addr=192.168.99.1)
> 192.168.99.1:/data on /net2/192.168.98.1/data type nfs4 (...,clientaddr=192.168.99.100,addr=192.168.99.1)
> 
> As you see, both connections are on "192.168.99.1:/data", and the backup runs
> over the same wire as all user communication, which is not desired.
> This even happens if I explicitly set some clientaddr= option.
> 
> Now I found two workarounds:
> - downgrade to NFS 4.0, clientaddr seems to work with it
> - choose different NFS versions, i.e. one connection with
>   minorversion=1 and the other with minorversion=2
> 
> Both possibilities seem a bit lame to me.
> Are there some other (recommended) variants which do what I want?
> 
> It seems different minor versions result in different "nfs4_unique_id" values,
> and therefore no session sharing occurs. But why do different network
> interfaces (via explicitly set clientaddr= by user) not result in different
> "nfs4_unique_id" values?
> 
> Thanks for any comments and advice,
> Manfred

That sounds like a bug. We probably need to compare the clientaddr
values in nfs_compare_super or nfs_compare_mount_options so that it
doesn't match if the clientaddrs are different.

As a workaround, you can probably mount the second mount with
-o nosharecache and get what you want.
-- 
Jeff Layton <jlayton@xxxxxxxxxx>




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux