Date: Fri, 23 Jun 2000 21:01:10 +0200 From: Stefan Esser <se@freebsd.org> To: Matthew Dillon <dillon@apollo.backplane.com> Cc: Poul-Henning Kamp <phk@critter.freebsd.dk>, Peter Wemm <peter@netplex.com.au>, Adrian Chadd <adrian@FreeBSD.ORG>, Julian Elischer <julian@elischer.org>, Anders Andersson <anders@sanyusan.se>, cvs-all@FreeBSD.ORG, freebsd-current@FreeBSD.ORG, Stefan Esser <se@freebsd.org> Subject: Re: cvs commit: src/sys/contrib/softupdates softdep.h ffs_softdep.c Message-ID: <20000623210110.B8626@StefanEsser.FreeBSD.org> In-Reply-To: <200006231641.JAA10742@apollo.backplane.com>; from dillon@apollo.backplane.com on Fri, Jun 23, 2000 at 09:41:31AM -0700 References: <669.961737829@critter.freebsd.dk> <200006231641.JAA10742@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2000-06-23 09:41 -0700, Matthew Dillon <dillon@apollo.backplane.com> wrote: > Slight problem: We've run out of mount option flags. But there already ist MNT_SOFTDEP in <sys/mount.h> ... #define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */ #define MNT_SOFTDEP 0x00200000 /* soft updates being done */ #define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */ Hmmm, just checked in <ufs/ffs/fs.h> and found that the soft-updates state is already kept in the fs_flags element of struct fs (the super-block). /* * Super block for an FFS file system. */ struct fs { ... int8_t fs_flags; /* see FS_ flags below */ ... }; /* * Filesystem flags. */ #define FS_UNCLEAN 0x01 /* filesystem not clean at mount */ #define FS_DOSOFTDEP 0x02 /* filesystem using soft dependencies */ And in fsck/setup.c, I found: bufinit(); if (sblock.fs_flags & FS_DOSOFTDEP) usedsoftdep = 1; else usedsoftdep = 0; return (1); So its obvious, that we could make "-o softdep" a mount option, do away with the tunefs option, and have the *kernel* record the use of soft-updates on a R/W mounted file system when it marks the file system FS_UNCLEAN in the fs_flags files in the super-block. If a file system is unmounted cleanly, the FS_DOSOFTDEP flag can be cleared along with the FS_UNCLEAN bit, since the next mount is free to decide whether to use soft-updates or not. This is more safe than the tunefs method, since FS_DOSOFTDEP will only be set if the last R/W mount was on a kernel that supported soft-updates ... Only problem I see (but that is not different from the current situation) is that "mount -u" can't change the soft-updates state, if a file-system is mounted R/W. This should probably be inforced in the kernel (not the mount command) and there should be *no* way to "force" mount to override this lock. Regards, STefan To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000623210110.B8626>