Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S262426AbTEIKEY (ORCPT ); Fri, 9 May 2003 06:04:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262429AbTEIKEY (ORCPT ); Fri, 9 May 2003 06:04:24 -0400 Received: from 237.oncolt.com ([213.86.99.237]:39924 "EHLO warthog.warthog") by vger.kernel.org with ESMTP id S262426AbTEIKEW (ORCPT ); Fri, 9 May 2003 06:04:22 -0400 From: David Howells To: Derrick J Brashear cc: openafs-devel@openafs.org, linux-kernel@vger.kernel.org Subject: Adding an "acceptable" interface to the Linux kernel for AFS User-Agent: EMH/1.14.1 SEMI/1.14.4 (Hosorogi) FLIM/1.14.4 (=?ISO-8859-4?Q?Kashiharajing=FE-mae?=) APEL/10.4 Emacs/21.2 (i386-redhat-linux-gnu) MULE/5.0 (SAKAKI) MIME-Version: 1.0 (generated by SEMI 1.14.4 - "Hosorogi") Content-Type: text/plain; charset=US-ASCII Date: Fri, 09 May 2003 11:16:49 +0100 Message-ID: <10180.1052475409@warthog.warthog> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2021 Lines: 59 Hi, I'm trying to write an AFS syscall framework for the Linux kernel that can do two things: (1) Handle PAGs without the need to subvert the groups list and override the set/getgroups syscalls. (2) Cache authentication data per PAG, doing garbage collection automatically when a PAG no longer has any attached processes. (3) Pass other AFS syscall operations to interfaces in whatever AFS filesystem module is currently loaded (OpenAFS, Arla, etc.). However, (3) is somewhat tricky as the interface isn't very consistent. For instance, it would appear that all PIOCTL commands should require a path, but some of them don't:-/ I don't know why these commands were made PIOCTLs rather than using the CALL interface, but it makes multiplexing in the core kernel more difficult. I'm wondering how attached OpenAFS is to this interface? Can OpenAFS be altered to use the following access points instead: (1) setpag(pag_t pag) (2) getpag() (3) settok(const char *fs, const char *domain, size_t size, const void *data) (4) gettok(const char *fs, const char *domain, size_t size, void *data) (5) deltok(const char *fs, const char *domain) (6) cleartoks(const char *fs) (7) pioctl(const char *path, int cmd, void *arg, int followsymlinks) (Where path is mandatory.) It may be possible to replace this entirely with calls to setxattr and co. from userspace... apart from VIOC_AFS_STAT_MT_PT that is, and that could be done with open/ioctl/close on the directory. (8) fsctl(const char *fs, const char *cmd, struct fsctl_buf) Using: struct fsctl_buf { size_t in_size, out_size; void *in, *out; }; All miscellaneous ops would be done through this. It would work internally as nfsservctl does in 2.5. David - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/