From: Joel Becker <Joel.Becker@oracle.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: Konrad Rzeszutek Wilk <konrad@darnok.org>,
linux-scsi <linux-scsi@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
Mike Christie <michaelc@cs.wisc.edu>,
Christoph Hellwig <hch@lst.de>, Hannes Reinecke <hare@suse.de>,
James Bottomley <James.Bottomley@suse.de>,
Jens Axboe <axboe@kernel.dk>, Boaz Harrosh <bharrosh@panasas.com>,
Linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [RFC 02/22] configfs: Add struct configfs_item_operations->check_link() in configfs_unlink()
Date: Fri, 10 Sep 2010 12:44:04 -0700 [thread overview]
Message-ID: <20100910194404.GJ885@mail.oracle.com> (raw)
In-Reply-To: <1284145606.19890.68.camel@haakon2.linux-iscsi.org>
On Fri, Sep 10, 2010 at 12:06:46PM -0700, Nicholas A. Bellinger wrote:
> On Fri, 2010-09-10 at 08:28 -0700, Joel Becker wrote:
> > The trivial solution is to refcount your ACLs. You get both
> > allow_link() calls, so you should be able to increment a counter there,
> > and then drop them when the last drop_link() call is made. That will
> > keep your consumer structures around until all links are exhausted.
> >
>
> So I am a bit confused wrt to this last response.. The ->check_link()
> patch and it's use in the fabric independent code within
> target_core_fabric_configfs.c does exactly this for the 'MappedLUN'
> symlink case, eg: requires the consumer to do the allow_link() +
> drop_link() refcounting, and add the
> API check into fs/configfs/symlink.c:configfs_unlink()
You can refcount without check_link().
> Is there another form of configfs consumer refcounting that you had in
> mind beyond using an atomic_t for this with ->check_link() here..?
I'm saying that you won't crash if you don't free the ACLs on
the first drop_link(). That is, the drop_link() goes through as
configfs wants it to, but you don't crash.
> So beyond a configfs consumer solution, what do you think about checking
> for the sub_child/group2/dst_0/dst_link style of symlink
> in fs/configfs/symlink.c:configfs_symlink() in order to add some form of
> internal refcount when the symlink source is within the same consumer
> LKM, but outside of the parent struct config_group..?
>
> This would involve the conversion of fs/configfs/symlink.c:
> configfs_unlink() path to check for the existence of this internal
> refcount and returning -EPERM when any sub_child/group2/dst_0/dst_link
> exist when 'unlink sub_child/group1/src_0/src_link' is attempted.
You're still fighting allowing the links to go away. You
haven't explained why that is necessary. You had a problem with a crash
because you expected one reference to your ACLs and actually have two,
but you can fix that without modifying configfs.
Joel
--
"I have never let my schooling interfere with my education."
- Mark Twain
Joel Becker
Consulting Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
next prev parent reply other threads:[~2010-09-10 19:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-30 9:20 [RFC 02/22] configfs: Add struct configfs_item_operations->check_link() in configfs_unlink() Nicholas A. Bellinger
2010-09-02 4:31 ` Konrad Rzeszutek Wilk
2010-09-02 6:48 ` Joel Becker
2010-09-02 19:40 ` Nicholas A. Bellinger
2010-09-07 21:01 ` Konrad Rzeszutek Wilk
2010-09-07 22:44 ` Joel Becker
2010-09-08 2:08 ` Nicholas A. Bellinger
2010-09-08 19:26 ` Joel Becker
2010-09-08 20:53 ` Nicholas A. Bellinger
2010-09-10 15:28 ` Joel Becker
2010-09-10 19:06 ` Nicholas A. Bellinger
2010-09-10 19:44 ` Joel Becker [this message]
2010-09-10 19:52 ` Nicholas A. Bellinger
2010-09-20 22:06 ` Joel Becker
2010-09-22 7:16 ` Nicholas A. Bellinger
2010-09-22 11:18 ` Boaz Harrosh
2010-09-22 11:54 ` Nicholas A. Bellinger
2010-09-23 3:59 ` Joel Becker
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=20100910194404.GJ885@mail.oracle.com \
--to=joel.becker@oracle.com \
--cc=James.Bottomley@suse.de \
--cc=axboe@kernel.dk \
--cc=bharrosh@panasas.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=konrad@darnok.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=michaelc@cs.wisc.edu \
--cc=nab@linux-iscsi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.