Hi,
I've reworked the stuff to deal with autofs protocol versions so its somewhat
cleaner. v3 and v4 share definitions for their common parts, but there's an
auto_fs4.h header for all the v4-specific stuff. There's still a couple of
warts, but its more self-evidently correct that mushing it all into one header.
J
[ Linus, I hope this attachment works better for you ]
--- /dev/null Tue May 5 13:32:27 1998
+++ linux/include/linux/auto_fs4.h Fri Feb 4 20:19:31 2000
@@ -0,0 +1,45 @@
+/* -*- c-mode -*-
+ * linux/include/linux/auto_fs4.h
+ *
+ * Copyright 1999-2000 Jeremy Fitzhardinge <[EMAIL PROTECTED]>
+ *
+ * This file is part of the Linux kernel and is made available under
+ * the terms of the GNU General Public License, version 2, or at your
+ * option, any later version, incorporated herein by reference.
+ */
+
+#ifndef _LINUX_AUTO_FS4_H
+#define _LINUX_AUTO_FS4_H
+
+/* Include common v3 definitions */
+#include <linux/auto_fs.h>
+
+/* autofs v4 definitions */
+#undef AUTOFS_PROTO_VERSION
+#define AUTOFS_PROTO_VERSION 4
+
+#undef AUTOFS_MAX_PROTO_VERSION
+#define AUTOFS_MAX_PROTO_VERSION AUTOFS_PROTO_VERSION
+
+/* New message type */
+#define autofs_ptype_expire_multi 2 /* Expire entry (umount request) */
+
+/* v4 multi expire (via pipe) */
+struct autofs_packet_expire_multi {
+ struct autofs_packet_hdr hdr;
+ autofs_wqt_t wait_queue_token;
+ int len;
+ char name[NAME_MAX+1];
+};
+
+union autofs_packet_union {
+ struct autofs_packet_hdr hdr;
+ struct autofs_packet_missing missing;
+ struct autofs_packet_expire expire;
+ struct autofs_packet_expire_multi expire_multi;
+};
+
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
+
+
+#endif /* _LINUX_AUTO_FS4_H */
--- 2.3/include/linux/auto_fs.h Wed Feb 2 18:08:15 2000
+++ linux/include/linux/auto_fs.h Fri Feb 4 20:19:15 2000
@@ -14,20 +14,21 @@
#ifndef _LINUX_AUTO_FS_H
#define _LINUX_AUTO_FS_H
+#ifdef __KERNEL__
#include <linux/version.h>
#include <linux/fs.h>
#include <linux/limits.h>
-#include <linux/ioctl.h>
#include <asm/types.h>
+#endif /* __KERNEL__ */
+
+#include <linux/ioctl.h>
-/* This header file describes a range of autofs interface versions;
- the new implementation ("autofs4") supports them all, but the old
- implementation only supports v3. */
-#define AUTOFS_MIN_PROTO_VERSION 3 /* Min version we support */
-#define AUTOFS_MAX_PROTO_VERSION 4 /* Max (current) version */
+/* This file describes autofs v3 */
+#define AUTOFS_PROTO_VERSION 3
-/* Backwards compat for autofs v3; it just implements a version */
-#define AUTOFS_PROTO_VERSION 3 /* v3 version */
+/* Range of protocol versions defined */
+#define AUTOFS_MAX_PROTO_VERSION AUTOFS_PROTO_VERSION
+#define AUTOFS_MIN_PROTO_VERSION AUTOFS_PROTO_VERSION
/*
* Architectures where both 32- and 64-bit binaries can be executed
@@ -50,15 +51,13 @@
typedef unsigned long autofs_wqt_t;
#endif
-enum autofs_packet_type {
- autofs_ptype_missing, /* Missing entry (mount request) */
- autofs_ptype_expire, /* Expire entry (umount request) */
- autofs_ptype_expire_multi, /* Expire entry (umount request) */
-};
+/* Packet types */
+#define autofs_ptype_missing 0 /* Missing entry (mount request) */
+#define autofs_ptype_expire 1 /* Expire entry (umount request) */
struct autofs_packet_hdr {
- int proto_version; /* Protocol version */
- enum autofs_packet_type type; /* Type of packet */
+ int proto_version; /* Protocol version */
+ int type; /* Type of packet */
};
struct autofs_packet_missing {
@@ -75,28 +74,12 @@
char name[NAME_MAX+1];
};
-/* v4 multi expire (via pipe) */
-struct autofs_packet_expire_multi {
- struct autofs_packet_hdr hdr;
- autofs_wqt_t wait_queue_token;
- int len;
- char name[NAME_MAX+1];
-};
-
-union autofs_packet_union {
- struct autofs_packet_hdr hdr;
- struct autofs_packet_missing missing;
- struct autofs_packet_expire expire;
- struct autofs_packet_expire_multi expire_multi;
-};
-
#define AUTOFS_IOC_READY _IO(0x93,0x60)
#define AUTOFS_IOC_FAIL _IO(0x93,0x61)
#define AUTOFS_IOC_CATATONIC _IO(0x93,0x62)
#define AUTOFS_IOC_PROTOVER _IOR(0x93,0x63,int)
#define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93,0x64,unsigned long)
#define AUTOFS_IOC_EXPIRE _IOR(0x93,0x65,struct autofs_packet_expire)
-#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
#ifdef __KERNEL__
diff -X ../diffexcl -Nur 2.3/fs/autofs4/autofs_i.h abulafia-2.3/fs/autofs4/autof
s_i.h
--- 2.3/fs/autofs4/autofs_i.h Sat Jan 29 14:47:39 2000
+++ linux/fs/autofs4/autofs_i.h Fri Feb 4 19:57:35 2000
@@ -12,7 +12,7 @@
/* Internal header file for autofs */
-#include <linux/auto_fs.h>
+#include <linux/auto_fs4.h>
#include <linux/list.h>
/* This is the range of ioctl() numbers we claim as ours */
diff -X ../diffexcl -Nur 2.3/fs/autofs4/waitq.c abulafia-2.3/fs/autofs4/waitq.c
--- 2.3/fs/autofs4/waitq.c Sat Jan 29 14:47:39 2000
+++ linux/fs/autofs4/waitq.c Fri Feb 4 19:50:49 2000
@@ -86,7 +86,7 @@
static void autofs4_notify_daemon(struct autofs_sb_info *sbi,
struct autofs_wait_queue *wq,
- enum autofs_packet_type type)
+ int type)
{
union autofs_packet_union pkt;
size_t pktsz;