Commit 0182764a authored by Boris Burkov's avatar Boris Burkov Committed by David Sterba

btrfs: sysfs: expose quota mode via sysfs

Add a new sysfs file /sys/fs/btrfs/<uuid>/qgroups/mode
which prints out the mode qgroups is running in. The possible modes are
qgroup, and squota.

If quotas are not enabled, then the qgroups directory will not exist,
so don't handle that mode.
Signed-off-by: default avatarBoris Burkov <boris@bur.io>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 182940f4
......@@ -2089,6 +2089,33 @@ static ssize_t qgroup_enabled_show(struct kobject *qgroups_kobj,
}
BTRFS_ATTR(qgroups, enabled, qgroup_enabled_show);
static ssize_t qgroup_mode_show(struct kobject *qgroups_kobj,
struct kobj_attribute *a,
char *buf)
{
struct btrfs_fs_info *fs_info = to_fs_info(qgroups_kobj->parent);
ssize_t ret = 0;
spin_lock(&fs_info->qgroup_lock);
ASSERT(btrfs_qgroup_enabled(fs_info));
switch (btrfs_qgroup_mode(fs_info)) {
case BTRFS_QGROUP_MODE_FULL:
ret = sysfs_emit(buf, "qgroup\n");
break;
case BTRFS_QGROUP_MODE_SIMPLE:
ret = sysfs_emit(buf, "squota\n");
break;
default:
btrfs_warn(fs_info, "unexpected qgroup mode %d\n",
btrfs_qgroup_mode(fs_info));
break;
}
spin_unlock(&fs_info->qgroup_lock);
return ret;
}
BTRFS_ATTR(qgroups, mode, qgroup_mode_show);
static ssize_t qgroup_inconsistent_show(struct kobject *qgroups_kobj,
struct kobj_attribute *a,
char *buf)
......@@ -2151,6 +2178,7 @@ static struct attribute *qgroups_attrs[] = {
BTRFS_ATTR_PTR(qgroups, enabled),
BTRFS_ATTR_PTR(qgroups, inconsistent),
BTRFS_ATTR_PTR(qgroups, drop_subtree_threshold),
BTRFS_ATTR_PTR(qgroups, mode),
NULL
};
ATTRIBUTE_GROUPS(qgroups);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment