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>
signature.asc
Description: This is a digitally signed message part
|