Hi Atem, Richard and others, This is a patchset to add quota supporting in ubifs. [1/25] - [7/25] are working to make quotactl to support filesystems which are running on char device. Others are about making ubifs to support quota Please help to review or test it. Any comment is welcome :). Hi Jan Kara, I am not sure I am using the quota APIs correctly, please help to correct me if I am wrong. Also you can get the code from: https://github.com/yangdongsheng/linux.git ubifs_quota_v1 My simple testing is shown as below: [root@atest-guest linux_compile]# mount -t ubifs -o usrquota,grpquota /dev/ubi0_0 /mnt/ubifs/ [root@atest-guest linux_compile]# quotacheck -ug /mnt/ubifs [root@atest-guest linux_compile]# quotaon /mnt/ubifs [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 0 0 0 1 0 0 [root@atest-guest linux_compile]# setquota root 10 10 3 3 /mnt/ubifs [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 0 10 10 1 3 3 [root@atest-guest linux_compile]# touch /mnt/ubifs/{1,11,111} ubifs: warning, user file quota exceeded. [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -+ 0 10 10 4 3 3 7days [root@atest-guest linux_compile]# rm -rf /mnt/ubifs/1* [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 0 10 10 1 3 3 [root@atest-guest linux_compile]# dd if=/dev/urandom of=/mnt/ubifs/data bs=1K count=11 ubifs: warning, user block quota exceeded. 11+0 records in 11+0 records out 11264 bytes (11 kB) copied, 0.216498 s, 52.0 kB/s [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root +- 11 10 10 7days 2 3 3 [root@atest-guest linux_compile]# rm -rf /mnt/ubifs/data [root@atest-guest linux_compile]# repquota /mnt/ubifs *** Report for user quotas on device /dev/ubi0_0 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 0 10 10 1 3 3 Dongsheng Yang (25): fs: introduce a ->s_cdev field into struct super_block ubi: introduce a interface to get cdev in ubi_volume ubifs: fill sb->s_cdev in ubifs_fill_super() fs: super: introduce the functions to get super by cdev reference fs: char_dev: introduce lookup_cdev function to find cdev by name fs: dquot: skip invalidate_bdev if bdev is NULL fs: quota: make quota support fs which is running on char dev ubifs: fix a typo in comment of ubifs_budget_req ubifs: extend budget for blocks ubifs: fill ->s_dev in ubifs_fill_super ubifs: export read_block() from file.c ubifs: introduce quota related mount options ubifs: introduce a field named as budgeted to ubifs_inode ubifs: implement IO functions for quota files ubifs: disable quota in ubifs_put_super ubifs: write quota back in ubifs_sync ubifs: suspend & resume quota properly in ubifs_remount ubifs: record quota information about inode in ubifs_new_inode ubifs: free quota inode information in ubifs_evict_inode ubifs: alloc quota space in ubifs_write_begin ubifs: free quota space in do_truncation and unlink ubifs: adapt quota space informatin in do_setattr ubifs: transfer quota information in changing owner or group ubifs: implement ubifs_qctl_operations for quotactl ubifs: make ubifs to support quota drivers/mtd/ubi/kapi.c | 6 + fs/char_dev.c | 72 ++++++++++ fs/quota/dquot.c | 3 +- fs/quota/quota.c | 30 +++-- fs/super.c | 45 +++++++ fs/ubifs/budget.c | 4 + fs/ubifs/debug.c | 2 + fs/ubifs/dir.c | 24 +++- fs/ubifs/file.c | 56 +++++++- fs/ubifs/ioctl.c | 1 + fs/ubifs/super.c | 352 +++++++++++++++++++++++++++++++++++++++++++++++- fs/ubifs/ubifs.h | 19 ++- include/linux/fs.h | 5 + include/linux/mtd/ubi.h | 1 + 14 files changed, 597 insertions(+), 23 deletions(-) -- 1.8.4.2 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html