Kernel Configuration changes needed in 2.4.27 series kernel....

"Gary L. Greene, Jr." <[email protected]> Mon, 12 Jul 2004 01:49:02 -0400
Newsgroups gmane.linux.arklinux.devel
Organization Ark Open Source Labs
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


I've been doing some dinking around with our 2.4 kernel to get the PDC202xx 
controllers working, and while doing so, I've uncovered a few things that 
need changed in our kernel's config and a few patches from MDK that might be 
of internest at the same time for it that they use.

First: To get the PDC202xx (old and new) controllers to work, they cannot be 
built as a module. These must be built into the kernel, since without being 
built-in, they will not allow access to the IDE drives on the controller.

IMPROTANT - for some strange reason when the system has it built in, the 
PDC202xx controller will become the first set of IDE controllers according to 
the kernel, making the VIA IDE controller the secondary. This causes the 
harddisks to chow up like this:

PDC20265:   hda - hdd
VIA Apollo: hde - hdh

This is something that teh installer will need to be aware of to handle the 
install gracefully.

Second: I have found that submount is conpletely unusable under the 2.4 
kernel, generating errors similar to old versions of supermount. I opt for 
it's removal from 2.4.x. After taking a look at the current kernel from MDK's 
cooker, it would seem that they are still using supermount-ng in their 2.4.27 
kernel without issues. Since it works and submount is completely broken, I'm 
in favour of reverting to it. Their patch is attached.

Third: Also, of interest, while browsing the MDK patch set, I noted that they 
have a fully working SGI XFS patch to allow the POSIX ACL's to be selected in 
the config tools for the kernel. This too is attached.

Fourth: I have noted a sever degradation of the alsa drivers in our kernel. 
Where teh advanced mixer controls will no longer show up under any account 
but root. While attempting to see if I could remedy this in the kernel, I 
found that the alsa driver options were completely missing from the 
configuration tools for 2.4.x, please fix this since this is a serious 
development bug that has forced me to endure no sound undre my system at this 
time.

- -- 
Gary L. Greene, Jr.
Sent from uriel.tolharadyne.net
 01:23:45 up  2:56,  3 users,  load average: 0.13, 0.06, 0.07
============================================================
Volunteer developer for the Ark Linux Project
 check out http://www.arklinux.org/ for more info.
 Also http://www.csis.gvsu.edu/~greeneg/
EMAIL : [email protected]
============================================================
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFA8iZSynMfbISpaCwRAoDhAKCX22J5HDh4w0X2EyeeLg+9jk3HwQCfSIEd
GhiL1+tAXaEu4PVTibMSOc8=
=SIsn
-----END PGP SIGNATURE-----
FS70_supermount-1.2.11a-2.4.24.patch (text/x-diff, 169.2 KB) - not displayed
FB04_enable_xfs_acl.patch (text/x-diff, 2.5 KB)
--- linux-2.4.25/fs/Config.in	2004-02-22 19:12:48.000000000 +0100
+++ linux-2.4.25/fs/Config.in.tmb	2004-02-22 19:11:42.000000000 +0100
@@ -111,6 +111,7 @@ dep_mbool    '  Quota support' CONFIG_XF
 dep_mbool    '  Realtime support (EXPERIMENTAL)' CONFIG_XFS_RT $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
 dep_mbool    '  Tracing support (EXPERIMENTAL)' CONFIG_XFS_TRACE $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
 dep_mbool    '  Debugging support (EXPERIMENTAL)' CONFIG_XFS_DEBUG $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
+dep_mbool    '  ACL support' CONFIG_XFS_POSIX_ACL $CONFIG_XFS_FS
 
 if [ "$CONFIG_NET" = "y" ]; then
 
