xfs
[Top] [All Lists]

Re: [PATCH VER 6] xfsprogs: projid32bit handling

To: Arkadiusz Miśkiewicz <arekm@xxxxxxxx>
Subject: Re: [PATCH VER 6] xfsprogs: projid32bit handling
From: Alex Elder <aelder@xxxxxxx>
Date: Fri, 01 Oct 2010 08:57:18 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <1285481438-31799-1-git-send-email-arekm@xxxxxxxx>
References: <1285481418-31739-1-git-send-email-arekm@xxxxxxxx> <1285481438-31799-1-git-send-email-arekm@xxxxxxxx>
Reply-to: aelder@xxxxxxx
On Sun, 2010-09-26 at 08:10 +0200, Arkadiusz Miśkiewicz wrote:
> Add projid32bit handling to userspace. mkfs.xfs is able to enable this
> feature for new filesystems. xfs_db knows what projid_lo/hi are.
> 
> Signed-off-by: Arkadiusz Miśkiewicz <arekm@xxxxxxxx>
> Reviewed-by: Christoph Hellwig <hch@xxxxxx>

This looks good (although I've only done a quick review).
I have found a few nits, below, which could be pretty
easily fixed before it's committed (by me unless some
else is going to do it).

I think it would be nice to have xfs_repair (and check)
report the existence of non-zero bs_projid_hi on a
filesystem without the PROJID32BIT superblock bit set.
But that wait.

Reviewed-by: Alex Elder <aelder@xxxxxxx>

> ---
> 
> News:
> - use 0x80 instead of 0x20 for PROJID32BIT superblock bit (as 0x20
>   and 0x40 are reserved)                                                      
>                                                                               
>  

. . .

> diff --git a/include/xfs_fs.h b/include/xfs_fs.h
> index 74e7274..9a51c64 100644
> --- a/include/xfs_fs.h
> +++ b/include/xfs_fs.h
> @@ -299,9 +299,10 @@ typedef struct xfs_bstat {
>       __s32           bs_extsize;     /* extent size                  */
>       __s32           bs_extents;     /* number of extents            */
>       __u32           bs_gen;         /* generation count             */
> -     __u16           bs_projid;      /* project id                   */
> +     __u16           bs_projid;      /* lower part of project id     */

This:
          __u16           bs_projid_lo;   /* lower part... */
#define bs_projid bs_projid_lo

...would make the old code compile but would make the
struct definition more consistent with the others.


>       __u16           bs_forkoff;     /* inode fork offset in bytes   */
> -     unsigned char   bs_pad[12];     /* pad space, unused            */
> +     __u16           bs_projid_hi;   /* higher part of project id    */
> +     unsigned char   bs_pad[10];     /* pad space, unused            */
>       __u32           bs_dmevmask;    /* DMIG event mask              */
>       __u16           bs_dmstate;     /* DMIG state info              */
>       __u16           bs_aextents;    /* attribute number of extents  */

. . .

> diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8
> index fdd38d4..a59bc89 100644
> --- a/man/man8/mkfs.xfs.8
> +++ b/man/man8/mkfs.xfs.8
> @@ -350,6 +350,13 @@ between attribute and extent data.
>  The previous version 1, which has fixed regions for attribute and
>  extent data, is kept for backwards compatibility with kernels older
>  than version 2.6.16.
> +.TP
> +.BI projid32bit[= value]

       projid32bit[=value]

> +This is used to enable 32bit quota project identifiers. The
> +.I value
> +is either 0 or 1, with 1 signifying that 32bit projid are to be enabled.
> +If the

   If the value

> +is omitted, 0 is assumed.
>  .RE
>  .TP
>  .BI \-l " log_section_options"

. . .

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