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