xfs
[Top] [All Lists]

Re: review: set blocksize patch - libxfs & mkfs

To: Timothy Shimmin <tes@xxxxxxx>
Subject: Re: review: set blocksize patch - libxfs & mkfs
From: Russell Cattelan <cattelan@xxxxxxxxxxx>
Date: Fri, 06 Oct 2006 10:58:10 -0500
Cc: xfs-dev@xxxxxxx, xfs@xxxxxxxxxxx
In-reply-to: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local>
References: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local>
Sender: xfs-bounce@xxxxxxxxxxx
On Fri, 2006-10-06 at 16:34 +1000, Timothy Shimmin wrote:

>  }
> Index: xfsprogs/libxfs/init.c
> ===================================================================
> --- xfsprogs/libxfs/init.c.orig       2006-10-06 14:12:27.000000000 +1000
> +++ xfsprogs/libxfs/init.c    2006-10-06 14:14:03.000000000 +1000
> @@ -116,8 +116,16 @@
>               exit(1);
>       }
> 
> -     if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK)
> -             platform_set_blocksize(fd, path, statb.st_rdev, 512);
> +     if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) {
> +             if (setblksize == 1)
> +                     /* use the default blocksize */
> +                     (void)platform_set_blocksize(fd, path, statb.st_rdev, 
> XFS_MIN_SECTORSIZE, 0);
> +             else {
> +                     /* given an explicit blocksize to use */
> +                     if (platform_set_blocksize(fd, path, statb.st_rdev, 
> setblksize, 1))
> +                         exit(1);
> +             }
should the return code always be checked for failure?
mybe something like
if (platform_set_blocksize(fd, path, statb.st_rdev,
                ((setblksize == 1)?XFS_MIN_SECTORSIZE:setblksize) 1))

would be bit cleaner


> +     }
> 
>       /*
>        * Get the device number from the stat buf - unless
> Index: xfsprogs/libxfs/irix.c
> ===================================================================
> --- xfsprogs/libxfs/irix.c.orig       2006-10-06 14:12:27.000000000 +1000
> +++ xfsprogs/libxfs/irix.c    2006-10-06 14:14:03.000000000 +1000
> @@ -36,8 +36,8 @@
>       return 1;
>  }
> 
> -void
> -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize)
> +int
> +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, 
> int fatal)
>  {
>       return;
>  }
> Index: xfsprogs/libxfs/linux.c
> ===================================================================
> --- xfsprogs/libxfs/linux.c.orig      2006-10-06 14:12:27.000000000 +1000
> +++ xfsprogs/libxfs/linux.c   2006-10-06 14:14:03.000000000 +1000
> @@ -102,16 +102,20 @@
>       return sts;
>  }
> 
> -void
> -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize)
> +int
> +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, 
> int fatal)
>  {
> +     int error = 0;
> +
>       if (major(device) != RAMDISK_MAJOR) {
> -             if (ioctl(fd, BLKBSZSET, &blocksize) < 0) {
> -                     fprintf(stderr, _("%s: warning - cannot set blocksize "
> +             if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) {
> +                     fprintf(stderr, _("%s: %s - cannot set blocksize "
>                                       "on block device %s: %s\n"),
> -                             progname, path, strerror(errno));
> +                             progname, fatal ? "error": "warning",
> +                             path, strerror(errno));
>               }
>       }
> +     return error;
>  }
> 
>  void
> Index: xfsprogs/mkfs/xfs_mkfs.c
> ===================================================================
> --- xfsprogs/mkfs/xfs_mkfs.c.orig     2006-10-06 14:12:27.000000000 +1000
> +++ xfsprogs/mkfs/xfs_mkfs.c  2006-10-06 14:14:03.000000000 +1000
> @@ -634,7 +634,6 @@
>       bzero(&fsx, sizeof(fsx));
> 
>       bzero(&xi, sizeof(xi));
> -     xi.setblksize = 1;
>       xi.isdirect = LIBXFS_DIRECT;
>       xi.isreadonly = LIBXFS_EXCLUSIVELY;
> 
> @@ -1506,6 +1505,11 @@
>       calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize,
>                               &dsunit, &dswidth, &lsunit);
> 
> +     if (slflag || ssflag)
> +         xi.setblksize = sectorsize;
> +     else
> +         xi.setblksize = 1;
> +
>       /*
>        * Initialize.  This will open the log and rt devices as well.
>        */
> Index: xfsprogs/libxfs/init.h
> ===================================================================
> --- xfsprogs/libxfs/init.h.orig       2006-10-06 14:12:27.000000000 +1000
> +++ xfsprogs/libxfs/init.h    2006-10-06 14:14:03.000000000 +1000
> @@ -25,7 +25,7 @@
>  extern int platform_check_iswritable (char *path, char *block,
>                                       struct stat64 *sptr, int fatal);
>  extern void platform_findsizes (char *path, int fd, long long *sz, int 
> *bsz);
> -extern void platform_set_blocksize (int fd, char *path, dev_t device, int 
> bsz);
> +extern int platform_set_blocksize (int fd, char *path, dev_t device, int 
> bsz, int fatal);
>  extern void platform_flush_device (int fd, dev_t device);
>  extern char *platform_findrawpath(char *path);
>  extern char *platform_findrawpath (char *path);
> Index: xfsprogs/VERSION
> ===================================================================
> --- xfsprogs/VERSION.orig     2006-10-06 14:28:43.000000000 +1000
> +++ xfsprogs/VERSION  2006-10-06 14:22:40.000000000 +1000
> @@ -3,5 +3,5 @@
>  #
>  PKG_MAJOR=2
>  PKG_MINOR=8
> -PKG_REVISION=13
> +PKG_REVISION=14
>  PKG_BUILD=1
> 
-- 
Russell Cattelan <cattelan@xxxxxxxxxxx>

Attachment: signature.asc
Description: This is a digitally signed message part

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