xfs
[Top] [All Lists]

Re: [PATCH] xfs: reserve fields in inode for parent ptr and alloc policy

To: Mark Tinguely <tinguely@xxxxxxx>
Subject: Re: [PATCH] xfs: reserve fields in inode for parent ptr and alloc policy
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Wed, 10 Apr 2013 13:56:11 -0500
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20130410182438.268267840@xxxxxxx>
References: <20130410182438.268267840@xxxxxxx>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130328 Thunderbird/17.0.5
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
> 

<Prev in Thread] Current Thread [Next in Thread>