From 2cf11ec6ed261ef56bbd0d73ff404fe69f1fefb0 Mon Sep 17 00:00:00 2001
From: Jeff Layton <jlayton@redhat.com>
Date: Thu, 8 Nov 2012 15:09:41 -0500
Subject: [PATCH] nfsdcltrack: remove the nfsdcld daemon

Since we want to move to using the usermodehelper upcall
unconditionally, just remove nfsdcld. The kernel code to handle
this will be formally deprecated in 3.10 as well.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
---
 utils/nfsdcltrack/Makefile.am |   7 +-
 utils/nfsdcltrack/nfsdcld     | Bin 64499 -> 0 bytes
 utils/nfsdcltrack/nfsdcld.c   | 607 ----------------------------------
 utils/nfsdcltrack/nfsdcld.man | 185 -----------
 4 files changed, 2 insertions(+), 797 deletions(-)
 delete mode 100755 utils/nfsdcltrack/nfsdcld
 delete mode 100644 utils/nfsdcltrack/nfsdcld.c
 delete mode 100644 utils/nfsdcltrack/nfsdcld.man

diff --git a/utils/nfsdcltrack/Makefile.am b/utils/nfsdcltrack/Makefile.am
index 1746a25..a860ffb 100644
--- a/utils/nfsdcltrack/Makefile.am
+++ b/utils/nfsdcltrack/Makefile.am
@@ -1,13 +1,10 @@
 ## Process this file with automake to produce Makefile.in
 
-man8_MANS	= nfsdcld.man nfsdcltrack.man
+man8_MANS	= nfsdcltrack.man
 EXTRA_DIST	= $(man8_MANS)
 
 AM_CFLAGS	+= -D_LARGEFILE64_SOURCE
-sbin_PROGRAMS	= nfsdcld nfsdcltrack
-
-nfsdcld_SOURCES = nfsdcld.c sqlite.c
-nfsdcld_LDADD = ../../support/nfs/libnfs.a $(LIBEVENT) $(LIBSQLITE) $(LIBCAP)
+sbin_PROGRAMS	= nfsdcltrack
 
 nfsdcltrack_SOURCES = nfsdcltrack.c sqlite.c
 nfsdcltrack_LDADD = ../../support/nfs/libnfs.a $(LIBSQLITE) $(LIBCAP)
diff --git a/utils/nfsdcltrack/nfsdcld b/utils/nfsdcltrack/nfsdcld
deleted file mode 100755
index eedf29d773f26fcedc4c39c5142e6b045135d77a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 64499
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

