[autofs] Re: [NFS] bug in linux mount? (says NetApp)

2006-07-13 Thread Chuck Lever

On 7/11/06, Gregory Baker [EMAIL PROTECTED] wrote:

We have thousands of linux clients hitting netapp file servers (many
3500 series, clustered) on a local gigabit LAN.  From time to time,
applications return file not found when attempting to automount a
directory and access a file.  An example of this is a long running
process, which reads in data, processes it for hours (in which time the
filesystem is unmounted) then tries to read more data from that mount
point (which causes a file not found error in the application).  This
occurs about 1/100th of the time.

Researching at Netapp turns up this bit by Chuck Lever (Linux NFS
contributer)

Using the Linux NFS Client with Network Appliance Filers
http://www.netapp.com/libr ary/tr/3183.pdf  (February 2006)

page 10 says...

Due to a bug in the mount command, the default retransmission timeout
value on Linux for NFS over TCP is quite small...To obtain standard
behavior, we strongly recommend using timeo=600, retrans=2 explicitly
when mounting via TCP.

Our defaults (assuming man pages are correct, RedHat Enterprise Linux 3)
would be timeo=7, retrans=3, which translates to 7+14+28+56 = 105 tenths
of a second (10 seconds).  It appears netapp is suggesting waiting
600+600 = 1200 tenths (120 seconds) before giving up on the mount command...


It's important to distinguish two different types of timeouts.

1.  The mount operation has timed out.

2.  After the mount operation succeeds, an NFS RPC operation has timed out.

TR-3183 discusses the proper settings for 2, but you are experiencing 1.

The automounter attempts to mount one of the filer's exports, but the
mount request times out causing the mounted-on directory to be
exposed.  Your filer is heavily loaded, and the filer's mountd is
single-threaded.  The filer may also be experiencing delays when
requesting information from external servers (like DNS or NIS), in
which case the mount request is held up at the filer.

Both sides are at fault:  the Linux mount command should retry (and I
believe later releases of RHEL 3 were fixed to do this) and the filer
configuration should be reviewed to make sure there are no avoidable
delays while processing mount requests.


* What bug in the mount command do you believe NetApp is talking about?


The bug is that the mount command overrides the proper default RPC
timeout value with a timeout value of 0.7 seconds.  This is *not* the
timeout for mount operations, it is the timeout for the in-kernel NFS
client to retransmit RPC requests.


* What do you think proper options for NFS auto/mounts would be for
extremely busy centralized NFS filers?


If you are using NFS over TCP, the proper timeout value is 60 seconds.


* What is the reference standard behavior?


Solaris, which is the NFSv3 reference implementation, uses effectively
a 60 second timeout on TCP mounts.

--
We who cut mere stones must always be envisioning cathedrals
  -- Quarry worker's creed

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] Problem with mount.nfs4 on latest Fedora 10 updates

2009-08-27 Thread Chuck Lever


On Aug 13, 2009, at 12:50 PM, Howard Wilkinson wrote:

I have just upgraded a couple of servers from FC9 to FC10 and I am  
seeing a major problem with mount.nfs4. This occurs when autofs  
calls the mount program. It then runs at 100% CPU and never  
terminates.


I have VMs that are running similar configuration successfully, so  
this is something driven by being on bare metal.


Kernel is 2.6.27.29-170.2.78.fc10.i686.PAE
nfs-utils is nfs-utils-1.1.4-8.fc10.i386
autofs is autofs-5.0.3-41.i386

Command running is

/sbin/mount.nfs4 battleaxe:/ /hosts/battleaxe -s -o  
rw,nosuid,nodev,tcp,rsize=32768,wsize=32768,hard,intr


The autofs mount has worked and the directories under /hosts/ 
battleaxe have been successfully accessed prior to the problem  
occuring - I suspect this is a remount after and expire has occurred.


Anybody seen this before?
Anybody know what I can do to get round this? [I am on the way to  
FC11 but will have to live with FC10 for a while (a week or so)]

