From: "Austin S. Hemmelgarn" <ahferroin7@gmail.com>
To: linux-btrfs@vger.kernel.org, dsterba@suse.com
Cc: "Austin S. Hemmelgarn" <ahferroin7@gmail.com>
Subject: [PATCH] btrfs-progs: fix fi du so it works in more cases
Date: Mon, 21 Mar 2016 08:23:11 -0400 [thread overview]
Message-ID: <1458562991-6882-1-git-send-email-ahferroin7@gmail.com> (raw)
Currently, btrfs fi du uses open_file_or_dir(), which tries to open
it's argument with o_RDWR. Because of POSIX semantics, this fails for
non-root users when the file is read-only or is an executable that
is being run currently, or for all users (including root) when the
filesystem is read-only. THis results in a somewhat confusing 'Unknown
error -1' message when trying to check such files. Switch to using
open_file_or_dir3() with O_RDONLY passed in the flags, as this avoids
the limitations listed above, and we have no need to write to the files
anyway (and thus shouldn't be opening them writable).
Signed-off-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>
---
Build and runtime tested on x86-64 with glibc.
I intend to take the time at some point this week to audit all users of
open_file_or_dir() and similarly change any that don't need to write
to what they're opening, possibly adding a helper function to do a
read-only open.
cmds-fi-du.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cmds-fi-du.c b/cmds-fi-du.c
index 2ffd917..168fc72 100644
--- a/cmds-fi-du.c
+++ b/cmds-fi-du.c
@@ -438,7 +438,7 @@ static int du_add_file(const char *filename, int dirfd,
ret = sprintf(pathp, "/%s", filename);
pathp += ret;
- fd = open_file_or_dir(path, &dirstream);
+ fd = open_file_or_dir3(path, &dirstream, O_RDONLY);
if (fd < 0) {
ret = fd;
goto out;
--
2.7.4
next reply other threads:[~2016-03-21 12:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-21 12:23 Austin S. Hemmelgarn [this message]
2016-03-21 15:05 ` [PATCH] btrfs-progs: fix fi du so it works in more cases Martin Volf
2016-03-21 17:40 ` David Sterba
2016-03-21 17:53 ` Austin S. Hemmelgarn
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=1458562991-6882-1-git-send-email-ahferroin7@gmail.com \
--to=ahferroin7@gmail.com \
--cc=dsterba@suse.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).