On 4/10/13 1:24 PM, Mark Tinguely wrote:
> Reserve fields in new inode layout for parent pointer and
> allocation policy.
> ----
> 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.
> ----
> The "di_allocpolicy" will be used to remember the allocation
> policy associated with this inode.
can you say more about this allocation policy?
-Eric
> Signed-off-by: Mark Tinguely <tinguely@xxxxxxx>
> ---
> fs/xfs/xfs_dinode.h | 3 +++
> fs/xfs/xfs_inode.c | 6 ++++++
> fs/xfs/xfs_inode.h | 3 +++
> 3 files changed, 12 insertions(+)
>
> Index: b/fs/xfs/xfs_dinode.h
> ===================================================================
> --- a/fs/xfs/xfs_dinode.h
> +++ b/fs/xfs/xfs_dinode.h
> @@ -76,6 +76,9 @@ typedef struct xfs_dinode {
> __be64 di_changecount; /* number of attribute changes */
> __be64 di_lsn; /* flush sequence */
> __be64 di_flags2; /* more random flags */
> + __be64 di_parino; /* parent inode */
> + __be32 di_paroff; /* offset into parent directory */
> + __be32 di_allocpolicy; /* allocation policy number */
> __u8 di_pad2[16]; /* more padding for future expansion */
>
> /* fields only written to during inode creation */
> Index: b/fs/xfs/xfs_inode.c
> ===================================================================
> --- a/fs/xfs/xfs_inode.c
> +++ b/fs/xfs/xfs_inode.c
> @@ -875,6 +875,9 @@ xfs_dinode_from_disk(
> to->di_flags2 = be64_to_cpu(from->di_flags2);
> to->di_ino = be64_to_cpu(from->di_ino);
> to->di_lsn = be64_to_cpu(from->di_lsn);
> + to->di_parino = be64_to_cpu(from->di_parino);
> + to->di_paroff = be32_to_cpu(from->di_paroff);
> + to->di_allocpolicy = be32_to_cpu(from->di_allocpolicy);
> memcpy(to->di_pad2, from->di_pad2, sizeof(to->di_pad2));
> uuid_copy(&to->di_uuid, &from->di_uuid);
> }
> @@ -922,6 +925,9 @@ xfs_dinode_to_disk(
> to->di_flags2 = cpu_to_be64(from->di_flags2);
> to->di_ino = cpu_to_be64(from->di_ino);
> to->di_lsn = cpu_to_be64(from->di_lsn);
> + to->di_parino = cpu_to_be64(from->di_parino);
> + to->di_paroff = cpu_to_be32(from->di_paroff);
> + to->di_allocpolicy = cpu_to_be32(from->di_allocpolicy);
> memcpy(to->di_pad2, from->di_pad2, sizeof(to->di_pad2));
> uuid_copy(&to->di_uuid, &from->di_uuid);
> }
> Index: b/fs/xfs/xfs_inode.h
> ===================================================================
> --- a/fs/xfs/xfs_inode.h
> +++ b/fs/xfs/xfs_inode.h
> @@ -159,6 +159,9 @@ typedef struct xfs_icdinode {
> __uint64_t di_changecount; /* number of attribute changes */
> xfs_lsn_t di_lsn; /* flush sequence */
> __uint64_t di_flags2; /* more random flags */
> + xfs_ino_t di_parino; /* parent inode */
> + __uint32_t di_paroff; /* offset into parent directory */
> + __uint32_t di_allocpolicy; /* allocation policy number */
> __uint8_t di_pad2[16]; /* more padding for future expansion */
>
> /* fields only written to during inode creation */
>
>
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
>
|