From owner-svn-src-head@FreeBSD.ORG Mon Jan 19 08:49:02 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D1F51065689; Mon, 19 Jan 2009 08:49:02 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id 9E3768FC1E; Mon, 19 Jan 2009 08:49:01 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c122-107-120-227.carlnfd1.nsw.optusnet.com.au (c122-107-120-227.carlnfd1.nsw.optusnet.com.au [122.107.120.227]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id n0J8mvF9020492 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 19 Jan 2009 19:48:59 +1100 Date: Mon, 19 Jan 2009 19:48:57 +1100 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Stanislav Sedov In-Reply-To: <200901181454.n0IEskw4077045@svn.freebsd.org> Message-ID: <20090119192954.V37158@delplex.bde.org> References: <200901181454.n0IEskw4077045@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r187396 - head/sys/gnu/fs/ext2fs X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jan 2009 08:49:02 -0000 On Sun, 18 Jan 2009, Stanislav Sedov wrote: > Log: > - Whitespace fixes. svn diff or a mailer always mangles whitespace (examples quoted below), so the whitespace fixes are hard to see in svn mail > - s_bmask field doesn't exist. > - Use correct flags in debug printf. The flags are more broken than before, fatally so on 64-bit arches if the code were actually used. > Modified: > head/sys/gnu/fs/ext2fs/ext2_vfsops.c > > Modified: head/sys/gnu/fs/ext2fs/ext2_vfsops.c > ============================================================================== > --- head/sys/gnu/fs/ext2fs/ext2_vfsops.c Sun Jan 18 14:04:56 2009 (r187395) > +++ head/sys/gnu/fs/ext2fs/ext2_vfsops.c Sun Jan 18 14:54:46 2009 (r187396) > @@ -5,7 +5,7 @@ > * University of Utah, Department of Computer Science > */ > /*- > - * Copyright (c) 1989, 1991, 1993, 1994 > + * Copyright (c) 1989, 1991, 1993, 1994 > * The Regents of the University of California. All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > @@ -120,7 +120,7 @@ static int compute_sb_data(struct vnode > static const char *ext2_opts[] = { "from", "export", "acls", "noexec", > "noatime", "union", "suiddir", "multilabel", "nosymfollow", > "noclusterr", "noclusterw", "force", NULL }; > - > + The above diff shows null changes, presumably after dropping trailing whitespace in the old version. Oops, actually the diff is invalid since something dropped the leading space in unchanged lines. > @@ -318,7 +318,7 @@ static int ext2_check_descriptors (struc > { > /* examine next descriptor block */ > if ((i % EXT2_DESC_PER_BLOCK(sb)) == 0) > - gdp = (struct ext2_group_desc *) > + gdp = (struct ext2_group_desc *) > sb->s_group_desc[desc_block++]->b_data; > if (gdp->bg_block_bitmap < block || > gdp->bg_block_bitmap >= block + EXT2_BLOCKS_PER_GROUP(sb)) Here most leading tabs are corrupt in both the new and old versions. Please fix all whitespace on a line if fixing any. > @@ -398,19 +398,19 @@ static int compute_sb_data(devvp, es, fs > int logic_sb_block = 1; /* XXX for now */ > > #if 1 > -#define V(v) > +#define V(v) > #else > #define V(v) printf(#v"= %d\n", fs->v); > #endif The existence of this macro is a bug, since it can only work for one type, but fields of different type need to be printed. Most fields don't have type int (the first one printed is s_blocksize which (especially bogusly on 64-bit machines) has type u_long, so the non-'#if 1' case would cause lots of errors. > @@ -1000,7 +1000,7 @@ ext2_vget(mp, ino, flags, vpp) > > /* Read in the disk contents for the inode, copy into the inode. */ > #if 0 > -printf("ext2_vget(%d) dbn= %d ", ino, fsbtodb(fs, ino_to_fsba(fs, ino))); > +printf("ext2_vget(%d) dbn= %lu ", ino, fsbtodb(fs, ino_to_fsba(fs, ino))); > #endif > if ((error = bread(ump->um_devvp, fsbtodb(fs, ino_to_fsba(fs, ino)), > (int)fs->s_blocksize, NOCRED, &bp)) != 0) { ino has type ino_t, so it cannot be printed portably without using a cast. Its actual type is uint32_t. If this code were actually, this would give the following printf format errors on various supported machines: old: sign mismatch only, since plain int happens to have the same size as ino_t on all supported machines. gcc doesn't even warn about this error, so this error would be non-fatal new: now a size mismatch on machines with 64-bit longs (amd64, ia64, sparc64 at least. gcc warns about this error, so the code is now fatally broken on many supported machines, except it is never actually used. Bruce