Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5868f83 authored by David Sterba's avatar David Sterba
Browse files

btrfs: add GET_SUPPORTED_FEATURES to the control device ioctls



The control device is accessible when no filesystem is mounted and we
may want to query features supported by the module. This is already
possible using the sysfs files, this ioctl is for parity and
convenience.

Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 388f7b1d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4089,6 +4089,7 @@ void btrfs_test_inode_set_ops(struct inode *inode);

/* ioctl.c */
long btrfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
int btrfs_ioctl_get_supported_features(struct file *file, void __user *arg);
void btrfs_update_iflags(struct inode *inode);
void btrfs_inherit_iflags(struct inode *inode, struct inode *dir);
int btrfs_is_empty_uuid(u8 *uuid);
+1 −2
Original line number Diff line number Diff line
@@ -5187,8 +5187,7 @@ static int btrfs_ioctl_set_fslabel(struct file *file, void __user *arg)
	  .compat_ro_flags = BTRFS_FEATURE_COMPAT_RO_##suffix, \
	  .incompat_flags = BTRFS_FEATURE_INCOMPAT_##suffix }

static int btrfs_ioctl_get_supported_features(struct file *file,
					      void __user *arg)
int btrfs_ioctl_get_supported_features(struct file *file, void __user *arg)
{
	static const struct btrfs_ioctl_feature_flags features[3] = {
		INIT_FEATURE_FLAGS(SUPP),
+4 −0
Original line number Diff line number Diff line
@@ -2163,6 +2163,10 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
			break;
		ret = !(fs_devices->num_devices == fs_devices->total_devices);
		break;
	case BTRFS_IOC_GET_SUPPORTED_FEATURES:
		ret = btrfs_ioctl_get_supported_features(NULL,
				(void __user*)arg);
		break;
	}

	kfree(vol);