xfs
[Top] [All Lists]

Re: [PATCH VER 6] xfsprogs: projid32bit handling

To: Arkadiusz Miskiewicz <arekm@xxxxxxxx>
Subject: Re: [PATCH VER 6] xfsprogs: projid32bit handling
From: Alex Elder <aelder@xxxxxxx>
Date: Fri, 01 Oct 2010 08:57:40 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <201009260814.00111.arekm@xxxxxxxx>
References: <1285481418-31739-1-git-send-email-arekm@xxxxxxxx> <1285481438-31799-1-git-send-email-arekm@xxxxxxxx> <201009260814.00111.arekm@xxxxxxxx>
Reply-to: aelder@xxxxxxx
On Sun, 2010-09-26 at 08:13 +0200, Arkadiusz Miskiewicz wrote:
> On Sunday 26 of September 2010, 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.
> 
> ... and xfs_admin if someone needs it anyway.

Do you intend for this to be included or not?

I also have a question, below.

> 
> News:
> - use 0x80 instead of 0x20 for PROJID32BIT superblock bit (as 0x20
>   and 0x40 are reserved)
> 
> diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh
> index a7a3fdb..ec8424d 100755
> --- a/db/xfs_admin.sh
> +++ b/db/xfs_admin.sh
> @@ -6,9 +6,43 @@
>  status=0
>  DB_OPTS=""
>  REPAIR_OPTS=""
> -USAGE="Usage: xfs_admin [-efjluV] [-c 0|1] [-L label] [-U uuid] device"
> +USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device"

Here you are describing a "p" flag, but below you are
actually adding a "3" flag (and documented as such in
the man page).  I prefer "p" (but maybe there's a reason
you used "3" below).  Which is it?
 
> -while getopts "efjluc:L:U:V" c
> +set_features2_bit() {
> +     device="$1"
> +     bit="$2"
> +
> +     if [ -z "$device" ]; then
> +             echo "$0: device name is missing" >&2
> +             return 1
> +     fi
> +
> +     if [ -z "$bit" ]; then
> +             echo "$0: bits to set are missing" >&2
> +             return 1
> +     fi
> +
> +     # read current bits
> +     features2=$(xfs_db -p xfs_admin -x -r -c 'sb' -c 'print features2' 
> "$device" | awk ' { print $3 } ')
> +     if [ -z "$features2" ]; then
> +             echo "$0: can't read features2 from superblock!" >&2
> +             return 1
> +     fi
> +     bad_features2=$(xfs_db -p xfs_admin -x -r -c 'sb' -c 'print 
> bad_features2' "$device" | awk ' { print $3 } ')
> +     if [ -z "$bad_features2" ]; then
> +             echo "$0: can't read bad_features2 from superblock!" >&2
> +             return 1
> +     fi
> +
> +     # set new bits
> +     features2=$((features2 | bit))
> +     bad_features2=$((bad_features2 | bit))
> +     xfs_db -p xfs_admin -x -c 'sb' -c "write features2 $features2" 
> "$device" && \
> +             xfs_db -p xfs_admin -x -c 'sb' -c "write bad_features2 
> $bad_features2" "$device"
> +     return $?
> +}
> +
> +while getopts "efjlu3c:L:U:V"
>  do
>       case $c in
>       c)      REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG;;
> @@ -17,6 +51,7 @@ do
>       j)      DB_OPTS=$DB_OPTS" -c 'version log2'";;
>       l)      DB_OPTS=$DB_OPTS" -r -c label";;
>       L)      DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'";;
> +     3)      FEATURES_BIT="0x80";;

>       u)      DB_OPTS=$DB_OPTS" -r -c uuid";;
>       U)      DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'";;
>       V)      xfs_db -p xfs_admin -V
> @@ -31,7 +66,12 @@ done
>  set -- extra $@
>  shift $OPTIND
>  case $# in
> -     1)      if [ -n "$DB_OPTS" ]
> +     1)      if [ -n "$FEATURES_BIT" ]
> +             then
> +                     set_features2_bit "$1" "$FEATURES_BIT"
> +                     status=$?
> +             fi
> +             if [ -n "$DB_OPTS" ]
>               then
>                       eval xfs_db -x -p xfs_admin $DB_OPTS $1
>                       status=$?
> diff --git a/man/man8/xfs_admin.8 b/man/man8/xfs_admin.8
> index 8e3155b..6b727f3 100644
> --- a/man/man8/xfs_admin.8
> +++ b/man/man8/xfs_admin.8
> @@ -4,7 +4,7 @@ xfs_admin \- change parameters of an XFS filesystem
>  .SH SYNOPSIS
>  .B xfs_admin
>  [
> -.B \-eflu
> +.B \-eflu3
>  ] [
>  .BR "\-c 0" | 1
>  ] [
> @@ -55,6 +55,9 @@ Print the current filesystem label.
>  .B \-u
>  Print the current filesystem UUID (Universally Unique IDentifier).
>  .TP
> +.B \-3
> +Enable 32bit project identifier support (PROJID32BIT feature).
> +.TP
>  .BR "\-c 0" | 1
>  Enable (1) or disable (0) lazy-counters in the filesystem.
>  This operation may take quite a bit of time on large filesystems as the
> 
> 



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