From: Omar Sandoval <osandov@osandov.com>
To: linux-btrfs@vger.kernel.org
Cc: kernel-team@fb.com
Subject: [PATCH 15/26] btrfs-progs: use libbtrfsutil for read-only property
Date: Fri, 26 Jan 2018 10:41:03 -0800 [thread overview]
Message-ID: <68d46bceaaa3f6e7310f7672d50d5875c92bf9ea.1516991902.git.osandov@fb.com> (raw)
In-Reply-To: <cover.1516991902.git.osandov@fb.com>
In-Reply-To: <cover.1516991902.git.osandov@fb.com>
From: Omar Sandoval <osandov@fb.com>
Signed-off-by: Omar Sandoval <osandov@fb.com>
---
props.c | 69 ++++++++++++++++++++++++-----------------------------------------
1 file changed, 25 insertions(+), 44 deletions(-)
diff --git a/props.c b/props.c
index cddbd927..e4edba06 100644
--- a/props.c
+++ b/props.c
@@ -21,6 +21,8 @@
#include <fcntl.h>
#include <unistd.h>
+#include <btrfsutil.h>
+
#include "ctree.h"
#include "commands.h"
#include "utils.h"
@@ -41,56 +43,35 @@ static int prop_read_only(enum prop_object_type type,
const char *name,
const char *value)
{
- int ret = 0;
- int fd = -1;
- u64 flags = 0;
-
- fd = open(object, O_RDONLY);
- if (fd < 0) {
- ret = -errno;
- error("failed to open %s: %s", object, strerror(-ret));
- goto out;
- }
+ enum btrfs_util_error err;
+ bool read_only;
- ret = ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags);
- if (ret < 0) {
- ret = -errno;
- error("failed to get flags for %s: %s", object,
- strerror(-ret));
- goto out;
- }
-
- if (!value) {
- if (flags & BTRFS_SUBVOL_RDONLY)
- fprintf(stdout, "ro=true\n");
- else
- fprintf(stdout, "ro=false\n");
- ret = 0;
- goto out;
- }
+ if (value) {
+ if (!strcmp(value, "true")) {
+ read_only = true;
+ } else if (!strcmp(value, "false")) {
+ read_only = false;
+ } else {
+ error("invalid value for property: %s", value);
+ return -EINVAL;
+ }
- if (!strcmp(value, "true")) {
- flags |= BTRFS_SUBVOL_RDONLY;
- } else if (!strcmp(value, "false")) {
- flags = flags & ~BTRFS_SUBVOL_RDONLY;
+ err = btrfs_util_set_subvolume_read_only(object, read_only);
+ if (err) {
+ error_btrfs_util(err);
+ return -errno;
+ }
} else {
- ret = -EINVAL;
- error("invalid value for property: %s", value);
- goto out;
- }
+ err = btrfs_util_get_subvolume_read_only(object, &read_only);
+ if (err) {
+ error_btrfs_util(err);
+ return -errno;
+ }
- ret = ioctl(fd, BTRFS_IOC_SUBVOL_SETFLAGS, &flags);
- if (ret < 0) {
- ret = -errno;
- error("failed to set flags for %s: %s", object,
- strerror(-ret));
- goto out;
+ printf("ro=%s\n", read_only ? "true" : "false");
}
-out:
- if (fd != -1)
- close(fd);
- return ret;
+ return 0;
}
static int prop_label(enum prop_object_type type,
--
2.16.1
next prev parent reply other threads:[~2018-01-26 18:41 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-26 18:40 [PATCH 00/26] btrfs-progs: introduce libbtrfsutil, "btrfs-progs as a library" Omar Sandoval
2018-01-26 18:40 ` [PATCH 01/26] btrfs-progs: get rid of undocumented qgroup inheritance options Omar Sandoval
2018-01-27 4:35 ` Qu Wenruo
2018-01-26 18:40 ` [PATCH 02/26] Add libbtrfsutil Omar Sandoval
2018-01-29 2:16 ` Qu Wenruo
2018-01-29 23:45 ` Omar Sandoval
2018-01-26 18:40 ` [PATCH 03/26] libbtrfsutil: add Python bindings Omar Sandoval
2018-01-26 18:40 ` [PATCH 04/26] libbtrfsutil: add btrfs_util_is_subvolume() and btrfs_util_subvolume_id() Omar Sandoval
2018-01-29 10:24 ` Nikolay Borisov
2018-01-29 21:43 ` Omar Sandoval
2018-01-30 6:54 ` Nikolay Borisov
2018-02-01 16:28 ` David Sterba
2018-02-02 19:14 ` Omar Sandoval
2018-01-26 18:40 ` [PATCH 05/26] libbtrfsutil: add qgroup inheritance helpers Omar Sandoval
2018-01-26 18:40 ` [PATCH 06/26] libbtrfsutil: add btrfs_util_create_subvolume() Omar Sandoval
2018-01-26 18:40 ` [PATCH 07/26] libbtrfsutil: add btrfs_util_subvolume_info() Omar Sandoval
2018-01-26 18:40 ` [PATCH 08/26] libbtrfsutil: add btrfs_util_[gs]et_read_only() Omar Sandoval
2018-01-26 18:40 ` [PATCH 09/26] libbtrfsutil: add btrfs_util_[gs]et_default_subvolume() Omar Sandoval
2018-01-26 18:40 ` [PATCH 10/26] libbtrfsutil: add subvolume iterator helpers Omar Sandoval
2018-01-26 18:40 ` [PATCH 11/26] libbtrfsutil: add btrfs_util_create_snapshot() Omar Sandoval
2018-01-26 19:31 ` Goffredo Baroncelli
2018-01-26 19:46 ` Omar Sandoval
2018-01-27 5:00 ` Qu Wenruo
2018-01-27 5:45 ` Omar Sandoval
2018-01-27 14:19 ` Goffredo Baroncelli
2018-01-27 16:31 ` Nikolay Borisov
2018-01-27 18:54 ` Omar Sandoval
2018-01-26 18:41 ` [PATCH 12/26] libbtrfsutil: add btrfs_util_delete_subvolume() Omar Sandoval
2018-01-26 18:41 ` [PATCH 13/26] libbtrfsutil: add btrfs_util_deleted_subvolumes() Omar Sandoval
2018-01-26 18:41 ` [PATCH 14/26] libbtrfsutil: add filesystem sync helpers Omar Sandoval
2018-01-26 18:41 ` Omar Sandoval [this message]
2018-01-26 18:41 ` [PATCH 16/26] btrfs-progs: use libbtrfsutil for sync ioctls Omar Sandoval
2018-01-26 18:41 ` [PATCH 17/26] btrfs-progs: use libbtrfsutil for set-default Omar Sandoval
2018-01-26 18:41 ` [PATCH 18/26] btrfs-progs: use libbtrfsutil for get-default Omar Sandoval
2018-01-26 18:41 ` [PATCH 19/26] btrfs-progs: use libbtrfsutil for subvol create and snapshot Omar Sandoval
2018-01-26 18:41 ` [PATCH 20/26] btrfs-progs: use libbtrfsutil for subvol delete Omar Sandoval
2018-01-26 18:41 ` [PATCH 21/26] btrfs-progs: use libbtrfsutil for subvol show Omar Sandoval
2018-02-02 23:18 ` Hans van Kranenburg
2018-02-02 23:29 ` Omar Sandoval
2018-01-26 18:41 ` [PATCH 22/26] btrfs-progs: use libbtrfsutil for subvol sync Omar Sandoval
2018-01-26 18:41 ` [PATCH 23/26] btrfs-progs: replace test_issubvolume() with btrfs_util_is_subvolume() Omar Sandoval
2018-01-26 18:41 ` [PATCH 24/26] btrfs-progs: add recursive snapshot/delete using libbtrfsutil Omar Sandoval
2018-01-26 18:41 ` [PATCH 25/26] btrfs-progs: deprecate libbtrfs helpers with libbtrfsutil equivalents Omar Sandoval
2018-02-02 14:49 ` David Sterba
2018-01-26 18:41 ` [PATCH 26/26] btrfs-progs: use libbtrfsutil for subvolume list Omar Sandoval
2018-01-26 18:51 ` [PATCH 00/26] btrfs-progs: introduce libbtrfsutil, "btrfs-progs as a library" Hugo Mills
2018-02-02 23:04 ` Hans van Kranenburg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=68d46bceaaa3f6e7310f7672d50d5875c92bf9ea.1516991902.git.osandov@fb.com \
--to=osandov@osandov.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).