From: Christoph Hellwig <hch@infradead.org>
To: Ilya Pronin <ipronin@twitter.com>
Cc: linux-xfs@vger.kernel.org, Carlos Maiolino <cmaiolino@redhat.com>
Subject: Re: Reading/changing projid of a symlink
Date: Tue, 12 Jun 2018 23:23:41 -0700 [thread overview]
Message-ID: <20180613062341.GA24317@infradead.org> (raw)
In-Reply-To: <CA+Xn3kyxiOj+irNiqKWQWfJ_aUv1RYFsH+UCnv3gnMuYJ=oUQw@mail.gmail.com>
On Tue, Jun 12, 2018 at 03:17:27PM -0700, Ilya Pronin wrote:
> So the only way to remove a symlink from a project is to remove it?
Yes.
> Here's my use case. In Apache Mesos we use XFS project quotas for disk
> space isolation. Every container sandbox is allocated its own project
> ID. When the container terminates its project ID is unset from the
> sandbox and files inside it, and can be used for other containers.
> Sandboxes of terminated containers stay on the host for some time for
> debugging, etc. With such approach the inability to remove projid from
> symlinks presents a small problem: when a project ID is reused for a
> new container, any lingering symlinks that still have that project ID
> will contribute to disk usage of the new container. Typically not
> much, but still that's inaccurate. I guess we'll need to change when
> we "deallocate" projids.
There isn't really much we can do in XFS about it. Traditionally in
all Unix variants you can never get a file descriptor for a symlink,
and all normal file operations always follow symlinks. So you need
special new syscalls to handle the symlink. Now Linux added the
O_PATH mount option a while ago which actually allows you to get
a file descriptor on symlinks, but just very limited ones that do
not actually support calls into the underlying file system.
So to support your use case we'd either need a new lioctl system
call, or some way to support limited ioctls on O_PATH fds. Either
would be a VFS change and would turn into a huge discussion. Once
that is done however wiring up the XFS bits would be trivial.
next prev parent reply other threads:[~2018-06-13 6:23 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-31 0:26 Reading/changing projid of a symlink Ilya Pronin
2018-06-12 14:36 ` Carlos Maiolino
2018-06-12 22:17 ` Ilya Pronin
2018-06-13 6:23 ` Christoph Hellwig [this message]
2018-06-13 14:22 ` Eric Sandeen
2018-06-13 9:40 ` Carlos Maiolino
2018-06-15 0:14 ` Ilya Pronin
2018-06-15 7:08 ` Carlos Maiolino
2018-06-15 7:12 ` Christoph Hellwig
2018-06-15 8:57 ` Carlos Maiolino
2018-06-15 9:00 ` Christoph Hellwig
2018-06-14 2:31 ` Dave Chinner
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=20180613062341.GA24317@infradead.org \
--to=hch@infradead.org \
--cc=cmaiolino@redhat.com \
--cc=ipronin@twitter.com \
--cc=linux-xfs@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).