From: Dave Chinner <david@fromorbit.com>
To: Mark Tinguely <tinguely@sgi.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH] xfs: reserve fields in inode for parent ptr and alloc policy
Date: Thu, 11 Apr 2013 13:00:57 +1000 [thread overview]
Message-ID: <20130411030057.GF10481@dastard> (raw)
In-Reply-To: <20130410182438.268267840@sgi.com>
On Wed, Apr 10, 2013 at 01:24:24PM -0500, Mark Tinguely wrote:
> Reserve fields in new inode layout for parent pointer and
> allocation policy.
Not without a design review - there is no way we are going to
blindly reserve space in any on-disk structure without first having
a solid design, published proof-of-concept code and agreement that
the format changes being proposed are the right way to proceed.
Where are the design docs/code for these features?
> ----
> The inode will hold the parent information for the first
> link to a file. Information for the other links will be
> held in extended attribute entries.
>
> The "di_parino" is the inode of the parent directory. The
> directory information for this entry is located the parent
> directory with "di_paroff" offset.
>
> The di_parino/di_paroff concept code is running.
How does it handle hard links? (i.e. multiple parents)
Also, inode number is not enough for unique identification of the
parent - generation number is also required.
FWIW, lets go back to the (was almost finished) parent pointer
code from 2009:
http://oss.sgi.com/archives/xfs/2009-01/msg01068.html
That uses xattrs to store parent information - inode #, generation
#, and a counter - for each parent. It requires a counter because
you can have the same inode hard linked into the same parent
directory multiple times:
typedef struct xfs_parent_eaname_rec {
__be64 p_ino;
__be32 p_gen;
__be32 p_cnt;
} xfs_parent_eaname_rec_t;
And a transaction appended to the the inode create, link, rename and
remove operations to manage the xattrs so all cases involving hard
links work just fine.
Indeed, the single di_parino/di_paroff concept was one of the
original designs considered because of it's simplicity, but it was
rejected because of that very simplicity - it cannot handle common
use cases involving hardlinks.
Release early, release often?
> ----
> The "di_allocpolicy" will be used to remember the allocation
> policy associated with this inode.
This is exactly what we have padding in the inode for - so that
future additions to the on-disk inode can be added via feature bits
to indicate the fields are present.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-04-11 3:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-10 18:24 [PATCH] xfs: reserve fields in inode for parent ptr and alloc policy Mark Tinguely
2013-04-10 18:56 ` Eric Sandeen
2013-04-10 19:39 ` Rich Johnston
2013-04-10 20:31 ` Mark Tinguely
2013-04-10 20:40 ` Eric Sandeen
2013-04-11 3:28 ` Dave Chinner
2013-04-11 3:00 ` Dave Chinner [this message]
2013-04-11 13:54 ` Mark Tinguely
2013-04-12 0:24 ` 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=20130411030057.GF10481@dastard \
--to=david@fromorbit.com \
--cc=tinguely@sgi.com \
--cc=xfs@oss.sgi.com \
/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.