Any extra information I can acquire to diagnose this?

There is nothing in the log files to indicate anything going wrong,  
I could turn debug on if I knew what to set and which messages to  
strip once I do.


You could start with sudo rpcdebug -m nfs -s mount and look in /var/ 
log/messages, or you can strace the running mount command.


--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


[autofs] [ANNOUNCE] fedfs-utils for Linux

2011-04-07 Thread Chuck Lever
Announcing public availability of fedfs-utils for Linux

RFC 5716 introduces the Federated File System (FedFS, for short). FedFS is an 
extensible standardized mechanism by which system administrators construct a 
coherent namespace across multiple file servers using file system referrals.

The fedfs-utils package is an implementation of the user space components 
that provide FedFS features on Linux. The package is released under GPL version 
2.

The current release is 0.6.1.  This is a very early alpha release for 
technology preview.  Administrative, programming, and command line interfaces 
will change as this package evolves, and must not be relied on.

See http://oss.oracle.com/projects/fedfs-utils for more information and source 
code downloads.  Two mailman mailing lists are also available:

  fedfs-utils-annou...@oss.oracle.com
  fedfs-utils-de...@oss.oracle.com

Future release announcements will occur only on fedfs-utils-announce.

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [ANNOUNCE] fedfs-utils for Linux

2011-04-12 Thread Chuck Lever

On Apr 12, 2011, at 11:54 AM, Christoph Hellwig wrote:

 On Thu, Apr 07, 2011 at 04:24:29PM -0400, Chuck Lever wrote:
 See http://oss.oracle.com/projects/fedfs-utils for more information and 
 source code downloads.  Two mailman mailing lists are also available:
 
  fedfs-utils-annou...@oss.oracle.com
  fedfs-utils-de...@oss.oracle.com
 
 Is it really a good idea to not just one but two separate mailinglist
 for something tightly integrated with nfs anyway?  Why not just use
 linux-nfs for the small amount of additional traffic?

FedFS is agnostic to the underlying file protocol.  The current Linux FedFS 
prototype happens to be NFS-only, but we don't expect it to stay that way.

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


[autofs] [PATCH] FedFS file system client support

2011-05-26 Thread Chuck Lever
Hi-

The next release of fedfs-utils will provide all necessary components
for a Linux NFS client to participate in a FedFS domain as a file
system client.  This new utility is intended to be a part of the
upcoming release.

I'm interested in comments on this approach.  Ian had suggested a new
lookup module, but a program map looked simpler to prototype and has
the great advantage of no dependencies between fedfs-utils and autofs.
If program maps have some nasty problem that require the use of a
lookup module, we can take that next step.

---

Chuck Lever (1):
  mount: Add automounter program map for FedFS


 .gitignore |1 
 INSTALL|   10 +-
 README |   14 ++-
 doc/man/Makefile.am|2 
 doc/man/fedfs-map-nfs4.8   |  154 
 doc/man/fedfs.7|4 +
 src/mount/Makefile.am  |5 +
 src/mount/fedfs-map-nfs4.c |  242 
 8 files changed, 422 insertions(+), 10 deletions(-)
 create mode 100644 doc/man/fedfs-map-nfs4.8
 create mode 100644 src/mount/fedfs-map-nfs4.c

-- 
Chuck Lever

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


[autofs] [PATCH] mount: Add automounter program map for FedFS

2011-05-26 Thread Chuck Lever
This new utility interprets the passed-in key as a FedFS domain,
performs a DNS SRV lookup, and generates the mount.nfs parameters
needed to mount the domain.  It can handle multiple read-only and
read-write domain root replicas using support already built into the
automounter.

The FedFS entry in the master map might look like this:

  /nfs4 /usr/sbin/fedfs-map-nfs4

To support other file system protocols, additional lines in the master
map and another program map utility (or options for this one) would be
needed.