diff -Nurp linux-2.4.25/include/linux/posix_acl_xattr.h linux-2.4.25/include/linux.tmb/posix_acl_xattr.h
--- linux-2.4.25/include/linux/posix_acl_xattr.h	1970-01-01 01:00:00.000000000 +0100
+++ linux-2.4.25/include/linux.tmb/posix_acl_xattr.h	2004-02-22 19:03:17.000000000 +0100
@@ -0,0 +1,67 @@
+/*
+  File: linux/posix_acl_xattr.h
+
+  Extended attribute system call representation of Access Control Lists.
+
+  Copyright (C) 2000 by Andreas Gruenbacher <[email protected]>
+  Copyright (C) 2002 SGI - Silicon Graphics, Inc <[email protected]>
+ */
+#ifndef _POSIX_ACL_XATTR_H
+#define _POSIX_ACL_XATTR_H
+
+/* Extended attribute names */
+#define POSIX_ACL_XATTR_ACCESS	"system.posix_acl_access"
+#define POSIX_ACL_XATTR_DEFAULT	"system.posix_acl_default"
+
+/* Supported ACL a_version fields */
+#define POSIX_ACL_XATTR_VERSION	0x0002
+
+
+/* An undefined entry e_id value */
+#define ACL_UNDEFINED_ID	(-1)
+
+/* ACL entry e_tag field values */
+#define ACL_USER_OBJ		(0x01)
+#define ACL_USER		(0x02)
+#define ACL_GROUP_OBJ		(0x04)
+#define ACL_GROUP		(0x08)
+#define ACL_MASK		(0x10)
+#define ACL_OTHER		(0x20)
+
+/* ACL entry e_perm bitfield values */
+#define ACL_READ		(0x04)
+#define ACL_WRITE		(0x02)
+#define ACL_EXECUTE		(0x01)
+
+
+typedef struct {
+	__u16			e_tag;
+	__u16			e_perm;
+	__u32			e_id;
+} posix_acl_xattr_entry;
+
+typedef struct {
+	__u32			a_version;
+	posix_acl_xattr_entry	a_entries[0];
+} posix_acl_xattr_header;
+
+
+static inline size_t
+posix_acl_xattr_size(int count)
+{
+	return (sizeof(posix_acl_xattr_header) +
+		(count * sizeof(posix_acl_xattr_entry)));
+}
+
+static inline int
+posix_acl_xattr_count(size_t size)
+{
+	if (size < sizeof(posix_acl_xattr_header))
+		return -1;
+	size -= sizeof(posix_acl_xattr_header);
+	if (size % sizeof(posix_acl_xattr_entry))
+		return -1;
+	return size / sizeof(posix_acl_xattr_entry);
+}
+
+#endif	/* _POSIX_ACL_XATTR_H */
FS71_missing_xfs_acl_defines.patch (text/x-diff, 827 B)
--- linux-2.4.22/include/linux/fs.h.fx05.orig	2003-09-06 23:23:35.000000000 +0200
+++ linux-2.4.22/include/linux/fs.h	2003-09-06 23:24:16.000000000 +0200
@@ -112,6 +112,7 @@ extern int leases_enable, dir_notify_ena
 #define MS_MOVE		8192
 #define MS_REC		16384
 #define MS_VERBOSE	32768
+#define MS_POSIXACL	65536	/* VFS does not apply the umask */
 #define MS_SUPERMOUNTED	(1<<17)
 #define MS_ACTIVE	(1<<30)
 #define MS_NOUSER	(1<<31)
@@ -163,6 +164,7 @@ extern int leases_enable, dir_notify_ena
 #define IS_IMMUTABLE(inode)	((inode)->i_flags & S_IMMUTABLE)
 #define IS_NOATIME(inode)	(__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME))
 #define IS_NODIRATIME(inode)	__IS_FLG(inode, MS_NODIRATIME)
+#define IS_POSIXACL(inode)	__IS_FLG(inode, MS_POSIXACL)
 
 #define IS_DEADDIR(inode)	((inode)->i_flags & S_DEAD)