From: Nathan Scott Date: Wed, 5 Dec 2001 07:11:19 +0000 (+0000) Subject: bump version to 1.3.14. X-Git-Tag: v2.0.0~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6d1d29a7f39e04f19d83389919ca0f16f580f4fd;p=thirdparty%2Fxfsprogs-dev.git bump version to 1.3.14. --- diff --git a/VERSION b/VERSION index 14f60de69..a2a5b896e 100644 --- a/VERSION +++ b/VERSION @@ -3,5 +3,5 @@ # PKG_MAJOR=1 PKG_MINOR=3 -PKG_REVISION=13 +PKG_REVISION=14 PKG_BUILD=0 diff --git a/debian/changelog b/debian/changelog index 2eb882a20..46db6e36d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +xfsprogs (1.3.14-1) unstable; urgency=low + + * Fix minor package version numbering issue (closes: #117545) + * Fix bug in mkfs.xfs device size cross-check for realtime device + + -- Nathan Scott Wed, 5 Dec 2001 17:13:06 +1100 + xfsprogs (1.3.13-0) unstable; urgency=low * New upstream release diff --git a/doc/CHANGES b/doc/CHANGES index 531755966..e6f4a02f5 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -1,3 +1,11 @@ +xfsprogs-1.3.14 (05 December 2001) + - fix minor debian package version numbering issue + - add documentation for xfs_db(8) label/uuid commands + - automatic inode sizing code in mkfs.xfs has been removed + (restricting inodes to 32 bits) - Steve's recent kernel + changes mean this is no longer an issue + - fix bug in mkfs.xfs size cross-check for realtime device + xfsprogs-1.3.13 (25 October 2001) - fix bug in mkfs for 1Tbyte + filesystems - sync with recent kernel changes - this does not affect diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c index 138f03c33..b078c1a1f 100644 --- a/growfs/xfs_growfs.c +++ b/growfs/xfs_growfs.c @@ -79,24 +79,15 @@ report_info( int dirversion, int isint) { - - int inodebits; - - inodebits = (libxfs_highbit32(geo.blocksize/geo.inodesize - 1) + 1) - + (libxfs_highbit64(geo.agblocks - 1) + 1) - + (libxfs_highbit64(geo.agcount - 1) + 1); - printf("meta-data=%-22s isize=%-6d agcount=%d, agsize=%d blks\n" "data =%-22s bsize=%-6d blocks=%lld, imaxpct=%d\n" " =%-22s sunit=%-6d swidth=%d blks, unwritten=%d\n" - " =%-22s imaxbits=%-6d\n" "naming =version %-14d bsize=%-6d\n" "log =%-22s bsize=%-6d blocks=%d\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n", mntpoint, geo.inodesize, geo.agcount, geo.agblocks, "", geo.blocksize, (long long)geo.datablocks, geo.imaxpct, "", geo.sunit, geo.swidth, unwritten, - "", inodebits, dirversion, geo.dirblocksize, isint ? "internal" : "external", geo.blocksize, geo.logblocks, geo.rtblocks ? "external" : "none", @@ -186,7 +177,6 @@ main(int argc, char **argv) long esize; /* new rt extent size */ int ffd; /* mount point file descriptor */ xfs_fsop_geom_t geo; /* current fs geometry */ - int Iflag; /* force flag for big inode numbers */ int iflag; /* -i flag */ int isint; /* log is currently internal */ int lflag; /* -l flag */ @@ -204,10 +194,10 @@ main(int argc, char **argv) mtab = MOUNTED; progname = basename(argv[0]); - aflag = dflag = Iflag = iflag = lflag = mflag = nflag = rflag = xflag = 0; + aflag = dflag = iflag = lflag = mflag = nflag = rflag = xflag = 0; maxpct = esize = 0; dsize = lsize = rsize = 0LL; - while ((c = getopt(argc, argv, "dD:e:IilL:m:np:rR:t:xV")) != EOF) { + while ((c = getopt(argc, argv, "dD:e:ilL:m:np:rR:t:xV")) != EOF) { switch (c) { case 'D': dsize = atoll(optarg); @@ -219,9 +209,6 @@ main(int argc, char **argv) esize = atol(optarg); rflag = 1; break; - case 'I': - Iflag = 1; - break; case 'i': lflag = iflag = 1; break; @@ -333,7 +320,6 @@ main(int argc, char **argv) error = 0; if (dflag | aflag) { xfs_growfs_data_t in; - int inodebits; __uint64_t new_agcount; if (!mflag) @@ -351,10 +337,6 @@ main(int argc, char **argv) new_agcount = dsize / geo.agblocks + (dsize % geo.agblocks != 0); - inodebits = (libxfs_highbit32(geo.blocksize/geo.inodesize - 1) + 1) - + (libxfs_highbit64(geo.agblocks - 1) + 1) - + (libxfs_highbit64(new_agcount - 1) + 1); - if (!error && dsize < geo.datablocks) { fprintf(stderr, "data size %lld too small," " old size is %lld\n", @@ -368,14 +350,6 @@ main(int argc, char **argv) if (mflag) fprintf(stderr, "inode max pct unchanged, skipping\n"); - } else if (!error && !Iflag - && inodebits > XFS_MAX_INODE_SIG_BITS) { - fprintf(stderr, - "warning: inode numbers would exceed %d " - "significant bits (%d)\n" - " Use -I option to allow this\n", - XFS_MAX_INODE_SIG_BITS, inodebits); - error = 1; } else if (!error && !nflag) { in.newblocks = (__u64)dsize; in.imaxpct = (__u32)maxpct; @@ -390,12 +364,6 @@ main(int argc, char **argv) progname, strerror(errno)); error = 1; } - if (inodebits > XFS_MAX_INODE_SIG_BITS) { - fprintf(stderr, - "inode numbers exceed %d " - "significant bits (%d)\n", - XFS_MAX_INODE_SIG_BITS, inodebits); - } } } diff --git a/include/xfs_mount.h b/include/xfs_mount.h index 3f5207c68..11b8f3237 100644 --- a/include/xfs_mount.h +++ b/include/xfs_mount.h @@ -219,6 +219,7 @@ typedef struct xfs_mount { int m_bsize; /* fs logical block size */ xfs_agnumber_t m_agfrotor; /* last ag where space found */ xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ + xfs_agnumber_t m_maxagi; /* highest inode alloc group */ int m_ihsize; /* size of next field */ struct xfs_ihash *m_ihash; /* fs private inode hash table*/ struct xfs_inode *m_inodes; /* active inode list */ @@ -241,6 +242,7 @@ typedef struct xfs_mount { buftarg_t m_logdev_targ; /* ptr to log device */ buftarg_t m_rtdev_targ; /* ptr to rt device */ buftarg_t *m_ddev_targp; /* saves taking the address */ +#define m_rtdev_targp(m)(&(m)->m_rtdev_targ) #define m_dev m_ddev_targ.dev #define m_logdev m_logdev_targ.dev #define m_rtdev m_rtdev_targ.dev @@ -343,6 +345,8 @@ typedef struct xfs_mount { #define XFS_MOUNT_DFLT_IOSIZE 0x00001000 /* set default i/o size */ #define XFS_MOUNT_OSYNCISDSYNC 0x00002000 /* treat o_sync like o_dsync */ #define XFS_MOUNT_NOUUID 0x00004000 /* ignore uuid during mount */ +#define XFS_MOUNT_32BITINODES 0x00008000 /* do not create inodes above + * 32 bits in size */ /* * Flags for m_cxfstype @@ -487,6 +491,7 @@ struct xfs_buf *xfs_getsb(xfs_mount_t *, int); void xfs_freesb(xfs_mount_t *); void _xfs_force_shutdown(struct xfs_mount *, int, char *, int); int xfs_syncsub(xfs_mount_t *, int, int, int *); +void xfs_initialize_perag(xfs_mount_t *, int); void xfs_xlatesb(void *, struct xfs_sb *, int, xfs_arch_t, __int64_t); /* diff --git a/libxfs/xfs.h b/libxfs/xfs.h index 807e765c8..235352341 100644 --- a/libxfs/xfs.h +++ b/libxfs/xfs.h @@ -169,8 +169,8 @@ #define xfs_buf_item_log_debug(bip,a,b) ((void) 0) /* debug only */ #define xfs_validate_extents(e,n,f) ((void) 0) /* debug only */ #define xfs_buf_relse(bp) libxfs_putbuf(bp) -#define xfs_read_buf(mp,x,blkno,len,f,bpp) \ - ( *(bpp) = libxfs_readbuf( (mp)->m_dev, (blkno), (len), 1), 0 ) +#define xfs_read_buf(mp,devp,blkno,len,f,bpp) \ + ( *(bpp) = libxfs_readbuf( *(dev_t*)devp, (blkno), (len), 1), 0 ) /* transaction management */ @@ -238,6 +238,7 @@ typedef struct { dev_t dev; } buftarg_t; #define EFSCORRUPTED 990 /* Filesystem is corrupted */ #define ktrace_t void #define m_ddev_targp m_dev +#define m_rtdev_targp(m)(&(m)->m_rtdev) #define KERN_WARNING #define XFS_ERROR(e) (e) #define XFS_TEST_ERROR(expr,a,b,c) ( expr ) diff --git a/libxfs/xfs_rtalloc.c b/libxfs/xfs_rtalloc.c index 9b2615f3b..530ebed7a 100644 --- a/libxfs/xfs_rtalloc.c +++ b/libxfs/xfs_rtalloc.c @@ -823,7 +823,7 @@ xfs_rtmount_init( (unsigned long long) mp->m_sb.sb_rblocks); return XFS_ERROR(E2BIG); } - error = xfs_read_buf(mp, &mp->m_rtdev_targ, d - 1, 1, 0, &bp); + error = xfs_read_buf(mp, m_rtdev_targp(mp), d - 1, 1, 0, &bp); if (error) { printk(KERN_WARNING "XFS: RT mount - xfs_read_buf returned %d\n", error); diff --git a/man/man8/xfs_growfs.8 b/man/man8/xfs_growfs.8 index bf624b25a..355068f2d 100644 --- a/man/man8/xfs_growfs.8 +++ b/man/man8/xfs_growfs.8 @@ -3,7 +3,7 @@ xfs_growfs, xfs_info \- expand an XFS filesystem .SH SYNOPSIS .nf -\f3xfs_growfs\f1 [ \f3\-dIilnrxV\f1 ] [ \f3\-D\f1 size ] [ \f3\-e\f1 rtextsize ] +\f3xfs_growfs\f1 [ \f3\-dilnrxV\f1 ] [ \f3\-D\f1 size ] [ \f3\-e\f1 rtextsize ] [ \f3\-L\f1 size ] [ \f3\-m\f1 maxpct ] [ \f3-t\f1 mtab ] [ \f3\-R\f1 size ] mount-point \f3xfs_info\f1 [ \f3-t\f1 mtab ] mount-point @@ -51,10 +51,6 @@ this is specified with .B \-r .BI extsize= nnnn. .TP -.B \-I -Allow new inode numbers to exceed 32 significant bits. -(See CONSIDERATIONS below.) -.TP .B \-i The new log is an internal log (inside the data section). @@ -129,33 +125,8 @@ Filesystems normally occupy all of the space on the device where they reside. In order to grow a filesystem, it is necessary to provide added space for it to occupy. -Therefore there must be at least one spare new -disk partition available. -Adding the space is done through the mechanism of -logical volumes. -.SH CONSIDERATIONS -XFS uses 64-bit inode numbers internally; however, the number of -significant bits in an inode number is -affected by filesystem geometry. In -practice, filesystem size and inode size are the predominant factors. -The Linux kernel and most applications cannot currently handle -inode numbers greater than 32 significant bits, so -.I xfs_growfs -will issue a warning and fail if growing the filesystem will -cause the significant bits in inode numbers to exceed 32 bits. -This can be overwritten with the -.B \-I -option. -.PP -If you anticipate significantly growing filesystems after using -.I mkfs.xfs -you should take into consideration this inode number growth -as well, -and keep the number of significant digits sufficiently small -to allow for future growth. On average, doubling the size -of the inode will reduce significant bits by one, and doubling -the size of the filesystem will increase significant bits -by one. +Therefore there must be at least one spare new disk partition available. +Adding the space is often done through the use of a logical volume manager. .SH SEE ALSO mkfs.xfs(8), lvm(8), diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 0e23ef795..45e159c14 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -379,7 +379,6 @@ main(int argc, char **argv) int imaxpct; int imflag; int inodelog; - int inodebits; int inopblock; int ipflag; int isflag; @@ -1516,67 +1515,6 @@ main(int argc, char **argv) } } -#if 0 - /* - * Check to see if inode number will be > 32 significant bits - * Note that libxfs_highbitXX returns 0 -> XX-1, - * so to get the bit count, add one to what we get. - */ - - inodebits = (libxfs_highbit32(blocksize/isize - 1) + 1) - + (libxfs_highbit64(agsize - 1) + 1) - + (libxfs_highbit64(agcount - 1) + 1); - - if (inodebits > XFS_MAX_INODE_SIG_BITS) { - - int new_isize; - int new_isize_ok; - - new_isize = isize << (inodebits - XFS_MAX_INODE_SIG_BITS); - - new_isize_ok = (new_isize <= blocksize / XFS_MIN_INODE_PERBLOCK - && new_isize <= XFS_DINODE_MAX_SIZE); - - if (ilflag + ipflag + isflag == 0) { - /* - * If we didn't specify inode size, just bump it up - * unless we can't go far enough. - */ - - if (new_isize_ok) { - isize = new_isize; - /* re-calc inodebits */ - inodebits = (libxfs_highbit32(blocksize/isize - 1) + 1) - + (libxfs_highbit64(agsize - 1) + 1) - + (libxfs_highbit64(agcount - 1) + 1); - inodelog = libxfs_highbit32(isize); - /* Let's not get too chatty, no fprintf here */ - } else { - /* - * Can't do nothin' for ya, man! - * Don't bother changing isize at all, - * one bit over is as bad as 20. - */ - fprintf(stderr, - "warning: inode numbers exceed %d " - " significant bits (%d)\n", - XFS_MAX_INODE_SIG_BITS, inodebits); - } - } else { - /* if isize specified, just warn the user */ - fprintf(stderr, - "warning: inode numbers exceed %d " - "significant bits (%d)\n", - XFS_MAX_INODE_SIG_BITS, inodebits); - if (new_isize_ok) { - fprintf(stderr, - " increase inode size to %d to " - "avoid this\n", new_isize); - } - } - } -#endif - protostring = setup_proto(protofile); bsize = 1 << (blocklog - BBSHIFT); buf = libxfs_getbuf(xi.ddev, XFS_SB_DADDR, 1); @@ -1703,14 +1641,12 @@ main(int argc, char **argv) "meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n" "data =%-22s bsize=%-6d blocks=%lld, imaxpct=%d\n" " =%-22s sunit=%-6d swidth=%d blks, unwritten=%d\n" - " =%-22s imaxbits=%-6d\n" "naming =version %-14d bsize=%-6d\n" "log =%-22s bsize=%-6d blocks=%lld\n" "realtime =%-22s extsz=%-6d blocks=%lld, rtextents=%lld\n", dfile, isize, (long long)agcount, (long long)agsize, "", blocksize, (long long)dblocks, sbp->sb_imax_pct, "", dsunit, dswidth, extent_flagging, - "", inodebits, dirversion, dirversion == 1 ? blocksize : dirblocksize, logfile, 1 << blocklog, (long long)logblocks, rtfile, rtextblocks << blocklog,