Benefits:

  o  Simple to configure

  o  The TLD can be placed anywhere on the client

  o  No additional build or package dependencies on nfs-utils or
 autofs

Signed-off-by: Chuck Lever chuck.le...@oracle.com
---

 .gitignore |1 
 INSTALL|   10 +-
 README |   14 ++-
 doc/man/Makefile.am|2 
 doc/man/fedfs-map-nfs4.8   |  154 
 doc/man/fedfs.7|4 +
 src/mount/Makefile.am  |5 +
 src/mount/fedfs-map-nfs4.c |  242 
 8 files changed, 422 insertions(+), 10 deletions(-)
 create mode 100644 doc/man/fedfs-map-nfs4.8
 create mode 100644 src/mount/fedfs-map-nfs4.c

diff --git a/.gitignore b/.gitignore
index ce06ff1..41daf0f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ src/fedfsd/fedfsd
 src/resolve-junction/resolve-junction
 src/nsdbparams/nsdbparams
 src/mount/mount.fedfs
+src/mount/fedfs-map-nfs4
 libadmin.a
 libjunction.a
 libnsdb.a
diff --git a/INSTALL b/INSTALL
index 8cb8e9e..548381b 100644
--- a/INSTALL
+++ b/INSTALL
@@ -143,12 +143,14 @@ FedFS file server
 
 FedFS client
 
-  o Install mount.fedfs
+  o Install /usr/sbin/fedfs-map-nfs4
 
-  o Create a local /nfs4 directory, and subdirectories for the FedFS
-domains you want to mount
+  o Create a local /nfs4 directory
 
-  o Add lines to /etc/fstab to mount the domains
+  o Install and configure autofs
+
+  o Add an entry to the master map (usually /etc/auto.master) for
+the /nfs4 directory and restart autofs
 
 
 FedFS admin client
diff --git a/README b/README
index 0067ac2..78b9647 100644
--- a/README
+++ b/README
@@ -59,7 +59,10 @@ changed over time.
 
 Installable components include:
 
-   o  A mount command to mount the top of a FedFS domain namespace
+   o  An automounter program map to manage the FedFS domain namespace
+  on FedFS-enabled clients
+
+   o  A mount command to mount parts of a FedFS domain namespace
 
o  An ONC RPC service daemon that runs on file servers enabling the
   management by remote FedFS ADMIN clients of FedFS junctions
@@ -81,9 +84,14 @@ Installable components include:
o  HTML Doxygen style documentation with built-in source browser
 
 
+The automounter program map is a subcommand invoked by the automounter
+to locate FedFS domains and construct appropriate mount options for
+mounting domain roots.  It is used in conjunction with the Linux
+autofs facility.
+
 The mount command is a subcommand invoked by mount(8) to handle the
-housekeeping needed to find and mount FedFS domains at the top of the
-client's FedFS namespace (usually /nfs4 for NFSv4 servers).
+housekeeping needed to find and mount part or all of FedFS domain
+name spaces.
 
 The fedfsd program is an RPC server that allows remote administrators to
 create FedFS junctions in local file systems.  FedFS ADMIN requests that
diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am
index 7f92ebf..83c6d03 100644
--- a/doc/man/Makefile.am
+++ b/doc/man/Makefile.am
@@ -24,6 +24,6 @@
 ##
 
 dist_man7_MANS = fedfs.7
-dist_man8_MANS = rpc.fedfsd.8 mount.fedfs.8
+dist_man8_MANS = rpc.fedfsd.8 mount.fedfs.8 fedfs-map-nfs4.8
 CLEANFILES = cscope.in.out cscope.out cscope.po.out
 DISTCLEANFILES = Makefile.in