diff --git a/utils/nfsdcltrack/nfsdcld.c b/utils/nfsdcltrack/nfsdcld.c
deleted file mode 100644
index 473d069..0000000
--- a/utils/nfsdcltrack/nfsdcld.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * nfsdcld.c -- NFSv4 client name tracking daemon
- *
- * Copyright (C) 2011  Red Hat, Jeff Layton <jlayton@redhat.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program 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 for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <errno.h>
-#include <event.h>
-#include <stdbool.h>
-#include <getopt.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <libgen.h>
-#include <sys/inotify.h>
-#ifdef HAVE_SYS_CAPABILITY_H
-#include <sys/prctl.h>
-#include <sys/capability.h>
-#endif
-
-#include "xlog.h"
-#include "nfslib.h"
-#include "cld.h"
-#include "sqlite.h"
-
-#ifndef PIPEFS_DIR
-#define PIPEFS_DIR NFS_STATEDIR "/rpc_pipefs"
-#endif
-
-#define DEFAULT_CLD_PATH	PIPEFS_DIR "/nfsd/cld"
-
-#ifndef CLD_DEFAULT_STORAGEDIR
-#define CLD_DEFAULT_STORAGEDIR NFS_STATEDIR "/nfsdcld"
-#endif
-
-#define UPCALL_VERSION		1
-
-/* private data structures */
-struct cld_client {
-	int			cl_fd;
-	struct event		cl_event;
-	struct cld_msg	cl_msg;
-};
-
-/* global variables */
-static char *pipepath = DEFAULT_CLD_PATH;
-static int 		inotify_fd = -1;
-static struct event	pipedir_event;
-
-static struct option longopts[] =
-{
-	{ "help", 0, NULL, 'h' },
-	{ "foreground", 0, NULL, 'F' },
-	{ "debug", 0, NULL, 'd' },
-	{ "pipe", 1, NULL, 'p' },
-	{ "storagedir", 1, NULL, 's' },
-	{ NULL, 0, 0, 0 },
-};
-
-/* forward declarations */
-static void cldcb(int UNUSED(fd), short which, void *data);
-
-static void
-usage(char *progname)
-{
-	printf("%s [ -hFd ] [ -p pipe ] [ -s dir ]\n", progname);
-}
-
-static int
-cld_set_caps(void)
-{
-	int ret = 0;
-#ifdef HAVE_SYS_CAPABILITY_H
-	unsigned long i;
-	cap_t caps;
-
-	if (getuid() != 0) {
-		xlog(L_ERROR, "Not running as root. Daemon won't be able to "
-			      "open the pipe after dropping capabilities!");
-		return -EINVAL;
-	}
-
-	/* prune the bounding set to nothing */
-	for (i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0 ; ++i) {
-		ret = prctl(PR_CAPBSET_DROP, i, 0, 0, 0);
-		if (ret) {
-			xlog(L_ERROR, "Unable to prune capability %lu from "
-				      "bounding set: %m", i);
-			return -errno;
-		}
-	}
-
-	/* get a blank capset */
-	caps = cap_init();
-	if (caps == NULL) {
-		xlog(L_ERROR, "Unable to get blank capability set: %m");
-		return -errno;
-	}
-
-	/* reset the process capabilities */
-	if (cap_set_proc(caps) != 0) {
-		xlog(L_ERROR, "Unable to set process capabilities: %m");
-		ret = -errno;
-	}
-	cap_free(caps);
-#endif
-	return ret;
-}
-
-#define INOTIFY_EVENT_MAX (sizeof(struct inotify_event) + NAME_MAX)
-
-static int
-cld_pipe_open(struct cld_client *clnt)
-{
-	int fd;
-
-	xlog(D_GENERAL, "%s: opening upcall pipe %s", __func__, pipepath);
-	fd = open(pipepath, O_RDWR, 0);
-	if (fd < 0) {
-		xlog(D_GENERAL, "%s: open of %s failed: %m", __func__, pipepath);
-		return -errno;
-	}
-
-	if (clnt->cl_event.ev_flags & EVLIST_INIT)
-		event_del(&clnt->cl_event);
-	if (clnt->cl_fd >= 0)
-		close(clnt->cl_fd);
-
-	clnt->cl_fd = fd;
-	event_set(&clnt->cl_event, clnt->cl_fd, EV_READ, cldcb, clnt);
-	/* event_add is done by the caller */
-	return 0;
-}
-
-static void
-cld_inotify_cb(int UNUSED(fd), short which, void *data)
-{
-	int ret;
-	size_t elen;
-	ssize_t rret;
-	char evbuf[INOTIFY_EVENT_MAX];
-	char *dirc = NULL, *pname;
-	struct inotify_event *event = (struct inotify_event *)evbuf;
-	struct cld_client *clnt = data;
-
-	if (which != EV_READ)
-		return;
-
-	xlog(D_GENERAL, "%s: called for EV_READ", __func__);
-
-	dirc = strndup(pipepath, PATH_MAX);
-	if (!dirc) {
-		xlog(L_ERROR, "%s: unable to allocate memory", __func__);
-		goto out;
-	}
-
-	rret = read(inotify_fd, evbuf, INOTIFY_EVENT_MAX);
-	if (rret < 0) {
-		xlog(L_ERROR, "%s: read from inotify fd failed: %m", __func__);
-		goto out;
-	}
-
-	/* check to see if we have a filename in the evbuf */
-	if (!event->len) {
-		xlog(D_GENERAL, "%s: no filename in inotify event", __func__);
-		goto out;
-	}
-
-	pname = basename(dirc);
-	elen = strnlen(event->name, event->len);
-
-	/* does the filename match our pipe? */
-	if (strlen(pname) != elen || memcmp(pname, event->name, elen)) {
-		xlog(D_GENERAL, "%s: wrong filename (%s)", __func__,
-				event->name);
-		goto out;
-	}
-
-	ret = cld_pipe_open(clnt);
-	switch (ret) {
-	case 0:
-		/* readd the event for the cl_event pipe */
-		event_add(&clnt->cl_event, NULL);
-		break;
-	case -ENOENT:
-		/* pipe must have disappeared, wait for it to come back */
-		goto out;
-	default:
-		/* anything else is fatal */
-		xlog(L_FATAL, "%s: unable to open new pipe (%d). Aborting.",
-			ret, __func__);
-		exit(ret);
-	}
-
-out:
-	event_add(&pipedir_event, NULL);
-	free(dirc);
-}
-
-static int
-cld_inotify_setup(void)
-{
-	int ret;
-	char *dirc, *dname;
-
-	dirc = strndup(pipepath, PATH_MAX);
-	if (!dirc) {
-		xlog_err("%s: unable to allocate memory", __func__);
-		ret = -ENOMEM;
-		goto out_free;
-	}
-
-	dname = dirname(dirc);
-
-	inotify_fd = inotify_init();
-	if (inotify_fd < 0) {
-		xlog_err("%s: inotify_init failed: %m", __func__);
-		ret = -errno;
-		goto out_free;
-	}
-
-	ret = inotify_add_watch(inotify_fd, dname, IN_CREATE);
-	if (ret < 0) {
-		xlog_err("%s: inotify_add_watch failed: %m", __func__);
-		ret = -errno;
-		goto out_err;
-	}
-
-out_free:
-	free(dirc);
-	return 0;
-out_err:
-	close(inotify_fd);
-	goto out_free;
-}
-
-/*
- * Set an inotify watch on the directory that should contain the pipe, and then
- * try to open it. If it fails with anything but -ENOENT, return the error
- * immediately.
- *
- * If it succeeds, then set up the pipe event handler. At that point, set up
- * the inotify event handler and go ahead and return success.
- */
-static int
-cld_pipe_init(struct cld_client *clnt)
-{
-	int ret;
-
-	xlog(D_GENERAL, "%s: init pipe handlers", __func__);
-
-	ret = cld_inotify_setup();
-	if (ret != 0)
-		goto out;
-
-	clnt->cl_fd = -1;
-	ret = cld_pipe_open(clnt);
-	switch (ret) {
-	case 0:
-		/* add the event and we're good to go */
-		event_add(&clnt->cl_event, NULL);
-		break;
-	case -ENOENT:
-		/* ignore this error -- cld_inotify_cb will handle it */
-		ret = 0;
-		break;
-	default:
-		/* anything else is fatal */
-		close(inotify_fd);
-		goto out;
-	}
-
-	/* set event for inotify read */
-	event_set(&pipedir_event, inotify_fd, EV_READ, cld_inotify_cb, clnt);
-	event_add(&pipedir_event, NULL);
-out:
-	return ret;
-}
-
-static void
-cld_not_implemented(struct cld_client *clnt)
-{
-	int ret;
-	ssize_t bsize, wsize;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	xlog(D_GENERAL, "%s: downcalling with not implemented error", __func__);
-
-	/* set up reply */
-	cmsg->cm_status = -EOPNOTSUPP;
-
-	bsize = sizeof(*cmsg);
-
-	wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
-	if (wsize != bsize)
-		xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
-			 __func__, wsize);
-
-	/* reopen pipe, just to be sure */
-	ret = cld_pipe_open(clnt);
-	if (ret) {
-		xlog(L_FATAL, "%s: unable to reopen pipe: %d", __func__, ret);
-		exit(ret);
-	}
-}
-
-static void
-cld_create(struct cld_client *clnt)
-{
-	int ret;
-	ssize_t bsize, wsize;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	xlog(D_GENERAL, "%s: create client record.", __func__);
-
-	ret = sqlite_insert_client(cmsg->cm_u.cm_name.cn_id,
-				   cmsg->cm_u.cm_name.cn_len);
-
-	cmsg->cm_status = ret ? -EREMOTEIO : ret;
-
-	bsize = sizeof(*cmsg);
-
-	xlog(D_GENERAL, "Doing downcall with status %d", cmsg->cm_status);
-	wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
-	if (wsize != bsize) {
-		xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
-			 __func__, wsize);
-		ret = cld_pipe_open(clnt);
-		if (ret) {
-			xlog(L_FATAL, "%s: unable to reopen pipe: %d",
-					__func__, ret);
-			exit(ret);
-		}
-	}
-}
-
-static void
-cld_remove(struct cld_client *clnt)
-{
-	int ret;
-	ssize_t bsize, wsize;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	xlog(D_GENERAL, "%s: remove client record.", __func__);
-
-	ret = sqlite_remove_client(cmsg->cm_u.cm_name.cn_id,
-				   cmsg->cm_u.cm_name.cn_len);
-
-	cmsg->cm_status = ret ? -EREMOTEIO : ret;
-
-	bsize = sizeof(*cmsg);
-
-	xlog(D_GENERAL, "%s: downcall with status %d", __func__,
-			cmsg->cm_status);
-	wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
-	if (wsize != bsize) {
-		xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
-			 __func__, wsize);
-		ret = cld_pipe_open(clnt);
-		if (ret) {
-			xlog(L_FATAL, "%s: unable to reopen pipe: %d",
-					__func__, ret);
-			exit(ret);
-		}
-	}
-}
-
-static void
-cld_check(struct cld_client *clnt)
-{
-	int ret;
-	ssize_t bsize, wsize;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	xlog(D_GENERAL, "%s: check client record", __func__);
-
-	ret = sqlite_check_client(cmsg->cm_u.cm_name.cn_id,
-				  cmsg->cm_u.cm_name.cn_len);
-
-	/* set up reply */
-	cmsg->cm_status = ret ? -EACCES : ret;
-
-	bsize = sizeof(*cmsg);
-
-	xlog(D_GENERAL, "%s: downcall with status %d", __func__,
-			cmsg->cm_status);
-	wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
-	if (wsize != bsize) {
-		xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
-			 __func__, wsize);
-		ret = cld_pipe_open(clnt);
-		if (ret) {
-			xlog(L_FATAL, "%s: unable to reopen pipe: %d",
-					__func__, ret);
-			exit(ret);
-		}
-	}
-}
-
-static void
-cld_gracedone(struct cld_client *clnt)
-{
-	int ret;
-	ssize_t bsize, wsize;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	xlog(D_GENERAL, "%s: grace done. cm_gracetime=%ld", __func__,
-			cmsg->cm_u.cm_gracetime);
-
-	ret = sqlite_remove_unreclaimed(cmsg->cm_u.cm_gracetime);
-
-	/* set up reply: downcall with 0 status */
-	cmsg->cm_status = ret ? -EREMOTEIO : ret;
-
-	bsize = sizeof(*cmsg);
-
-	xlog(D_GENERAL, "Doing downcall with status %d", cmsg->cm_status);
-	wsize = atomicio((void *)write, clnt->cl_fd, cmsg, bsize);
-	if (wsize != bsize) {
-		xlog(L_ERROR, "%s: problem writing to cld pipe (%ld): %m",
-			 __func__, wsize);
-		ret = cld_pipe_open(clnt);
-		if (ret) {
-			xlog(L_FATAL, "%s: unable to reopen pipe: %d",
-					__func__, ret);
-			exit(ret);
-		}
-	}
-}
-
-static void
-cldcb(int UNUSED(fd), short which, void *data)
-{
-	ssize_t len;
-	struct cld_client *clnt = data;
-	struct cld_msg *cmsg = &clnt->cl_msg;
-
-	if (which != EV_READ)
-		goto out;
-
-	len = atomicio(read, clnt->cl_fd, cmsg, sizeof(*cmsg));
-	if (len <= 0) {
-		xlog(L_ERROR, "%s: pipe read failed: %m", __func__);
-		cld_pipe_open(clnt);
-		goto out;
-	}
-
-	if (cmsg->cm_vers != UPCALL_VERSION) {
-		xlog(L_ERROR, "%s: unsupported upcall version: %hu",
-				cmsg->cm_vers);
-		cld_pipe_open(clnt);
-		goto out;
-	}
-
-	switch(cmsg->cm_cmd) {
-	case Cld_Create:
-		cld_create(clnt);
-		break;
-	case Cld_Remove:
-		cld_remove(clnt);
-		break;
-	case Cld_Check:
-		cld_check(clnt);
-		break;
-	case Cld_GraceDone:
-		cld_gracedone(clnt);
-		break;
-	default:
-		xlog(L_WARNING, "%s: command %u is not yet implemented",
-				__func__, cmsg->cm_cmd);
-		cld_not_implemented(clnt);
-	}
-out:
-	event_add(&clnt->cl_event, NULL);
-}
-
-int
-main(int argc, char **argv)
-{
-	char arg;
-	int rc = 0;
-	bool foreground = false;
-	char *progname;
-	char *storagedir = CLD_DEFAULT_STORAGEDIR;
-	struct cld_client clnt;
-
-	memset(&clnt, 0, sizeof(clnt));
-
-	progname = strdup(basename(argv[0]));
-	if (!progname) {
-		fprintf(stderr, "%s: unable to allocate memory.\n", argv[0]);
-		return 1;
-	}
-
-	event_init();
-	xlog_syslog(0);
-	xlog_stderr(1);
-
-	/* process command-line options */
-	while ((arg = getopt_long(argc, argv, "hdFp:s:", longopts,
-				  NULL)) != EOF) {
-		switch (arg) {
-		case 'd':
-			xlog_config(D_ALL, 1);
-			break;
-		case 'F':
-			foreground = true;
-			break;
-		case 'p':
-			pipepath = optarg;
-			break;
-		case 's':
-			storagedir = optarg;
-			break;
-		default:
-			usage(progname);
-			return 0;
-		}
-	}
-
-
-	xlog_open(progname);
-	if (!foreground) {
-		xlog_syslog(1);
-		xlog_stderr(0);
-		rc = daemon(0, 0);
-		if (rc) {
-			xlog(L_ERROR, "Unable to daemonize: %m");
-			goto out;
-		}
-	}
-
-	/* drop all capabilities */
-	rc = cld_set_caps();
-	if (rc)
-		goto out;
-
-	/*
-	 * now see if the storagedir is writable by root w/o CAP_DAC_OVERRIDE.
-	 * If it isn't then give the user a warning but proceed as if
-	 * everything is OK. If the DB has already been created, then
-	 * everything might still work. If it doesn't exist at all, then
-	 * assume that the maindb init will be able to create it. Fail on
-	 * anything else.
-	 */
-	if (access(storagedir, W_OK) == -1) {
-		switch (errno) {
-		case EACCES:
-			xlog(L_WARNING, "Storage directory %s is not writable. "
-					"Should be owned by root and writable "
-					"by owner!", storagedir);
-			break;
-		case ENOENT:
-			/* ignore and assume that we can create dir as root */
-			break;
-		default:
-			xlog(L_ERROR, "Unexpected error when checking access "
-				      "on %s: %m", storagedir);
-			rc = -errno;
-			goto out;
-		}
-	}
-
-	/* set up storage db */
-	rc = sqlite_maindb_init(storagedir);
-	if (rc) {
-		xlog(L_ERROR, "Failed to open main database: %d", rc);
-		goto out;
-	}
-
-	/* set up event handler */
-	rc = cld_pipe_init(&clnt);
-	if (rc)
-		goto out;
-
-	xlog(D_GENERAL, "%s: Starting event dispatch handler.", __func__);
-	rc = event_dispatch();
-	if (rc < 0)
-		xlog(L_ERROR, "%s: event_dispatch failed: %m", __func__);
-
-	close(clnt.cl_fd);
-	close(inotify_fd);
-out:
-	free(progname);
-	return rc;
-}
diff --git a/utils/nfsdcltrack/nfsdcld.man b/utils/nfsdcltrack/nfsdcld.man
deleted file mode 100644
index 9ddaf64..0000000
--- a/utils/nfsdcltrack/nfsdcld.man
+++ /dev/null
@@ -1,185 +0,0 @@
-.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
-.\"
-.\" Standard preamble:
-.\" ========================================================================
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-.fi
-..
-.\" Set up some character translations and predefined strings.  \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
-.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-.    ds -- \(*W-
-.    ds PI pi
-.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
-.    ds L" ""
-.    ds R" ""
-.    ds C` ""
-.    ds C' ""
-'br\}
-.el\{\
-.    ds -- \|\(em\|
-.    ds PI \(*p
-.    ds L" ``
-.    ds R" ''
-'br\}
-.\"
-.\" Escape single quotes in literal strings from groff's Unicode transform.
-.ie \n(.g .ds Aq \(aq
-.el       .ds Aq '
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr for
-.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
-.\" entries marked with X<> in POD.  Of course, you'll have to process the
-.\" output yourself in some meaningful fashion.
-.ie \nF \{\
-.    de IX
-.    tm Index:\\$1\t\\n%\t"\\$2"
-..
-.    nr % 0
-.    rr F
-.\}
-.el \{\
-.    de IX
-..
-.\}
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
-.    \" fudge factors for nroff and troff
-.if n \{\
-.    ds #H 0
-.    ds #V .8m
-.    ds #F .3m
-.    ds #[ \f1
-.    ds #] \fP
-.\}
-.if t \{\
-.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-.    ds #V .6m
-.    ds #F 0
-.    ds #[ \&
-.    ds #] \&
-.\}
-.    \" simple accents for nroff and troff
-.if n \{\
-.    ds ' \&
-.    ds ` \&
-.    ds ^ \&
-.    ds , \&
-.    ds ~ ~
-.    ds /
-.\}
-.if t \{\
-.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-.    \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-.    \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-.    \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-.    ds : e
-.    ds 8 ss
-.    ds o a
-.    ds d- d\h'-1'\(ga
-.    ds D- D\h'-1'\(hy
-.    ds th \o'bp'
-.    ds Th \o'LP'
-.    ds ae ae
-.    ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ========================================================================
-.\"
-.IX Title "NFSDCLD 8"
-.TH NFSDCLD 8 "2011-12-21" "" ""
-.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
-.\" way too many mistakes in technical documents.
-.if n .ad l
-.nh
-.SH "NAME"
-nfsdcld \- NFSv4 Client Tracking Daemon
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-nfsdcld [\-d] [\-F] [\-p path] [\-s stable storage dir]
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-nfsdcld is the NFSv4 client tracking daemon. It is not necessary to run
-this daemon on machines that are not acting as NFSv4 servers.
-.PP
-When a network partition is combined with a server reboot, there are
-edge conditions that can cause the server to grant lock reclaims when
-other clients have taken conflicting locks in the interim. A more detailed
-explanation of this issue is described in \s-1RFC\s0 3530, section 8.6.3.
-.PP
-In order to prevent these problems, the server must track a small amount
-of per-client information on stable storage. This daemon provides the
-userspace piece of that functionality.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.IP "\fB\-d\fR, \fB\-\-debug\fR" 4
-.IX Item "-d, --debug"
-Enable debug level logging.
-.IP "\fB\-F\fR, \fB\-\-foreground\fR" 4
-.IX Item "-F, --foreground"
-Runs the daemon in the foreground and prints all output to stderr
-.IP "\fB\-p\fR \fIpipe\fR, \fB\-\-pipe\fR=\fIpipe\fR" 4
-.IX Item "-p pipe, --pipe=pipe"
-Location of the \*(L"cld\*(R" upcall pipe. The default value is
-\&\fI/var/lib/nfs/rpc_pipefs/nfsd/cld\fR. If the pipe does not exist when the
-daemon starts then it will wait for it to be created.
-.IP "\fB\-s\fR \fIstorage_dir\fR, \fB\-\-storagedir\fR=\fIstorage_dir\fR" 4
-.IX Item "-s storagedir, --storagedir=storage_dir"
-Directory where stable storage information should be kept. The default
-value is \fI/var/lib/nfs/nfsdcld\fR.
-.SH "NOTES"
-.IX Header "NOTES"
-The Linux kernel NFSv4 server has historically tracked this information
-on stable storage by manipulating information on the filesystem
-directly, in the directory to which \fI/proc/fs/nfsd/nfsv4recoverydir\fR
-points.
-.PP
-This daemon requires a kernel that supports the nfsdcld upcall. If the
-kernel does not support the new upcall, or is using the legacy client
-name tracking code then it will not create the pipe that nfsdcld uses to
-talk to the kernel.
-.PP
-This daemon should be run as root, as the pipe that it uses to communicate
-with the kernel is only accessable by root. The daemon however does drop all
-superuser capabilities after starting. Because of this, the \fIstoragedir\fR
-should be owned by root, and be readable and writable by owner.
-.SH "AUTHORS"
-.IX Header "AUTHORS"
-The nfsdcld daemon was developed by Jeff Layton <jlayton@redhat.com>.
-- 
2.39.5