diff options
author | Nikolay Borisov <nborisov@suse.com> | 2017-07-26 11:26:28 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-08-16 17:12:04 +0300 |
commit | 3558d4f88ec8db65ccea5cfe5a421ee1e8cbb12b (patch) | |
tree | 989b91e21e05698b08ffd2bd97e63b72315aaf43 /fs/btrfs | |
parent | 9f6d251033bc5bd0115c23fae8b6aac5f6263c2c (diff) | |
download | linux-3558d4f88ec8db65ccea5cfe5a421ee1e8cbb12b.tar.xz |
btrfs: Deprecate userspace transaction ioctls
Userspace transactions were introduced in commit 6bf13c0cc833 ("Btrfs:
transaction ioctls") to provide semantics that Ceph's object store
required. However, things have changed significantly since then, to the
point where btrfs is no longer suitable as a backend for ceph and in
fact it's actively advised against such usages. Considering this, there
doesn't seem to be a widespread, legit use case of userspace
transaction. They also clutter the file->private pointer.
So to end the agony let's nuke the userspace transaction ioctls. As a
first step let's give time for people to voice their objection by just
WARN()ining when the userspace transaction is used.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
[ move the warning past perm checks, keep the has-been-printed state;
we're ok with just one warning over all filesystems ]
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/ioctl.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 496e873b14de..4cfc3d4c0a37 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -3967,11 +3967,22 @@ static long btrfs_ioctl_trans_start(struct file *file) struct btrfs_root *root = BTRFS_I(inode)->root; struct btrfs_trans_handle *trans; int ret; + static bool warned = false; ret = -EPERM; if (!capable(CAP_SYS_ADMIN)) goto out; + if (!warned) { + btrfs_warn(fs_info, + "Userspace transaction mechanism is considered " + "deprecated and slated to be removed in 4.17. " + "If you have a valid use case please " + "speak up on the mailing list"); + WARN_ON(1); + warned = true; + } + ret = -EINPROGRESS; if (file->private_data) goto out; |