diff --git a/doc/man/fedfs-map-nfs4.8 b/doc/man/fedfs-map-nfs4.8
new file mode 100644
index 000..ffc5b6a
--- /dev/null
+++ b/doc/man/fedfs-map-nfs4.8
@@ -0,0 +1,154 @@
+.\@(#)fedfs-map-nfs4.8
+.\
+.\ @file doc/man/fedfs-map-nfs4.8
+.\ @brief man page for fedfs-map-nfs4 command
+.\
+
+.\
+.\ Copyright 2011 Oracle.  All rights reserved.
+.\
+.\ This file is part of fedfs-utils.
+.\
+.\ fedfs-utils is free software; you can redistribute it and/or modify
+.\ it under the terms of the GNU General Public License version 2.0 as
+.\ published by the Free Software Foundation.
+.\
+.\ fedfs-utils is distributed in the hope that it will be useful, but
+.\ WITHOUT ANY WARRANTY; without even the implied warranty of
+.\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\ GNU General Public License version 2.0 for more details.
+.\
+.\ You should have received a copy of the GNU General Public License
+.\ version 2.0 along with fedfs-utils.  If not, see:
+.\
+.\http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
+.\
+.TH FEDFS-MAP-NFS4 8 30 Apr 2011
+.SH NAME
+fedfs-map-nfs4 \- generate automounter program

[autofs] Thoughts on dynamic networking with AutoFS/NFS

2011-06-20 Thread Chuck Lever

 From: Ian Kent ra...@themaw.net
 
 On Thu, 2011-06-16 at 20:20 +0100, Colin Simpson wrote:
 Hi
 
 I was just wondering what the thoughts (maybe plans) are for making
 autofs/nfs more dynamic in the new world of dynamic networking with
 the likes of Network Manager now being the default.
 
 I've read this a couple of times now and I'm still not sure what to say
 because the mail is so open ended. But here are a few comments anyway.
 
 That might mean dbus integration which I've tried to avoid because, to
 me, that looks really painful and AFAICT the documentation is lousy so
 working out what the hell to do is difficult and frustrating.
 
 But that's not really the largest part of the work either, which I won't
 try and go into now, because of the main difficulty described below.
 
 
 We now have quite a few users with linux laptops and they want to see
 the standard automounts on these. But being laptops they frequently
 switch subnet, jump on WiFi and VPN etc. 
 
 Most subsystems seem to play pretty well with this dynamic network
 environment and are hooked into NM (with SSSD doing a good job with
 off net credentials and directory services caching)
 
 Now I know that autofs/nfs is a much harder nut to crack given its
 heavy in kernel component, but I'd have thought the present
 non-dynamic behaviour is a bit of an anomaly. 
 
 The issue is NFS.
 
 Dynamic fail-over for mounts has been on the NFS list of things to do
 for over five years and is not done yet. I'm not even sure anything is
 being done or has been done toward it. And that's just for the simpler
 case of read-only mounts.
 
 I'm not sure that is what your after either but the difficulty would be
 considerably more for read-write mounts. For example, although nfs
 mounts are stateless (nfs4 is another matter entirely), they rely on a
 file handle that is constructed based on server dependent information so
 moving from one network to another and expecting mounts to just continue
 to work is not going to be simple, if it is even possible.

For more information on NFS plans in this area, Colin, you could post your 
questions to linux-...@vger.kernel.org.  The NFS version 4 protocol provides 
lots of opportunities for client-side fail-over support, even for read/write 
mounts.  We're working on some of these pieces now, but it will be a while.

The question of NFSv3 client-side fail-over support is more sticky, as Ian has 
pointed out.

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [Libtirpc-devel] [PATCH] Autofs configure fails to detect IPv6 when libtirpc is enabled

2011-07-26 Thread Chuck Lever

On Jul 26, 2011, at 10:02 PM, Ian Kent wrote:

 On Wed, 2011-07-27 at 09:23 +0800, Ian Kent wrote:
 On Wed, 2011-07-27 at 08:57 +0800, Ian Kent wrote:
 On Tue, 2011-07-26 at 17:13 -0400, Steve Dickson wrote:
 
 On 07/26/2011 10:50 AM, Chuck Lever wrote:
 
 On Jul 26, 2011, at 2:29 PM, Steve Dickson wrote:
 
 From: Ian Kent ra...@themaw.net
 
 The IPv6 client functions clntudp6_bufcreate(), clntudp6_create and
 clnttcp6_create and the server functions svcudp6_bufcreate(),
 svctcp6_create() and svcudp6_create() are not included in the library
 whe libtirpc is built.
 
 Are these part of the libtirpc standard API?  I'm not sure why we would 
 need them if, say, Solaris does not support these.
 It appears they are not since they are not mentioned the man pages.
 But, at least in the autofs code, they are expected
   https://bugzilla.redhat.com/show_bug.cgi?id=711956#c0
 
 Ian, where else are these routines defined? 
 
 Now that I look I can't find the original source tar that was used for
 libtirpc, thought I had it.
 
 Found what I had.
 
 AFAICT what I think was the original source doesn't have any IPv6 code
 that I can see.
 
 Worse, these functions were excluded with the #ifdef INET6_NOT_USED
 macro as far back as libtirpc version 0.1.5 so, my bad, sorry.
 
 
 The story is that long ago when I changed autofs to use libtirpc (to
 make it ready for IPv6) I found these functions in the source and they
 were (obviously) the IPv6 counterparts for the corresponding IPv4
 functions which I was already using, so I used them. It took me quite a
 while to realize my code wasn't working and then I found that somewhere
 along the line they have been excluded, oops!
 
 If there are to be no IPv6 counterparts for the corresponding IPv4
 functions which functions should I use then?
 
 So what can I use?
 
 It seems to me that these functions would be useful for people porting
 code that uses the corresponding IPv4 functions so could we define them
 please. At some point someone must have had that same idea 
 
 Found one more thing that looks relevant, these functions were defined
 in glibc in 2000-01-23 so they may be used by others as well.

I checked in glibc 2.7 (though not thoroughly) and did not find them.

 
 
 
 
 steved
 
 
 Signed-off-by: Steve Dickson ste...@redhat.com
 ---
 src/rpc_soc.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/src/rpc_soc.c b/src/rpc_soc.c
 index c678429..584ac71 100644
 --- a/src/rpc_soc.c
 +++ b/src/rpc_soc.c
 @@ -236,7 +236,7 @@ clnttcp_create(raddr, prog, vers, sockp, sendsz, 
 recvsz)
 
 /* IPv6 version of clnt*_*create */
 
 -#ifdef INET6_NOT_USED
 +#ifdef INET6
 
 CLIENT *
 clntudp6_bufcreate(raddr, prog, vers, wait, sockp, sendsz, recvsz)
 @@ -392,7 +392,7 @@ svcraw_create()
 
 
 /* IPV6 version */
 -#ifdef INET6_NOT_USED
 +#ifdef INET6
 SVCXPRT *
 svcudp6_bufcreate(fd, sendsz, recvsz)
  int fd;
 -- 
 1.7.6
 
 
 --
 Magic Quadrant for Content-Aware Data Loss Prevention
 Research study explores the data loss prevention market. Includes 
 in-depth
 analysis on the changes within the DLP market, and the criteria used to
 evaluate the strengths and weaknesses of these DLP solutions.
 http://www.accelacomm.com/jaw/sfnl/114/51385063/
 ___
 Libtirpc-devel mailing list
 libtirpc-de...@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/libtirpc-devel
 
 
 --
 Got Input?   Slashdot Needs You.
 Take our quick survey online.  Come on, we don't ask for help often.
 Plus, you'll get a chance to win $100 to spend on ThinkGeek.
 http://p.sf.net/sfu/slashdot-survey
 ___
 Libtirpc-devel mailing list
 libtirpc-de...@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/libtirpc-devel
 
 
 
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-nfs in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html


___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [Libtirpc-devel] [PATCH] Autofs configure fails to detect IPv6 when libtirpc is enabled

2011-07-26 Thread Chuck Lever

On Jul 26, 2011, at 10:40 PM, Ian Kent wrote:

 On Tue, 2011-07-26 at 22:09 -0400, Chuck Lever wrote:
 On Jul 26, 2011, at 9:23 PM, Ian Kent wrote:
 
 On Wed, 2011-07-27 at 08:57 +0800, Ian Kent wrote:
 On Tue, 2011-07-26 at 17:13 -0400, Steve Dickson wrote:
 
 On 07/26/2011 10:50 AM, Chuck Lever wrote:
 
 On Jul 26, 2011, at 2:29 PM, Steve Dickson wrote:
 
 From: Ian Kent ra...@themaw.net
 
 The IPv6 client functions clntudp6_bufcreate(), clntudp6_create and
 clnttcp6_create and the server functions svcudp6_bufcreate(),
 svctcp6_create() and svcudp6_create() are not included in the library
 whe libtirpc is built.
 
 Are these part of the libtirpc standard API?  I'm not sure why we would 
 need them if, say, Solaris does not support these.
 It appears they are not since they are not mentioned the man pages.
 But, at least in the autofs code, they are expected
  https://bugzilla.redhat.com/show_bug.cgi?id=711956#c0
 
 Ian, where else are these routines defined? 
 
 Now that I look I can't find the original source tar that was used for
 libtirpc, thought I had it.
 
 Found what I had.
 
 AFAICT what I think was the original source doesn't have any IPv6 code
 that I can see.
 
 Worse, these functions were excluded with the #ifdef INET6_NOT_USED
 macro as far back as libtirpc version 0.1.5 so, my bad, sorry.
 
 
 The story is that long ago when I changed autofs to use libtirpc (to
 make it ready for IPv6) I found these functions in the source and they
 were (obviously) the IPv6 counterparts for the corresponding IPv4
 functions which I was already using, so I used them. It took me quite a
 while to realize my code wasn't working and then I found that somewhere
 along the line they have been excluded, oops!
 
 If there are to be no IPv6 counterparts for the corresponding IPv4
 functions which functions should I use then?
 
 So what can I use?
 
 It seems to me that these functions would be useful for people porting
 code that uses the corresponding IPv4 functions so could we define them
 please. At some point someone must have had that same idea 
 
 It looks to me like these functions were part of an original attempt
 at IPv6 support that was abandoned long ago.  They are not part of
 TI-RPC, but as you observed, they are merely IPv6 versions of the
 legacy RPC API. I don't see these implemented in glibc, for example.
 
 For IPv6 support, use functions that are part of the modern libtirpc
 API.  This is described in Sun doc 816-1435.  You probably will be
 most successful with the simplified interface which is described in
 Chapter 4. You might need somewhat more extensive surgery since I'm
 guessing you have separate code paths to invoke the IPv4 and IPv6
 legacy RPC functions; generally speaking that should not be needed
 when using the libtirpc API.
 
 I doubt the simplified interface will be adequate since this code was
 written because of a need for greater control over timeouts. Perhaps
 that won't be the case, I don't know yet.

If you want control over connection timeouts, use the expert-level or 
bottom-level interfaces.  Otherwise you can set per-RPC timeouts when 
clnt_call(3t) is invoked.  nfs-utils has some example code 
(support/nfs/rpc_socket.c is one place to look).

 Your suggestion amounts to saying I need to re-write all my RPC code.

The substantial change with client-side TI-RPC is how CLIENTs are created.  The 
other RPC operations are similar or the same as they were with the legacy API.  
Once you get over getnetconfigent(3t) it's really not as bad as it looks.


___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [Libtirpc-devel] [PATCH] Autofs configure fails to detect IPv6 when libtirpc is enabled

2011-07-28 Thread Chuck Lever

On Jul 27, 2011, at 10:26 PM, Ian Kent wrote:

 On Tue, 2011-07-26 at 23:30 -0400, Chuck Lever wrote:
 
 For IPv6 support, use functions that are part of the modern libtirpc
 API.  This is described in Sun doc 816-1435.  You probably will be
 most successful with the simplified interface which is described in
 Chapter 4. You might need somewhat more extensive surgery since I'm
 guessing you have separate code paths to invoke the IPv4 and IPv6
 legacy RPC functions; generally speaking that should not be needed
 when using the libtirpc API.
 
 I doubt the simplified interface will be adequate since this code was
 written because of a need for greater control over timeouts. Perhaps
 that won't be the case, I don't know yet.
 
 If you want control over connection timeouts, use the expert-level or
 bottom-level interfaces.  Otherwise you can set per-RPC timeouts when
 clnt_call(3t) is invoked.  nfs-utils has some example code
 (support/nfs/rpc_socket.c is one place to look).
 
 Your suggestion amounts to saying I need to re-write all my RPC
 code.
 
 The substantial change with client-side TI-RPC is how CLIENTs are
 created.  The other RPC operations are similar or the same as they
 were with the legacy API.  Once you get over getnetconfigent(3t) it's
 really not as bad as it looks.
 
 
 Umm ...
 
 Why is __rpcb_findaddr() declared in the public header files but not
 defined anywhere is the source?
 
 Why is __rpcb_findaddr_timed() defined in the source but not defined in
 the public header files?

This version of libtirpc was split from the Sun version over a decade ago when 
the code was immature.  So you're going to find this kind of thing in many 
places.

The TI-RPC API is defined in 816-1435.  You really shouldn't consider using any 
of the interfaces defined in the headers but not in that doc, as those are 
internal interfaces and can change.

On the other hand, we have at least two important RPC-based applications that 
can make use of this interface.  I wonder if it makes sense to harden that API 
but leave it hidden, so apps external to the library can depend on it.

Such apps would not be portable away from Linux nor to Linux distributions that 
don't have libtirpc yet.

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs


Re: [autofs] [Libtirpc-devel] [PATCH] Autofs configure fails to detect IPv6 when libtirpc is enabled

2011-07-28 Thread Chuck Lever
On Thu, Jul 28, 2011 at 10:33 AM, Ian Kent ik...@redhat.com wrote:
 On Thu, 2011-07-28 at 07:20 -0400, Chuck Lever wrote:
 On Jul 27, 2011, at 10:26 PM, Ian Kent wrote:
 
  Umm ...
 
  Why is __rpcb_findaddr() declared in the public header files but not
  defined anywhere is the source?
 
  Why is __rpcb_findaddr_timed() defined in the source but not defined in
  the public header files?

 This version of libtirpc was split from the Sun version over a decade
 ago when the code was immature.  So you're going to find this kind of
 thing in many places.

 Yes, I was aware of that, but haven't paid enough attention to the doc.


 The TI-RPC API is defined in 816-1435.  You really shouldn't consider
 using any of the interfaces defined in the headers but not in that
 doc, as those are internal interfaces and can change.

 Ummm .. rpcb_getaddr() might be what I'm looking for, I'll look further.


 On the other hand, we have at least two important RPC-based
 applications that can make use of this interface.  I wonder if it
 makes sense to harden that API but leave it hidden, so apps external
 to the library can depend on it.

 Yeah, but if I can achieve what I need without it that's the way I'll
 go. It looks like I might not be able to do what I want the way I want
 with ti-rpc but it is still too early to tell. It's also too early to
 tell if ti-rpc actually already does some or all of what I need already.
 Time will tell.

 One example of something I need is to control the timeout, not the
 timeout for interactions after the client is constructed but the timeout
 of the client construction itself, including any queries to rpcbind that
 may be needed (hence why I want to do that manually too).

Yes, nfs-utils does this too.  See support/nfs/rpc_socket.c.  It looks
a lot like what is done in autofs's lib/rpc_subs.c.

-- 
Blast this Christmas music!  It's joyful _and_ triumphant!
 -- The Grinch

___
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs