Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: [bouyer-quota2] src
On Jan,Thursday 20 2011, at 3:25 PM, Manuel Bouyer wrote:
> Module Name: src
> Committed By: bouyer
> Date: Thu Jan 20 14:25:05 UTC 2011
>
> Modified Files:
> src/distrib/sets/lists/comp [bouyer-quota2]: mi
> src/etc/mtree [bouyer-quota2]: NetBSD.dist.tests
> src/lib/libc/compat/arch/alpha/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/arm/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/hppa/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/i386/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/ia64/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/m68k/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/mips/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/powerpc/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/powerpc64/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/sh3/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/sparc/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/sparc64/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/vax/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/compat/arch/x86_64/sys [bouyer-quota2]: Makefile.inc
> src/lib/libc/sys [bouyer-quota2]: Makefile.inc
> src/lib/librumphijack [bouyer-quota2]: hijack.c
> src/sbin/fsck_ffs [bouyer-quota2]: Makefile dir.c extern.h fsck.h
> inode.c main.c pass1.c pass1b.c pass2.c pass3.c pass4.c setup.c
> utilities.c
> src/sbin/fsdb [bouyer-quota2]: Makefile
> src/sbin/newfs [bouyer-quota2]: Makefile extern.h mkfs.c newfs.8
> newfs.c
> src/sbin/tunefs [bouyer-quota2]: tunefs.8 tunefs.c
> src/sys/compat/netbsd32 [bouyer-quota2]: netbsd32_netbsd.c
> netbsd32_syscall.h netbsd32_syscallargs.h netbsd32_syscalls.c
> netbsd32_sysent.c syscalls.master
> src/sys/conf [bouyer-quota2]: files
> src/sys/fs/unionfs [bouyer-quota2]: unionfs_vfsops.c
> src/sys/kern [bouyer-quota2]: init_sysent.c syscalls.c syscalls.master
> vfs_subr.c vfs_syscalls.c vnode_if.c
> src/sys/miscfs/genfs [bouyer-quota2]: layer_extern.h layer_vfsops.c
> src/sys/rump/fs/lib/libffs [bouyer-quota2]: Makefile
> src/sys/rump/include/rump [bouyer-quota2]: rump_syscalls.h
> rumpvnode_if.h
> src/sys/rump/librump/rumpkern [bouyer-quota2]: rump_syscalls.c
> src/sys/rump/librump/rumpvfs [bouyer-quota2]: rumpvnode_if.c
> src/sys/sys [bouyer-quota2]: Makefile mount.h syscall.h syscallargs.h
> vnode_if.h
> src/sys/ufs [bouyer-quota2]: files.ufs
> src/sys/ufs/ffs [bouyer-quota2]: ffs_alloc.c ffs_balloc.c ffs_bswap.c
> ffs_extern.h ffs_inode.c ffs_subr.c ffs_vfsops.c fs.h
> src/sys/ufs/ufs [bouyer-quota2]: Makefile quota.h ufs_extern.h
> ufs_inode.c ufs_quota.c ufs_vfsops.c ufs_vnops.c ufsmount.h
> src/tests/fs/ffs [bouyer-quota2]: Makefile
> src/tests/sbin [bouyer-quota2]: Makefile
> src/usr.bin/quota [bouyer-quota2]: Makefile quota.1 quota.c
> Added Files:
> src/lib/libc/compat/arch/alpha/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/arm/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/hppa/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/i386/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/ia64/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/m68k/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/mips/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/powerpc/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/powerpc64/sys [bouyer-quota2]:
> compat_quotactl.S
> src/lib/libc/compat/arch/sh3/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/sparc/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/sparc64/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/vax/sys [bouyer-quota2]: compat_quotactl.S
> src/lib/libc/compat/arch/x86_64/sys [bouyer-quota2]: compat_quotactl.S
> src/sbin/fsck_ffs [bouyer-quota2]: pass6.c quota2.c
> src/sys/sys [bouyer-quota2]: quota.h
> src/sys/ufs/ffs [bouyer-quota2]: ffs_quota2.c
> src/sys/ufs/ufs [bouyer-quota2]: quota1.h quota2.h quota2_prop.c
> quota2_prop.h quota2_subr.c ufs_quota.h ufs_quota1.c ufs_quota2.c
> src/tests/fs/ffs [bouyer-quota2]: h_quota2_server.c t_quota2_1.c
> src/tests/sbin/fsck_ffs [bouyer-quota2]: Makefile quotas_common.sh
> t_check_quotas.sh t_enable_quotas.sh
> src/tests/sbin/newfs [bouyer-quota2]: Makefile quotas_common.sh
> t_enable_quotas.sh
>
> Log Message:
> Snapshot of work in progress on a modernised disk quota system:
> - new quotactl syscall (versionned for backward compat), which takes
> as parameter a path to a mount point, and a prop_dictionary
> (in plistref format) describing commands and arguments.
> For each command, status and data are returned as a prop_dictionary.
> quota commands features will be added to take advantage of this,
> exporting quota data or getting quota commands as plists.
>
> - new on disk-format storage (all 64bit wide), integrated to metadata for
> ffs (and playing nicely with wapbl).
> Quotas are enabled on a ffs filesystem via superblock flags.
> tunefs(8) can enable or disable quotas.
> On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
> block and inode usages, and will check and update quotas in Pass 6.
> quota usage and limits are stored in unliked files (one for users,
> one for groups)l fsck_ffs(8) will create the files if needed, or
> free them if needed. This means that after enabling or disabling
> quotas on a filesystem; a fsck_ffs(8) run is required.
> quotacheck(8) is not needed any more, on a unclean shutdown
> fsck or journal replay will take care of fixing quotas.
> newfs(8) can create a ready-to-mount quota-enabled filesystem
> (superblock flags are set and quota inodes are created).
> Other new features or semantic changes:
> - default quota datas, applied to users or groups which don't already
> have a quota entry
> - per-user/group grace time (instead of a filesystem global one)
> - 0 really means "nothing allowed at all", not "no limit".
> If you want "no limit", set the limit to UQUAD_MAX (tools will
> understand "unlimited" and "-")
>
> A quota file is structured as follow:
> it starts with a header, containing a few per-filesystem values,
> and the default quota limits.
> Quota entries are linked together as a simple list, each entry has a
> pointer (as an offset withing the file) to the next.
> The header has a pointer to a list of free quota entries, and
> a hash table of in-use entries. The size of the hash table depends
> on the filesystem block size (header+hash table should fit in the
> first block). The file is not sparse and is a multiple of
> filesystem block size (when the free quota entry list is empty a new
> filesystem block is allocated). quota entries to not cross
> filesystem block boundaries.
>
> In memory, the kernel keeps a cache of recently used quota entries
> as a reference to the block number, and offset withing the block.
> The quota entry itself is keept in the buf cache.
>
> fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
> related atf tests :)
> The kernel can update disk usage and report it via quotactl(2).
>
Can you test if filesystem resizing still works ? Now when riz fixed resize_ffs
it would be nice to keep it working :).
> Todo: enforce quotas limits (limits are not checked by kernel yet)
> update repquota, edquota and rpc.rquotad to the new world
> implement compat_50_quotactl ioctl.
> update quotactl(2) man page
>
> fsck_ffs required fixes so that allocating new blocks or inodes will
> properly update the superblock and cg sumaries. This was not an issue up
> to now because superblock and cg sumaries check happened last, but now
> allocations or frees can happen in pass 6.
Regards
Adam.
Home |
Main Index |
Thread Index |
Old Index