Hello,
I have a problem setting up quotas inside of vservers.
Looks like kernel ignores XID while updating /aquota.* files or
quota tools aren't working correctly.
Tested with these setups:
1) Linux 2.6.22.19 + 2.6.22.18-vs2.2.0.6-grsec2.1.11-20080212
2) Linux 2.6.22.19 + 2.6.22.19-vs2.2.0.7
VServer config:
# CONFIG_VSERVER_LEGACY is not set
# CONFIG_VSERVER_LEGACYNET is not set
# CONFIG_VSERVER_REMAP_SADDR is not set
CONFIG_VSERVER_COWBL=y
# CONFIG_VSERVER_VTIME is not set
CONFIG_VSERVER_PROC_SECURE=y
CONFIG_VSERVER_HARDCPU=y
CONFIG_VSERVER_IDLETIME=y
# CONFIG_VSERVER_IDLELIMIT is not set
# CONFIG_TAGGING_NONE is not set
# CONFIG_TAGGING_UID16 is not set
# CONFIG_TAGGING_GID16 is not set
CONFIG_TAGGING_ID24=y
# CONFIG_TAGGING_INTERN is not set
# CONFIG_TAG_NFSD is not set
# CONFIG_PROPAGATE is not set
CONFIG_VSERVER_PRIVACY=y
CONFIG_VSERVER_CONTEXTS=768
CONFIG_VSERVER_WARN=y
# CONFIG_VSERVER_DEBUG is not set
CONFIG_VSERVER=y
CONFIG_VSERVER_SECURITY=y
CONFIG_VSERVER_NGNET=y
Test:
-------------------------------------------------------------------
# ./testfs.sh -l -t -D /dev/loop0 -M /mnt
Linux-VServer FS Test [V0.18] Copyright (C) 2005-2007 H.Poetzl
Linux 2.6.22.19-grsec-vs x86_64/0.30.214
VCI: 0002:0200 236 030007b1 (ID24)
--- testing ext2 filesystem ... [000]. [001]. [002]. [999]. --- testing ext3 filesystem ... [000]. [001]. [002]. [999]. --- testing xfs filesystem ... [000]* (xfs format failed) --- testing reiser filesystem ... [000]* (reiserfs format failed) --- testing jfs filesystem ... [000]* (jfs format failed) ------------------------------------------------------------------- # ./testfs.sh -t -D /dev/loop0 -M /mnt/tst/ Linux-VServer FS Test [V0.18] Copyright (C) 2005-2007 H.Poetzl Linux 2.6.22.19-grsec-vs x86_64/0.30.214 VCI: 0002:0200 236 030007b1 (ID24) --- testing ext2 filesystem ... [000]. [001]. [002]. [999]. --- testing ext3 filesystem ... [000]. [001]. [002]. [999]. --- testing xfs filesystem ... [000]* (xfs format failed) --- testing reiser filesystem ... [000]* (reiserfs format failed) --- testing jfs filesystem ... [000]* (jfs format failed) ------------------------------------------------------------------- # ./testme.sh Linux-VServer Test [V0.17] Copyright (C) 2003-2006 H.Poetzl chcontext is working. chbind is working. Linux 2.6.22.19-grsec-vs #3 SMP Sat Mar 15 22:46:19 EET 2008 x86_64 Ea 0.30.214 236/glibc (DSa) <v13,net,v21,v22,v23,netv2> VCI: 0002:0200 236 030007b1 (TbsPHIW) --- [000]# succeeded. [001]# succeeded. [011]# succeeded. [031]# succeeded. [101]# succeeded. [102]# succeeded. [201]# succeeded. [202]# succeeded. ------------------------------------------------------------------- Problem description: files are tagged with chxid, context 1001 > host# quota -V > Quota utilities version 3.14. > Compiled with EXT2_DIRECT > host# quotacheck /mnt > host# quotaon /mnt > host# repquota /mnt > > *** Report for user quotas on device /dev/mapper/storage-hosting > Block grace time: 7days; Inode grace time: 7days > Block limits File limits > User used soft hard grace used soft hard grace > ---------------------------------------------------------------------- > root -- 134224 0 0 5 0 0 > #50331648 -- 15956 0 0 70 0 0 > #50341673 -- 12 0 0 3 0 0 > #50341706 -- 12 0 0 3 0 0 > #50341739 -- 12 0 0 3 0 0 > ....... etc,etc,etc User ids are weird because of tagging, I believe, for example, 50331648 = 0x3000000 -> uid 0 Is this the way it supposed to be? next, let's create some files > vs# dd if=/dev/zero bs=1M count=100 of=file1 > vs# chown 10001 file > host# repquota /mnt > Block grace time: 7days; Inode grace time: 7days > Block limits File limits > User used soft hard grace used soft hard grace > ---------------------------------------------------------------------- > root -- 134224 0 0 5 0 0 > #50331648 -- 15956 0 0 70 0 0 > #50341673 -- 12 0 0 3 0 0 > ... > #10001 -- 102504 0 0 1 0 0 > ... using vroot device everything's the same and > vs# repquota -n /dev/hd > Block grace time: 7days; Inode grace time: 7days > Block limits File limits > User used soft hard grace used soft hard grace > ---------------------------------------------------------------------- > #0 -- 134224 0 0 5 0 0 > #50331648 -- 15956 0 0 70 0 0 > ... > #10001 -- 102504 0 0 1 0 0 > ... next, > host# quotaoff /mnt > host# quotacheck /mnt > host# quotao /mnt > host# repquota /mnt > root -- 134220 0 0 4 0 0 > #50331648 -- 15960 0 0 71 0 0 > ... > #50341649 -- 102532 0 0 8 0 0 > ... Compiling quota without EXT2_DIRECT support makes quotacheck produce real uids without xid part, but, again, quota does not account xid values and calculate quotas per uid only. So, what am I missing? Is there a way to make context quotas work on a shared partition without sharing quota between same uids on different vservers? Thanks! -- Regards, VitalyReceived on Sun Mar 16 13:58:03 2008