From owner-p4-projects@FreeBSD.ORG Sun Jul 19 06:11:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2F2681065672; Sun, 19 Jul 2009 06:11:12 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D30A2106566C for ; Sun, 19 Jul 2009 06:11:11 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B67FB8FC12 for ; Sun, 19 Jul 2009 06:11:11 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6J6BBX3094934 for ; Sun, 19 Jul 2009 06:11:11 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6J6BBL1094932 for perforce@freebsd.org; Sun, 19 Jul 2009 06:11:11 GMT (envelope-from truncs@FreeBSD.org) Date: Sun, 19 Jul 2009 06:11:11 GMT Message-Id: <200907190611.n6J6BBL1094932@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166249 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 06:11:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=166249 Change 166249 by truncs@aditya on 2009/07/19 06:10:20 Implementing ext2fs group descriptors in a new way because the old implementation uses some GPL'd functions. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#25 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#13 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#9 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#25 (text+ko) ==== @@ -58,6 +58,8 @@ #define MAXMNTLEN 512 #define EXT2_MAX_GROUP_LOADED 8 #define buffer_head buf +#define e2fs_cgload(old, new, size) memcpy((new), (old), (size)); +#define e2fs_cgsave(old, new, size) memcpy((new), (old), (size)); /* * The second extended filesystem constants/structures */ @@ -360,6 +362,7 @@ uint32_t e2fs_blocksize_bits; char e2fs_wasvalid; /* valid at mount time */ off_t e2fs_maxfilesize; + struct ext2_gd *e2fs_gd; /* Group Descriptors */ }; ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#13 (text+ko) ==== @@ -84,7 +84,7 @@ static int ext2_mountfs(struct vnode *, struct mount *); static int ext2_reload(struct mount *mp, struct thread *td); static int ext2_sbupdate(struct ext2mount *, int); - +static int ext2_cgupdate(struct ext2mount *, int); static vfs_unmount_t ext2_unmount; static vfs_root_t ext2_root; static vfs_statfs_t ext2_statfs; @@ -157,7 +157,7 @@ */ if (mp->mnt_flag & MNT_UPDATE) { ump = VFSTOEXT2(mp); - fs = ump->um_e2fs; + fs = ump->um_e2fs; error = 0; if (fs->e2fs_ronly == 0 && vfs_flagopt(opts, "ro", NULL, 0)) { @@ -171,7 +171,7 @@ return (EBUSY); error = ext2_flushfiles(mp, flags, td); vfs_unbusy(mp); - if (!error && fs->e2fs_wasvalid) { + if ( error == 0 && fs->e2fs_wasvalid && ext2_cgupdate(ump, MNT_WAIT) == 0) { fs->e2fs->e2fs_state |= E2FS_ISCLEAN; ext2_sbupdate(ump, MNT_WAIT); } @@ -227,7 +227,7 @@ } } fs->e2fs->e2fs_state &= ~E2FS_ISCLEAN; - ext2_sbupdate(ump, MNT_WAIT); + (void)ext2_cgupdate(ump, MNT_WAIT); fs->e2fs_ronly = 0; MNT_ILOCK(mp); mp->mnt_flag &= ~MNT_RDONLY; @@ -303,6 +303,7 @@ * Checks that the data in the descriptor blocks make sense * this is taken from ext2/super.c. */ +/* static int ext2_check_descriptors(struct m_ext2fs *sb) { @@ -312,7 +313,7 @@ int i; for (i = 0; i < sb->e2fs_gcount; i++) { - /* examine next descriptor block */ + examine next descriptor block */ /* if ((i % EXT2_DESC_PER_BLOCK(sb)) == 0) gdp = (struct ext2_gd *) sb->e2fs_group_desc[desc_block++]->b_data; @@ -346,7 +347,7 @@ } return (1); } - +*/ static int ext2_check_sb_compat(struct ext2fs *es, struct cdev *dev, int ronly) { @@ -382,8 +383,9 @@ struct m_ext2fs *fs) { int db_count, error; - int i, j; + int i; int logic_sb_block = 1; /* XXX for now */ + struct buf *bp; fs->e2fs_bsize = EXT2_MIN_BLOCK_SIZE << es->e2fs_log_bsize; fs->e2fs_bshift = EXT2_MIN_BLOCK_LOG_SIZE + es->e2fs_log_bsize; @@ -425,6 +427,8 @@ fs->e2fs_gdbcount = db_count; fs->e2fs_group_desc = malloc(db_count * sizeof (struct buf *), M_EXT2MNT, M_WAITOK); + fs->e2fs_gd = malloc(db_count * fs->e2fs_bsize, + M_EXT2MNT, M_WAITOK); /* * Adjust logic_sb_block. @@ -433,27 +437,21 @@ */ if(fs->e2fs_bsize > SBSIZE) logic_sb_block = 0; - for (i = 0; i < db_count; i++) { - error = bread(devvp , fsbtodb(fs, logic_sb_block + i + 1), - fs->e2fs_bsize, NOCRED, &fs->e2fs_group_desc[i]); - if(error) { - for (j = 0; j < i; j++) - brelse(fs->e2fs_group_desc[j]); - free(fs->e2fs_group_desc, M_EXT2MNT); - printf("EXT2-fs: unable to read group descriptors" - " (%d)\n", error); - return (EIO); + error = bread(devvp , + fsbtodb(fs, logic_sb_block + i + 1 ), + fs->e2fs_bsize, NOCRED, &bp); + if (error) { + free(fs->e2fs_gd, M_EXT2MNT); + brelse(bp); + return (error); } - LCK_BUF(fs->e2fs_group_desc[i]) - } - if(!ext2_check_descriptors(fs)) { - for (j = 0; j < db_count; j++) - ULCK_BUF(fs->e2fs_group_desc[j]) - free(fs->e2fs_group_desc, M_EXT2MNT); - printf("EXT2-fs: (ext2_check_descriptors failure) " - "unable to read group descriptors\n"); - return (EIO); + e2fs_cgload((struct ext2_gd *)bp->b_data, + &fs->e2fs_gd[ + i * fs->e2fs_bsize / sizeof(struct ext2_gd)], + fs->e2fs_bsize); + brelse(bp); + bp = NULL; } for (i = 0; i < EXT2_MAX_GROUP_LOADED; i++) { fs->e2fs_ibn[i] = 0; @@ -706,6 +704,7 @@ PICKUP_GIANT(); } if (ump) { + free(ump->um_e2fs->e2fs_gd, M_EXT2MNT); free(ump->um_e2fs->e2fs, M_EXT2MNT); free(ump->um_e2fs, M_EXT2MNT); free(ump, M_EXT2MNT); @@ -735,17 +734,17 @@ ump = VFSTOEXT2(mp); fs = ump->um_e2fs; ronly = fs->e2fs_ronly; - if (ronly == 0) { + if (ronly == 0 && ext2_cgupdate(ump, MNT_WAIT) == 0) { if (fs->e2fs_wasvalid) - fs->e2fs->e2fs_state |= E2FS_ISCLEAN; - ext2_sbupdate(ump, MNT_WAIT); + fs->e2fs->e2fs_state |= E2FS_ISCLEAN; + ext2_sbupdate(ump, MNT_WAIT); } /* release buffers containing group descriptors */ - for(i = 0; i < fs->e2fs_gdbcount; i++) +/* for(i = 0; i < fs->e2fs_gdbcount; i++) ULCK_BUF(fs->e2fs_group_desc[i]) free(fs->e2fs_group_desc, M_EXT2MNT); - +*/ /* release cached inode/block bitmaps */ for (i = 0; i < EXT2_MAX_GROUP_LOADED; i++) if (fs->e2fs_ib[i]) @@ -760,6 +759,7 @@ g_topology_unlock(); PICKUP_GIANT(); vrele(ump->um_devvp); + free(fs->e2fs_gd, M_EXT2MNT); free(fs->e2fs, M_EXT2MNT); free(fs, M_EXT2MNT); free(ump, M_EXT2MNT); @@ -909,7 +909,7 @@ if (fs->e2fs_fmod != 0) { fs->e2fs_fmod = 0; fs->e2fs->e2fs_wtime = time_second; - if ((error = ext2_sbupdate(ump, waitfor)) != 0) + if ((error = ext2_cgupdate(ump, waitfor)) != 0) allerror = error; } return (allerror); @@ -1106,7 +1106,31 @@ */ return (error); } +int +ext2_cgupdate(struct ext2mount *mp, int waitfor) +{ + struct m_ext2fs *fs = mp->um_e2fs; + struct buf *bp; + int i, error = 0, allerror = 0; + + allerror = ext2_sbupdate(mp, waitfor); + for (i = 0; i < fs->e2fs_gdbcount; i++) { + bp = getblk(mp->um_devvp, fsbtodb(fs, + fs->e2fs->e2fs_first_dblock + + 1 /* superblock */ + i), fs->e2fs_bsize, 0, 0, 0); + e2fs_cgsave(&fs->e2fs_gd[ + i * fs->e2fs_bsize / sizeof(struct ext2_gd)], + (struct ext2_gd *)bp->b_data, fs->e2fs_bsize); + if (waitfor == MNT_WAIT) + error = bwrite(bp); + else + bawrite(bp); + } + if (!allerror && error) + allerror = error; + return (allerror); +} /* * Return the root of a filesystem. */ ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#9 (text+ko) ==== @@ -83,8 +83,9 @@ #define ino_to_cg(fs, x) (((x) - 1) / (fs->e2fs_ipg)) /* get block containing inode from its number x */ -#define ino_to_fsba(fs, x) fs_cs(fs, ino_to_cg(fs, x)).ext2bgd_i_tables + \ - (((x)-1) % (fs->e2fs_ipg))/(fs->e2fs_ipb) +#define ino_to_fsba(fs, x) \ + ((fs)->e2fs_gd[ino_to_cg((fs), (x))].ext2bgd_i_tables + \ + (((x) - 1) % (fs)->e2fs->e2fs_ipg) / (fs)->e2fs_ipb) /* get offset for inode in block */ #define ino_to_fsbo(fs, x) ((x-1) % (fs->e2fs_ipb)) From owner-p4-projects@FreeBSD.ORG Sun Jul 19 06:41:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EAE821065670; Sun, 19 Jul 2009 06:41:45 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1AF8106564A for ; Sun, 19 Jul 2009 06:41:45 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 59E0E8FC14 for ; Sun, 19 Jul 2009 06:41:45 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6J6fjIw097143 for ; Sun, 19 Jul 2009 06:41:45 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6J6fj9N097141 for perforce@freebsd.org; Sun, 19 Jul 2009 06:41:45 GMT (envelope-from truncs@FreeBSD.org) Date: Sun, 19 Jul 2009 06:41:45 GMT Message-Id: <200907190641.n6J6fj9N097141@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166250 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 06:41:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=166250 Change 166250 by truncs@aditya on 2009/07/19 06:40:46 Updated Milestones. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/Milestones#3 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/Milestones#3 (text+ko) ==== @@ -13,8 +13,6 @@ Sat, May 16 - Wed, May 20 : Phase 2 planning and research Thu, May 21 - Thu, May 28 : Rewriting ext2fs.h and ext2fs_sb.h -######################################################################## - Tue, June 16 - Fri, June 19 : Researching NetBSD's block and inode allocation policy @@ -22,8 +20,10 @@ Tue, July 7 - Fri, July 10 : Interval for gaining on lost schedule, reviewing code, updating blog, wiki etc. +########################################################################################################### -Sat, July 11 - Sun, July 26 : Rewriting parts of ext2_vfops.c and i386_bitops.h + +Thu, July 23 - Sun, July 26 : Cleanup Mon, July 27 - Wed, August 5 : Benchmarking From owner-p4-projects@FreeBSD.ORG Sun Jul 19 07:18:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 84336106566C; Sun, 19 Jul 2009 07:18:25 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4412F106564A for ; Sun, 19 Jul 2009 07:18:25 +0000 (UTC) (envelope-from tatsianka@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3025E8FC18 for ; Sun, 19 Jul 2009 07:18:25 +0000 (UTC) (envelope-from tatsianka@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6J7IPaN000726 for ; Sun, 19 Jul 2009 07:18:25 GMT (envelope-from tatsianka@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6J7IPhK000724 for perforce@freebsd.org; Sun, 19 Jul 2009 07:18:25 GMT (envelope-from tatsianka@FreeBSD.org) Date: Sun, 19 Jul 2009 07:18:25 GMT Message-Id: <200907190718.n6J7IPhK000724@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to tatsianka@FreeBSD.org using -f From: Tatsiana Severyna To: Perforce Change Reviews Cc: Subject: PERFORCE change 166251 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 07:18:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=166251 Change 166251 by tatsianka@tatsianka_zonder on 2009/07/19 07:18:22 Add librefuse port Add fuse implementations of sshfs and unionfs for testing Fix statfs and nodetofh/fhtonode issues Affected files ... .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/dirent_compat.h#2 delete .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/null.c#4 edit .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/opdump.c#3 edit .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/puffs_dirent_compat.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/subr.c#3 edit .. //depot/projects/soc2009/tatsianka_puffs/librefuse/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/librefuse/fuse.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/librefuse/fuse_opt.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse.3#1 add .. //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse_opt.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/fs.c#3 edit .. //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vnops.c#7 edit .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/cache.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/cache.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/config.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/sshfs.1#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-sshfs/sshfs.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/CMakeLists.txt#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/CREDITS#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/cow.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/cow.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/cow_utils.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/cow_utils.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/debug.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/debug.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/elfhash.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/elfhash.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/findbranch.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/findbranch.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/general.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/general.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hash.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hash.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hashtable.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hashtable.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hashtable_itr.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hashtable_itr.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/hashtable_private.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/opts.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/opts.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/readdir.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/readdir.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/rmdir.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/rmdir.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/stats.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/stats.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/string.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/string.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/test.sh#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/unionfs.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/unionfs.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/unlink.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/unlink.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/test-fusefs-unionfs/version.h#1 add Differences ... ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/null.c#4 (text+ko) ==== @@ -47,7 +47,7 @@ #include #include -#include "dirent_compat.h" +#include "puffs_dirent_compat.h" PUFFSOP_PROTOS(puffs_null) @@ -167,10 +167,8 @@ PUFFSOP_SET(pops, puffs_null, fs, statvfs); PUFFSOP_SETFSNOP(pops, unmount); PUFFSOP_SETFSNOP(pops, sync); -#ifdef XXX_TS PUFFSOP_SET(pops, puffs_null, fs, fhtonode); PUFFSOP_SET(pops, puffs_null, fs, nodetofh); -#endif PUFFSOP_SET(pops, puffs_null, node, lookup); PUFFSOP_SET(pops, puffs_null, node, create); @@ -202,26 +200,21 @@ return 0; } -#ifdef XXX_TS /* * XXX: this is the stupidest crap ever, but: * getfh() returns the fhandle type, when we are expected to deliver * the fid type. Just adjust it a bit and stop whining. * * Yes, this really really needs fixing. Yes, *REALLY*. + * + * XXX_TS: Directly use struct fid, as fh larger then MAXFIDSZ is unsupported */ -#define FHANDLE_HEADERLEN 8 -struct kernfid { - unsigned short fid_len; /* length of data in bytes */ - unsigned short fid_reserved; /* compat: historic align */ - char fid_data[0]; /* data (variable length) */ -}; /*ARGSUSED*/ static void * fhcmp(struct puffs_usermount *pu, struct puffs_node *pn, void *arg) { - struct kernfid *kf1, *kf2; + struct fid *kf1, *kf2; if ((kf1 = pn->pn_data) == NULL) return NULL; @@ -247,6 +240,9 @@ { struct puffs_node *pn_res; + if (fidsize != sizeof(struct fid)) + return EINVAL; + pn_res = puffs_pn_nodewalk(pu, fhcmp, fid); if (pn_res == NULL) return ENOENT; @@ -264,38 +260,25 @@ void *fid, size_t *fidsize) { struct puffs_node *pn = opc; - struct kernfid *kfid; - void *bounce; + fhandle_t fh; int rv; + if (*fidsize != sizeof(struct fid)) + return EINVAL; + rv = 0; - bounce = NULL; - if (*fidsize) { - bounce = malloc(*fidsize + FHANDLE_HEADERLEN); - if (!bounce) - return ENOMEM; - *fidsize += FHANDLE_HEADERLEN; - } - if (getfh(PNPATH(pn), bounce, fidsize) == -1) + if (getfh(PNPATH(pn), &fh) == -1) rv = errno; - else - memcpy(fid, (uint8_t *)bounce + FHANDLE_HEADERLEN, - *fidsize - FHANDLE_HEADERLEN); - kfid = fid; if (rv == 0) { - *fidsize = kfid->fid_len; + *(struct fid *)fid = fh.fh_fid; pn->pn_data = malloc(*fidsize); if (pn->pn_data == NULL) abort(); /* lazy */ memcpy(pn->pn_data, fid, *fidsize); - } else { - *fidsize -= FHANDLE_HEADERLEN; } - free(bounce); return rv; } -#endif int puffs_null_node_lookup(struct puffs_usermount *pu, puffs_cookie_t opc, @@ -431,18 +414,6 @@ if (fd == -1) return errno; -#ifdef XXX_TS - if (how & PUFFS_FSYNC_DATAONLY) - fflags = FDATASYNC; - else - fflags = FFILESYNC; - if (how & PUFFS_FSYNC_CACHE) - fflags |= FDISKSYNC; - - if (fsync_range(fd, fflags, offlo, offhi - offlo) == -1) - rv = errno; -#endif - if (fsync(fd) == -1) rv = errno; ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/opdump.c#3 (text+ko) ==== @@ -258,7 +258,6 @@ void puffsdump_cn(struct puffs_kcn *pkcn) { - /* XXX_TS under if _KERNEL */ const int NAMEI_OPMASK = 3; ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/subr.c#3 (text+ko) ==== @@ -44,7 +44,7 @@ #include "puffs_priv.h" -#include "dirent_compat.h" +#include "puffs_dirent_compat.h" int puffs_gendotdent(struct dirent **dent, ino_t id, int dotdot, size_t *reslen) ==== //depot/projects/soc2009/tatsianka_puffs/mount_psshfs/fs.c#3 (text+ko) ==== @@ -180,11 +180,7 @@ uint8_t type; memset(sbp, 0, sizeof(*sbp)); -#ifdef XXX_TS - sbp->f_bsize = sbp->f_frsize = sbp->f_iosize = 512; -#else sbp->f_bsize = sbp->f_iosize = 512; -#endif if ((pctx->extensions & SFTP_EXT_STATVFS) == 0) goto out; @@ -200,21 +196,15 @@ } psbuf_get_8(pb, &tmpval); - sbp->f_bsize = tmpval; + sbp->f_iosize = tmpval; /* statvfs.f_bsize */ psbuf_get_8(pb, &tmpval); -#ifdef XXX_TS - sbp->f_frsize = tmpval; -#endif + sbp->f_bsize = tmpval; /* statvfs.f_frsize */ psbuf_get_8(pb, &sbp->f_blocks); psbuf_get_8(pb, &sbp->f_bfree); psbuf_get_8(pb, &sbp->f_bavail); psbuf_get_8(pb, &sbp->f_files); psbuf_get_8(pb, &sbp->f_ffree); -#ifdef XXX_TS - psbuf_get_8(pb, &sbp->f_favail); -#else - psbuf_get_8(pb, &tmpval); -#endif + psbuf_get_8(pb, &tmpval); /* favail */ psbuf_get_8(pb, &tmpval); /* fsid */ psbuf_get_8(pb, &tmpval); /* flag */ ==== //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vnops.c#7 (text+ko) ==== @@ -123,9 +123,10 @@ struct vnode *vp = ap->a_vp; struct fid *fhp = ap->a_fhp; PUFFS_MSG_VARS(vfs, nodetofh); + struct puffs_node *pn = VPTOPP(vp); struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount); size_t argsize, fhlen; - int error; + int error, ltype; DTRACE(); if (pmp->pmp_args.pa_fhsize == 0) @@ -138,8 +139,11 @@ nodetofh_msg->pvfsr_dsize = fhlen; puffs_msg_setinfo(park_nodetofh, PUFFSOP_VFS, PUFFS_VFS_VPTOFH, NULL); - PUFFS_MSG_ENQUEUEWAIT(pmp, park_nodetofh, error); + puffs_msg_enqueue(pmp, park_nodetofh); + puffs_unlockvnode(pn, <ype); + error = puffs_msg_wait(pmp, park_nodetofh); error = checkerr(pmp, error, __func__); + PUFFS_LOCKVNODE(pn, ltype, error); if (pmp->pmp_args.pa_fhflags & PUFFS_FHFLAG_PASSTHROUGH) fhlen = nodetofh_msg->pvfsr_dsize; From owner-p4-projects@FreeBSD.ORG Sun Jul 19 07:27:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 93F7C1065672; Sun, 19 Jul 2009 07:27:37 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52A0A1065670 for ; Sun, 19 Jul 2009 07:27:37 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3E6128FC18 for ; Sun, 19 Jul 2009 07:27:37 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6J7RbS7001393 for ; Sun, 19 Jul 2009 07:27:37 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6J7RZpE001391 for perforce@freebsd.org; Sun, 19 Jul 2009 07:27:35 GMT (envelope-from mav@freebsd.org) Date: Sun, 19 Jul 2009 07:27:35 GMT Message-Id: <200907190727.n6J7RZpE001391@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166252 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 07:27:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=166252 Change 166252 by mav@mav_mavbook on 2009/07/19 07:26:37 IFC Affected files ... .. //depot/projects/scottl-camlock/src/Makefile.inc1#6 integrate .. //depot/projects/scottl-camlock/src/ObsoleteFiles.inc#9 integrate .. //depot/projects/scottl-camlock/src/UPDATING#10 integrate .. //depot/projects/scottl-camlock/src/contrib/amd/amd/get_args.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/gcc/config/freebsd-spec.h#3 integrate .. //depot/projects/scottl-camlock/src/contrib/netcat/nc.1#5 integrate .. //depot/projects/scottl-camlock/src/contrib/ntp/scripts/mkver.in#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/NEWS#2 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/VERSION#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/config/config.h#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/configure#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/configure.ac#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/etc/audit_event#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/libauditd/auditd_lib.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_control.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_errno.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_io.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_token.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/man/audit_control.5#3 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/sys/bsm/audit.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/openbsm/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/sendmail/cf/sh/makeinfo.sh#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcpdump/ieee802_11.h#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcpdump/ieee802_11_radio.h#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcpdump/print-802_11.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/Fixes#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/Imakefile#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/Makefile.ADMIN#2 delete .. //depot/projects/scottl-camlock/src/contrib/tcsh/Makefile.in#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/README#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/RELEASE-PROCEDURE#2 delete .. //depot/projects/scottl-camlock/src/contrib/tcsh/complete.tcsh#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/config.guess#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/config.h.in#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/config.rpath#1 branch .. //depot/projects/scottl-camlock/src/contrib/tcsh/config.sub#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/config_f.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/configure#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/configure.in#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.chared.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.decls.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.inputl.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.screen.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.term.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ed.xmap.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/glob.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/host.defs#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/ma.setp.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/patchlevel.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.char.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.char.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.decls.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.dir.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.dol.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.err.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.exec.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.exp.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.file.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.func.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.glob.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.lex.c#4 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.proc.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.proc.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.sem.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/sh.set.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/snames.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.bind.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.const.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.decls.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.func.c#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.os.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.sig.h#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tc.str.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tcsh.man#3 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tw.color.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tw.comp.c#2 integrate .. //depot/projects/scottl-camlock/src/contrib/tcsh/tw.parse.c#2 integrate .. //depot/projects/scottl-camlock/src/etc/mtree/BSD.include.dist#5 integrate .. //depot/projects/scottl-camlock/src/etc/ntp.conf#2 integrate .. //depot/projects/scottl-camlock/src/etc/pam.d/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/etc/pam.d/gdm#3 delete .. //depot/projects/scottl-camlock/src/games/fortune/datfiles/fortunes#5 integrate .. //depot/projects/scottl-camlock/src/games/fortune/datfiles/fortunes-o.real#5 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libgcc/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libssp/libssp_nonshared/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/include/Makefile#6 integrate .. //depot/projects/scottl-camlock/src/include/dlfcn.h#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/lib/libc/gen/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/gen/dlopen.3#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/gen/ftok.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/gen/msgctl.3#4 delete .. //depot/projects/scottl-camlock/src/lib/libc/gen/msgget.3#2 delete .. //depot/projects/scottl-camlock/src/lib/libc/gen/msgrcv.3#2 delete .. //depot/projects/scottl-camlock/src/lib/libc/gen/msgsnd.3#2 delete .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/Makefile.inc#4 integrate .. //depot/projects/scottl-camlock/src/lib/libc/stdio/fread.c#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/stdio/fwrite.c#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/sys/Makefile.inc#6 integrate .. //depot/projects/scottl-camlock/src/lib/libc/sys/Symbol.map#8 integrate .. //depot/projects/scottl-camlock/src/lib/libc/sys/mmap.2#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/sys/msgctl.2#1 branch .. //depot/projects/scottl-camlock/src/lib/libc/sys/msgget.2#1 branch .. //depot/projects/scottl-camlock/src/lib/libc/sys/msgrcv.2#1 branch .. //depot/projects/scottl-camlock/src/lib/libc/sys/msgsnd.2#1 branch .. //depot/projects/scottl-camlock/src/lib/libc/sys/stack_protector.c#3 integrate .. //depot/projects/scottl-camlock/src/lib/libcam/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libdwarf/dwarf_loc.c#2 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/libusb.h#2 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/libusb10.c#2 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/libusb10.h#2 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/libusb10_desc.c#2 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/libusb10_io.c#2 integrate .. //depot/projects/scottl-camlock/src/libexec/rtld-elf/Makefile#6 integrate .. //depot/projects/scottl-camlock/src/libexec/rtld-elf/map_object.c#4 integrate .. //depot/projects/scottl-camlock/src/libexec/rtld-elf/rtld.c#5 integrate .. //depot/projects/scottl-camlock/src/sbin/camcontrol/camcontrol.8#6 integrate .. //depot/projects/scottl-camlock/src/sbin/camcontrol/camcontrol.c#13 integrate .. //depot/projects/scottl-camlock/src/sbin/ifconfig/ifconfig.8#6 integrate .. //depot/projects/scottl-camlock/src/sbin/ifconfig/ifieee80211.c#5 integrate .. //depot/projects/scottl-camlock/src/sbin/ifconfig/ifmedia.c#4 integrate .. //depot/projects/scottl-camlock/src/secure/lib/libcrypto/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/Makefile#8 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/aac.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/ath.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/ieee80211.4#3 delete .. //depot/projects/scottl-camlock/src/share/man/man4/mwl.4#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/net80211.4#1 branch .. //depot/projects/scottl-camlock/src/share/man/man4/pcm.4#8 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/ral.4#4 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/wlan.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/Makefile#6 integrate .. //depot/projects/scottl-camlock/src/share/mk/bsd.lib.mk#4 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/exception.S#11 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/pmap.c#28 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/conf/GENERIC#25 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/pmap.h#15 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/pci/pci_bus.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/arm/conf/AVILA#9 integrate .. //depot/projects/scottl-camlock/src/sys/arm/conf/CAMBRIA#4 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/pmap.h#19 integrate .. //depot/projects/scottl-camlock/src/sys/arm/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/bsm/audit_kevents.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#24 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#32 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#93 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.h#17 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_periph.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#42 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#29 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ses.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sg.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/compat/opensolaris/sys/sig.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/dev/dtrace/amd64/dtrace_subr.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/dev/dtrace/i386/dtrace_subr.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linprocfs/linprocfs.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_ioctl.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/compat/linux/linux_socket.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/compat/svr4/svr4_sockio.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/conf/NOTES#32 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files#39 integrate .. //depot/projects/scottl-camlock/src/sys/conf/newvers.sh#9 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options#28 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/altq/altq/altq_subr.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslcompile.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/dev/acpica/compiler/aslutils.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf_if.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf_ioctl.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pf_subr.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/pf/net/pfvar.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/contrib/rdma/rdma_cma.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_expr.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_sym.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_variables.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/db_variables.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/ddb/ddb.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aac/aac_disk.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_pcib_acpi.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/advansys.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/dev/advansys/advlib.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.h#15 integrate .. //depot/projects/scottl-camlock/src/sys/dev/amd/amd.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/atapi-cam.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-marvell.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_ath.c#27 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_athvar.h#19 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ciss/ciss.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ciss/cissvar.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/e1000/if_igb.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/hptrr/hptrr_config.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ipw/if_ipw.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_freebsd.h#19 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iwi/if_iwi.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/dev/iwn/if_iwn.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfivar.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mlx/mlx.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mlx/mlxvar.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt.h#23 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_pci.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mwl/if_mwl.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2560.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ral/rt2661.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/re/if_re.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/pcm/feeder_rate.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/dev/sound/usb/uaudio.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/dev/trm/trm.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_busdma.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/dev/wpi/if_wpi.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfs/nfs_commonkrpc.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfs/nfsport.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clvnops.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsserver/nfs_nfsdport.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/geom/vinum/geom_vinum.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/conf/GENERIC#24 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/pmap.c#29 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/pmap.h#18 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/i386/pci/pci_bus.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/i386/xen/pmap.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/ia64/pmap.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/pmap.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/kern/init_main.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_exit.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_fork.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_jail.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_linker.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_mbuf.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_poll.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_prot.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_sig.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_synch.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_sysctl.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_thread.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_uuid.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_vimage.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/kern/link_elf.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/kern/link_elf_obj.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_sleepqueue.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_trap.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_domain.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/mips/include/pmap.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/mips/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/modules/Makefile#31 integrate .. //depot/projects/scottl-camlock/src/sys/modules/cam/Makefile#13 integrate .. //depot/projects/scottl-camlock/src/sys/net/bridgestp.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/net/flowtable.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/net/flowtable.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/net/if.c#30 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_bridge.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_clone.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_ef.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_enc.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_ethersubr.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_faith.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_gif.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_gif.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_gre.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_loop.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_media.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_mib.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_spppsubr.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_stf.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_var.h#22 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_vlan.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/net/raw_cb.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/net/raw_cb.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/net/raw_usrreq.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/net/route.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/net/rtsock.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/net/vnet.c#1 branch .. //depot/projects/scottl-camlock/src/sys/net/vnet.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/_ieee80211.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_action.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_ddb.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_freebsd.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_freebsd.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_hwmp.c#1 branch .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_input.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_input.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_ioctl.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_ioctl.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_mesh.c#1 branch .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_mesh.h#1 branch .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_node.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_node.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_output.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_proto.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_proto.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_scan.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_scan.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_scan_sta.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_var.h#18 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/atm/ng_atm.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/netgraph.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_base.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_eiface.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_ether.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_gif.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_iface.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/icmp6.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/icmp_var.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/if_ether.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/igmp.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_gif.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_mcast.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_pcb.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_pcb.h#18 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_rmx.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_var.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_carp.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_divert.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_fastfwd.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw.h#15 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_icmp.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_input.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_ipsec.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_mroute.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_options.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_output.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_var.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw2.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw_nat.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw_pfil.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/raw_ip.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/sctp_os_bsd.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_hostcache.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_input.c#28 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_offload.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_offload.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_output.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_reass.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_sack.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_subr.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_syncache.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_syncache.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_timer.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_timewait.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_usrreq.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_var.h#24 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/udp_usrreq.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/udp_var.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/vinet.h#5 delete .. //depot/projects/scottl-camlock/src/sys/netinet6/dest6.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/frag6.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/icmp6.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_gif.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_ifattach.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_mcast.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_pcb.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_proto.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_rmx.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_src.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_var.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_forward.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_input.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_ipsec.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_mroute.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_output.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_var.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/mld6.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6_nbr.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/nd6_rtr.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/raw_ip6.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/raw_ip6.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/route6.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/scope6.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/tcp6_var.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/udp6_usrreq.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/vinet6.h#5 delete .. //depot/projects/scottl-camlock/src/sys/netipsec/ah_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/esp_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipcomp_var.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipip_var.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec6.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec_input.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec_mbuf.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec_output.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/key.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/key_debug.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/key_debug.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/keysock.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/keysock.h#5 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/vipsec.h#3 delete .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_ah.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_esp.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_ipcomp.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_ipip.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_tcp.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/nfs/nfs_common.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/bootp_subr.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_bio.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_diskless.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_vnops.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfsmount.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/pc98/conf/GENERIC#19 integrate .. //depot/projects/scottl-camlock/src/sys/pci/if_rlreg.h#17 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/aim/mmu_oea64.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/pmap.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/rpc/clnt_rc.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/rpc/clnt_vc.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_bsm_errno.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit_bsm_token.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/conf/GENERIC#23 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/pmap.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/conf/GENERIC#13 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/pmap.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/vm.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/pmap.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/sys/param.h#27 integrate .. //depot/projects/scottl-camlock/src/sys/sys/pcpu.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/sys/proc.h#24 integrate .. //depot/projects/scottl-camlock/src/sys/sys/signalvar.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sleepqueue.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sockio.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sysctl.h#18 integrate .. //depot/projects/scottl-camlock/src/sys/sys/ucred.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sys/vimage.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/vm/device_pager.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/vm/pmap.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_contig.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_extern.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_map.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_mmap.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_object.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_object.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_page.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_phys.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_phys.h#4 integrate .. //depot/projects/scottl-camlock/src/tools/regression/poll/4/pipepoll.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/4/pipeselect.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/7/pipepoll.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/7/pipeselect.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/Makefile#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/Readme#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/l/pipepoll.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/l/pipeselect.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/m/pipepoll.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/m/pipeselect.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/n/pipepoll.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/n/pipeselect.out#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/pipepoll.c#1 branch .. //depot/projects/scottl-camlock/src/tools/regression/poll/pipeselect.c#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/nanobsd/gateworks/G2348#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/nanobsd/gateworks/G2358#3 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/config#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/common#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/config.mesh#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/setup.simple#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/topology.line#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/topology.ring#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/topology.star#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/scripts/mesh/topology.tree#1 branch .. //depot/projects/scottl-camlock/src/tools/tools/net80211/wlanstats/wlanstats.c#3 integrate .. //depot/projects/scottl-camlock/src/tools/tools/vimage/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/vimage/vimage.c#2 integrate .. //depot/projects/scottl-camlock/src/usr.bin/kdump/mkioctls#4 integrate .. //depot/projects/scottl-camlock/src/usr.bin/mklocale/yacc.y#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/dist.c#4 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wlandebug/wlandebug.8#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wlandebug/wlandebug.c#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/hostapd/hostapd.8#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/hostapd/hostapd.conf.5#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/hostapd_cli/hostapd_cli.8#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/wpa_cli/wpa_cli.8#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/wpa_passphrase/wpa_passphrase.8#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.8#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5#3 integrate Differences ... ==== //depot/projects/scottl-camlock/src/Makefile.inc1#6 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.627 2009/06/29 01:33:59 kan Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.628 2009/07/14 21:19:13 kan Exp $ # # Make command line options: # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir @@ -1069,7 +1069,7 @@ # # static libgcc.a prerequisite for shared libc # -_prereq_libs= gnu/lib/libgcc +_prereq_libs= gnu/lib/libssp/libssp_nonshared gnu/lib/libgcc # These dependencies are not automatically generated: # ==== //depot/projects/scottl-camlock/src/ObsoleteFiles.inc#9 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.199 2009/07/01 07:37:21 dfr Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.202 2009/07/18 16:33:27 marcus Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,6 +14,17 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090718: the gdm pam.d file is no longer required. +OLD_FILES+=etc/pam.d/gdm +# 20090713: vimage container structs removed. +OLD_FILES+=usr/include/netinet/vinet.h +OLD_FILES+=usr/include/netinet6/vinet6.h +OLD_FILES+=usr/include/netipsec/vipsec.h +# 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved +OLD_FILES+=usr/share/man/man3/msgctl.3.gz +OLD_FILES+=usr/share/man/man3/msgget.3.gz +OLD_FILES+=usr/share/man/man3/msgrcv.3.gz +OLD_FILES+=usr/share/man/man3/msgsnd.3.gz # 20090630: old kernel RPC implementation removal OLD_FILES+=usr/include/nfs/rpcv2.h # 20090624: update usbdi(9) ==== //depot/projects/scottl-camlock/src/UPDATING#10 (text+ko) ==== @@ -22,6 +22,25 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090714: + Due to changes in the implementation of virtual network stack + support, all network-related kernel modules must be recompiled. + As this change breaks the ABI, bump __FreeBSD_version to 800104. + +20090713: + The TOE interface to the TCP syncache has been modified to remove struct + tcpopt () from the ABI of the network stack. The + cxgb driver is the only TOE consumer affected by this change, and needs + to be recompiled along with the kernel. As this change breaks the ABI, + bump __FreeBSD_version to 800103. + +20090712: + Padding has been added to struct tcpcb, sackhint and tcpstat in + to facilitate future MFCs and bug fixes whilst + maintainig the ABI. However, this change breaks the ABI, so bump + __FreeBSD_version to 800102. User space tools that rely on the size of + any of these structs (e.g. sockstat) need to be recompiled. + 20090630: The NFS_LEGACYRPC option has been removed along with the old kernel RPC implementation that this option selected. Kernel @@ -1641,4 +1660,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.627 2009/07/01 18:12:50 dfr Exp $ +$FreeBSD: src/UPDATING,v 1.630 2009/07/14 22:48:30 rwatson Exp $ ==== //depot/projects/scottl-camlock/src/contrib/amd/amd/get_args.c#3 (text+ko) ==== @@ -96,8 +96,8 @@ xsnprintf(tmpbuf, sizeof(tmpbuf), "Configured by %s@%s on date %s.\n", USER_NAME, HOST_NAME, CONFIG_DATE); strlcat(vers, tmpbuf, len); - xsnprintf(tmpbuf, sizeof(tmpbuf), "Built by %s@%s on date %s.\n", - BUILD_USER, BUILD_HOST, BUILD_DATE); + xsnprintf(tmpbuf, sizeof(tmpbuf), "Built by %s@%s.\n", + BUILD_USER, BUILD_HOST); strlcat(vers, tmpbuf, len); xsnprintf(tmpbuf, sizeof(tmpbuf), "cpu=%s (%s-endian), arch=%s, karch=%s.\n", cpu, endian, gopt.arch, gopt.karch); ==== //depot/projects/scottl-camlock/src/contrib/gcc/config/freebsd-spec.h#3 (text+ko) ==== @@ -18,7 +18,7 @@ the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* $FreeBSD: src/contrib/gcc/config/freebsd-spec.h,v 1.25 2008/09/01 22:22:44 obrien Exp $ */ +/* $FreeBSD: src/contrib/gcc/config/freebsd-spec.h,v 1.26 2009/07/14 21:19:13 kan Exp $ */ /* Common FreeBSD configuration. All FreeBSD architectures should include this file, which will specify @@ -168,6 +168,7 @@ %{pg: %{pthread:-lpthread_p} -lc_p}} \ %{shared: \ %{pthread:-lpthread} -lc} \ + %{fstack-protector|fstack-protector-all:-lssp_nonshared} \ " #endif #endif ==== //depot/projects/scottl-camlock/src/contrib/netcat/nc.1#5 (text+ko) ==== @@ -25,9 +25,9 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" $FreeBSD: src/contrib/netcat/nc.1,v 1.13 2009/05/29 07:18:31 delphij Exp $ +.\" $FreeBSD: src/contrib/netcat/nc.1,v 1.14 2009/07/11 17:35:55 cperciva Exp $ .\" -.Dd $Mdocdate: May 6 2008 $ +.Dd May 6 2008 .Dt NC 1 .Os .Sh NAME ==== //depot/projects/scottl-camlock/src/contrib/ntp/scripts/mkver.in#3 (text+ko) ==== @@ -17,8 +17,6 @@ *) ConfStr="${ConfStr}-?" ;; esac -ConfStr="$ConfStr `LC_TIME=C TZ= date`" - if [ ! -f .version ]; then echo 0 > .version fi ==== //depot/projects/scottl-camlock/src/contrib/openbsm/NEWS#2 (text) ==== @@ -1,5 +1,14 @@ OpenBSM Version History +OpenBSM 1.1p1 + +- Fixes to AUT_SOCKUNIX token parsing. +- IPv6 support for au_to_me(3). +- Improved robustness in the parsing of audit_control, especially long + flags/naflags strings and whitespace in all fields. +- Add missing conversion of a number of FreeBSD/Mac OS X errnos to/from BSM + error number space. + OpenBSM 1.1 - Change auditon(2) parameters and data structures to be 32/64-bit architecture @@ -449,4 +458,4 @@ to support reloading of kernel event table. - Allow comments in /etc/security configuration files. -$P4: //depot/projects/trustedbsd/openbsm/NEWS#40 $ +$P4: //depot/projects/trustedbsd/openbsm/NEWS#42 $ ==== //depot/projects/scottl-camlock/src/contrib/openbsm/VERSION#3 (text) ==== @@ -1,1 +1,1 @@ -OPENBSM_1_1 +OPENBSM_1_1p1 ==== //depot/projects/scottl-camlock/src/contrib/openbsm/config/config.h#3 (text) ==== @@ -1,15 +1,14 @@ /* config/config.h. Generated from config.h.in by configure. */ /* config/config.h.in. Generated from configure.ac by autoheader. */ -/* $FreeBSD: src/contrib/openbsm/config/config.h,v 1.10 2009/03/03 11:57:29 rwatson Exp $ */ /* Define to 1 if you have the `alarm' function. */ #define HAVE_ALARM 1 /* Define if audit system calls present */ -#define HAVE_AUDIT_SYSCALLS +#define HAVE_AUDIT_SYSCALLS /**/ /* Define if be32enc is present */ -#define HAVE_BE32ENC +#define HAVE_BE32ENC /**/ /* Define to 1 if you have the `bzero' function. */ #define HAVE_BZERO 1 @@ -33,7 +32,7 @@ #define HAVE_FTRUNCATE 1 /* Define if queue.h includes LIST_FIRST */ -#define HAVE_FULL_QUEUE_H +#define HAVE_FULL_QUEUE_H /**/ /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 @@ -153,7 +152,7 @@ /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ -/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 /* Name of package */ #define PACKAGE "OpenBSM" @@ -165,13 +164,13 @@ #define PACKAGE_NAME "OpenBSM" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "OpenBSM 1.1beta1" +#define PACKAGE_STRING "OpenBSM 1.1p1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "openbsm" /* Define to the version of this package. */ -#define PACKAGE_VERSION "1.1beta1" +#define PACKAGE_VERSION "1.1p1" /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void @@ -189,10 +188,13 @@ /* #undef USE_MACH_IPC */ /* Define to use native include files */ -#define USE_NATIVE_INCLUDES +#define USE_NATIVE_INCLUDES /**/ /* Version number of package */ -#define VERSION "1.1beta1" +#define VERSION "1.1p1" + +/* Use extended API on platforms that require it */ +#define _GNU_SOURCE /**/ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ ==== //depot/projects/scottl-camlock/src/contrib/openbsm/configure#3 (text) ==== @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac P4: //depot/projects/trustedbsd/openbsm/configure.ac#51 . +# From configure.ac P4: //depot/projects/trustedbsd/openbsm/configure.ac#52 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.62 for OpenBSM 1.1. +# Generated by GNU Autoconf 2.62 for OpenBSM 1.1p1. # # Report bugs to . # @@ -751,8 +751,8 @@ # Identity of this package. PACKAGE_NAME='OpenBSM' PACKAGE_TARNAME='openbsm' -PACKAGE_VERSION='1.1' -PACKAGE_STRING='OpenBSM 1.1' +PACKAGE_VERSION='1.1p1' +PACKAGE_STRING='OpenBSM 1.1p1' PACKAGE_BUGREPORT='trustedbsd-audit@TrustesdBSD.org' ac_unique_file="bin/auditreduce/auditreduce.c" @@ -1492,7 +1492,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OpenBSM 1.1 to adapt to many kinds of systems. +\`configure' configures OpenBSM 1.1p1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1562,7 +1562,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OpenBSM 1.1:";; + short | recursive ) echo "Configuration of OpenBSM 1.1p1:";; esac cat <<\_ACEOF @@ -1671,7 +1671,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OpenBSM configure 1.1 +OpenBSM configure 1.1p1 generated by GNU Autoconf 2.62 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1685,7 +1685,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OpenBSM $as_me 1.1, which was +It was created by OpenBSM $as_me 1.1p1, which was generated by GNU Autoconf 2.62. Invocation command line was $ $0 $@ @@ -19662,7 +19662,7 @@ # Define the identity of the package. PACKAGE=OpenBSM - VERSION=1.1 + VERSION=1.1p1 cat >>confdefs.h <<_ACEOF @@ -24400,7 +24400,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OpenBSM $as_me 1.1, which was +This file was extended by OpenBSM $as_me 1.1p1, which was generated by GNU Autoconf 2.62. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -24453,7 +24453,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -OpenBSM config.status 1.1 +OpenBSM config.status 1.1p1 configured by $0, generated by GNU Autoconf 2.62, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ==== //depot/projects/scottl-camlock/src/contrib/openbsm/configure.ac#3 (text) ==== @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([OpenBSM], [1.1], [trustedbsd-audit@TrustesdBSD.org],[openbsm]) -AC_REVISION([$P4: //depot/projects/trustedbsd/openbsm/configure.ac#52 $]) +AC_INIT([OpenBSM], [1.1p1], [trustedbsd-audit@TrustesdBSD.org],[openbsm]) +AC_REVISION([$P4: //depot/projects/trustedbsd/openbsm/configure.ac#53 $]) AC_CONFIG_SRCDIR([bin/auditreduce/auditreduce.c]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_HEADER([config/config.h]) ==== //depot/projects/scottl-camlock/src/contrib/openbsm/etc/audit_event#3 (text) ==== @@ -1,6 +1,6 @@ # -# $P4: //depot/projects/trustedbsd/openbsm/etc/audit_event#39 $ -# $FreeBSD: src/contrib/openbsm/etc/audit_event,v 1.13 2009/04/19 16:17:13 rwatson Exp $ +# $P4: //depot/projects/trustedbsd/openbsm/etc/audit_event#40 $ +# $FreeBSD: src/contrib/openbsm/etc/audit_event,v 1.14 2009/07/17 14:02:20 rwatson Exp $ # # The mapping between event identifiers and values is also hard-coded in # audit_kevents.h and audit_uevents.h, so changes must occur in both places, @@ -556,6 +556,7 @@ 43193:AUE_PWRITE:pwrite(2):no 43194:AUE_FSCTL:fsctl():fm 43195:AUE_FFSCTL:ffsctl():fm +43196:AUE_LPATHCONF:lpathconf(2):fa # # Solaris userspace events. # ==== //depot/projects/scottl-camlock/src/contrib/openbsm/libauditd/auditd_lib.c#2 (text) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#10 $ + * $P4: //depot/projects/trustedbsd/openbsm/libauditd/auditd_lib.c#11 $ */ #include @@ -130,7 +130,7 @@ #define MAXERRCODE (sizeof(auditd_errmsg) / sizeof(auditd_errmsg[0])) -#define NA_EVENT_STR_SIZE 25 +#define NA_EVENT_STR_SIZE 128 #define POL_STR_SIZE 128 ==== //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_control.c#3 (text) ==== @@ -27,7 +27,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#33 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_control.c#34 $ */ #include @@ -121,9 +121,13 @@ if (linestr[0] == '#') continue; - /* Remove trailing new line character. */ - if ((nl = strrchr(linestr, '\n')) != NULL) + /* Remove trailing new line character and white space. */ + nl = strchr(linestr, '\0') - 1; + while (nl >= linestr && ('\n' == *nl || ' ' == *nl || + '\t' == *nl)) { *nl = '\0'; + nl--; + } tokptr = linestr; if ((type = strtok_r(tokptr, delim, &last)) != NULL) { ==== //depot/projects/scottl-camlock/src/contrib/openbsm/libbsm/bsm_errno.c#2 (text) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_errno.c#17 $ + * $P4: //depot/projects/trustedbsd/openbsm/libbsm/bsm_errno.c#19 $ */ #include @@ -453,6 +453,104 @@ { BSM_ERRNO_EINPROGRESS, EINPROGRESS, ES("Operation now in progress") }, { BSM_ERRNO_ESTALE, ESTALE, ES("Stale NFS file handle") }, + { BSM_ERRNO_EPROCLIM, +#ifdef EPROCLIM + EPROCLIM, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("Too many processes") }, + { BSM_ERRNO_EBADRPC, +#ifdef EBADRPC + EBADRPC, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("RPC struct is bad") }, + { BSM_ERRNO_ERPCMISMATCH, +#ifdef ERPCMISMATCH + ERPCMISMATCH, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("RPC version wrong") }, + { BSM_ERRNO_EPROGUNAVAIL, +#ifdef EPROGUNAVAIL + EPROGUNAVAIL, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("RPC prog. not avail") }, + { BSM_ERRNO_EPROGMISMATCH, +#ifdef EPROGMISMATCH + EPROGMISMATCH, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("RPC version wrong") }, + { BSM_ERRNO_EPROCUNAVAIL, +#ifdef EPROCUNAVAIL + EPROCUNAVAIL, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("Bad procedure for program") }, + { BSM_ERRNO_EFTYPE, +#ifdef EFTYPE + EFTYPE, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("Inappropriate file type or format") }, + { BSM_ERRNO_EAUTH, +#ifdef EAUTH + EAUTH, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif + ES("Authenticateion error") }, + { BSM_ERRNO_ENEEDAUTH, +#ifdef ENEEDAUTH + ENEEDAUTH, +#else + ERRNO_NO_LOCAL_MAPPING, +#endif >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Jul 19 09:48:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EAC74106567C; Sun, 19 Jul 2009 09:48:11 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB084106567A for ; Sun, 19 Jul 2009 09:48:11 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 994F18FC2A for ; Sun, 19 Jul 2009 09:48:11 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6J9mBFS023663 for ; Sun, 19 Jul 2009 09:48:11 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6J9mBXh023661 for perforce@freebsd.org; Sun, 19 Jul 2009 09:48:11 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 19 Jul 2009 09:48:11 GMT Message-Id: <200907190948.n6J9mBXh023661@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166256 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 09:48:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=166256 Change 166256 by pgj@beehive on 2009/07/19 09:47:47 IFC Affected files ... .. //depot/projects/docproj_hu/www/share/sgml/news.xml#63 integrate Differences ... ==== //depot/projects/docproj_hu/www/share/sgml/news.xml#63 (text+ko) ==== @@ -25,7 +25,7 @@ - $FreeBSD: www/share/sgml/news.xml,v 1.263 2009/07/07 16:45:36 danger Exp $ + $FreeBSD: www/share/sgml/news.xml,v 1.264 2009/07/18 15:53:06 danger Exp $ @@ -36,6 +36,28 @@ 7 + 18 + + + &os; 8.0-BETA2 Available + +

The final stage of the &os;-8.0 Release cycle continues + with the second public beta release. The &os; 8.0-BETA2 + ISO images for Tier-1 architectures are now available for + download on most of the + &os; mirror sites. As with the first beta release, + this is not yet intended for use in a production + environment. However we encourage our users to test this + release and report any bugs and problems you may have + found. For more information about this release and + updating details please see the official + announcement.

+
+
+ + 7 From owner-p4-projects@FreeBSD.ORG Sun Jul 19 10:48:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8AA75106566C; Sun, 19 Jul 2009 10:48:17 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 474411065676 for ; Sun, 19 Jul 2009 10:48:17 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 34FB38FC21 for ; Sun, 19 Jul 2009 10:48:17 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JAmHsk028883 for ; Sun, 19 Jul 2009 10:48:17 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JAmHKG028881 for perforce@freebsd.org; Sun, 19 Jul 2009 10:48:17 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 19 Jul 2009 10:48:17 GMT Message-Id: <200907191048.n6JAmHKG028881@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166259 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 10:48:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=166259 Change 166259 by pgj@beehive on 2009/07/19 10:47:17 MFen (www): 1.263 -> 1.264 hu/share/sgml/news.xml Affected files ... .. //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#40 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#40 (text+ko) ==== @@ -5,7 +5,7 @@ @@ -22,6 +22,36 @@ 7 + 18 + + + Megjelent a &os; 8.0-BETA2! + +

A &os;-8.0 kiadásának végsõ + állomása tovább folytatódik a + második publikus béta változat + megjelenésével. A &os; 8.0-BETA2 ISO + lemezképei az összes Tier 1 + architektúrára a legtöbb &os; + tükrözésrõl + elérhetõek. Az elsõ béta + kiadáshoz hasonlóan ezt a változatot + sem javasoljuk még éles környezetben. + Ennek ellenére szeretnénk mindenkit + bátorítani, hogy lehetõség szerint + minél többen próbálják ki + és jelezzék az esetleges + problémákat. A kiadással kapcsolatban + további általános és + frissítési információkat a + hivatalos bejelentésben + olvashatunk.

+
+
+ + 7 From owner-p4-projects@FreeBSD.ORG Sun Jul 19 10:49:19 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 638A4106567E; Sun, 19 Jul 2009 10:49:19 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1C19E106567B for ; Sun, 19 Jul 2009 10:49:19 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 081408FC17 for ; Sun, 19 Jul 2009 10:49:19 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JAnJ2L028967 for ; Sun, 19 Jul 2009 10:49:19 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JAnIAo028961 for perforce@freebsd.org; Sun, 19 Jul 2009 10:49:18 GMT (envelope-from gabor@freebsd.org) Date: Sun, 19 Jul 2009 10:49:18 GMT Message-Id: <200907191049.n6JAnIAo028961@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 10:49:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=166260 Change 166260 by gabor@gabor_aspire on 2009/07/19 10:48:35 MFHg: - started to write a regression test - fix VISCII - eliminate some module dependencies - eliminate some warnings Affected files ... .. //depot/projects/soc2009/gabor_iconv/extracted/TESTING-HOWTO#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ARMSCII-8.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ARMSCII-8.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ASCII.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ATARIST.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-2003.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-2003.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1046.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1124.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1125.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1129.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1131.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1133.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1161.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1161.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1162.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1163.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1163.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1250.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1251.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1252.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1253.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1254.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1256.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1257.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP437.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP737.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP775.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP850.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP852.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP853.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP855.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP856.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP857.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP858.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP860.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP861.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP862.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP863.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP864.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP865.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP866.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP869.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP874.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP922.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP932.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP932.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP936.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP949.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP950.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP950.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-HANYU.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-HANYU.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-KANJI.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-CN.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JISX0213.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JP.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JP.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-KR.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-TW.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-TW.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/GB18030-BMP.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/GBK.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Georgian-Academy.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Georgian-PS.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HP-ROMAN8.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HZ-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HZ-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-EXT-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-EXT-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-1-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-1-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-2-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-2-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-3-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-3-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-KR-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-KR-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-1.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-10.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-11.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-13.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-14.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-15.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-16.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-2.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-3.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-4.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-5.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-6.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-7.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-8.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-9.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-IR-165.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-IR-165.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO646-CN.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO646-JP.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JIS_X0201.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JIS_X0208.TXT#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JOHAB.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-R.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-RU.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-T.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-U.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacArabic.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCentralEurope.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCroatian.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCyrillic.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacGreek.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacHebrew.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacIceland.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacRoman.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacRomania.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacThai.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacTurkish.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacUkraine.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Makefile#6 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MuleLao-1.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/NEXTSTEP.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/PT154.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Quotes.ASCII#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Quotes.ISO-8859-1#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Quotes.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/RISCOS-LATIN1.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/RK1048.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/SHIFT_JIS.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/SHIFT_JISX0213.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TCVN-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TCVN-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TCVN.IRREVERSIBLE.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TCVN.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TDS565.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TIS-620.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Translit1.ASCII#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Translit1.ISO-8859-1#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/TranslitFail1.ISO-8859-1#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-2BE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-2BE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-2LE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-2LE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-4BE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-4BE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-4LE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UCS-4LE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16BE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16BE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16LE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-16LE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32BE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32BE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32LE-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-32LE-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-7-snippet#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/UTF-7-snippet.UTF-8#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/VISCII.TXT#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-stateful#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-stateful.bat#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-stateless#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-stateless.bat#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-subst#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-translit#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-translit.bat#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/check-translitfailure#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/gengb18030z.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/genutf8.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/table-from.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/table-to.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/test-shiftseq.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/test.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/uniq-u.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/Makefile#6 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/_iconv.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/_strtol.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/_strtoul.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_aliasname_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_bcs.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_bcs.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_bcs_strtol.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_bcs_strtoul.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_csmapper.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_csmapper.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_fallback.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_fallback.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_ctype_template.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db_factory.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db_factory.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db_file.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db_hash.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_db_hash.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_esdb.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_esdb.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_esdb_file.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_fix_grouping.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_hash.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_hash.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_iconv_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_lookup.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_lookup.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_lookup_factory.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_lookup_factory.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_lookup_file.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mapper_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_memstream.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_memstream.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mmap.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_mmap.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_module.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_module.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_namespace.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_none.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_none.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_pivot_factory.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_pivot_factory.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_pivot_file.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_prop.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_prop.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_region.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_stdenc_template.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/citrus_types.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/iconv.3#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/iconv.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv/netbsdism.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/BIG5/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/BIG5/citrus_big5.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/BIG5/citrus_big5.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/DECHanyu/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/DECHanyu/citrus_dechanyu.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/DECHanyu/citrus_dechanyu.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUC/citrus_euc.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUC/citrus_euc.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUCTW/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUCTW/citrus_euctw.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/EUCTW/citrus_euctw.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/GBK2K/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/GBK2K/citrus_gbk2k.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/GBK2K/citrus_gbk2k.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/HZ/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/HZ/citrus_hz.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/HZ/citrus_hz.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ISO2022/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ISO2022/citrus_iso2022.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ISO2022/citrus_iso2022.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/JOHAB/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/JOHAB/citrus_johab.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/JOHAB/citrus_johab.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/MSKanji/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/MSKanji/citrus_mskanji.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/MSKanji/citrus_mskanji.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UES/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UES/citrus_ues.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UES/citrus_ues.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF1632/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF1632/citrus_utf1632.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF1632/citrus_utf1632.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF7/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF7/citrus_utf7.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF7/citrus_utf7.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF8/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF8/citrus_utf8.c#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/UTF8/citrus_utf8.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/VIQR/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/VIQR/citrus_viqr.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/VIQR/citrus_viqr.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ZW/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ZW/citrus_zw.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/ZW/citrus_zw.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_none/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_none/citrus_iconv_none.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_none/citrus_iconv_none.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/citrus_iconv_std.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/citrus_iconv_std.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/iconv_std/citrus_iconv_std_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_646/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_646/citrus_mapper_646.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_646/citrus_mapper_646.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_none/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_none/citrus_mapper_none.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_none/citrus_mapper_none.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_parallel/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_serial/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_serial/citrus_mapper_serial.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_serial/citrus_mapper_serial.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/citrus_mapper_std.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/citrus_mapper_std.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/citrus_mapper_std_file.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_std/citrus_mapper_std_local.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_zone/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_zone/citrus_mapper_zone.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/lib/libiconv_modules/mapper_zone/citrus_mapper_zone.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/APPLE/MAC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/APPLE/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/AST/ARMSCII.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/AST/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/BIG5/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/BIG5/charset.pivot.BIG5.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/BIG5/mapper.dir.BIG5.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CNS/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CNS/charset.pivot.CNS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CNS/mapper.dir.CNS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CP/CP.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CP/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CP/charset.pivot.CP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/CP/mapper.dir.CP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/EBCDIC/EBCDIC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/EBCDIC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/GB/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/GB/charset.pivot.GB.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/GB/mapper.dir.GB.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/GEORGIAN/GEORGIAN.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/GEORGIAN/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/ISO-8859/ISO-8859.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/ISO-8859/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/ISO646/ISO646.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/ISO646/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/JIS/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/JIS/charset.pivot.JIS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/JIS/mapper.dir.JIS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KAZAKH/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KAZAKH/charset.pivot.KAZAKH.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KAZAKH/mapper.dir.KAZAKH.src#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KOI/KOI8.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KOI/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KOI/charset.pivot.KOI.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KOI/mapper.dir.KOI.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KS/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KS/charset.pivot.KS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/KS/mapper.dir.KS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/MISC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/MISC/charset.pivot.MISC.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/MISC/mapper.dir.MISC.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/Makefile#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/Makefile.inc#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/Makefile.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/TCVN/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/TCVN/charset.pivot.TCVN.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/TCVN/mapper.dir.TCVN.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/charset.pivot.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/csmapper/mapper.dir.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/APPLE/MAC.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/APPLE/MAC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/APPLE/MAC.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/APPLE/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/AST/ARMSCII-7.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/AST/ARMSCII.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/AST/ARMSCII.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/AST/ARMSCII.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/AST/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Big5.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Big5.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Big5.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Big5.variable#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/BIG5/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP50220.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP50221.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP50222.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP51932.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP932.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP936.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP942.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP942C.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP943.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP943C.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP949.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/CP950.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/CP/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/DEC/DEC.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/DEC/DEC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/DEC/DEC.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/DEC/DECHanyu.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/DEC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EBCDIC/EBCDIC.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EBCDIC/EBCDIC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EBCDIC/EBCDIC.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EBCDIC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-CN.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-JIS-2004.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-JP-MS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-JP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-KR.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC-TW.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/EUC.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/EUC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GB.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GB.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GB12345.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GB18030.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/GBK.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GB/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GEORGIAN/GEORGIAN.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GEORGIAN/GEORGIAN.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GEORGIAN/GEORGIAN.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/GEORGIAN/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-CN-EXT.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-CN.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-JP-1.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-JP-2.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-JP-2004.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-JP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022-KR.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/ISO-2022.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-2022/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-8859/ISO-8859.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-8859/ISO-8859.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-8859/ISO-8859.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO-8859/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO646/ISO646.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO646/ISO646.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO646/ISO646.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/ISO646/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KAZAKH/KAZAKH.alias#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KAZAKH/KAZAKH.part#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KAZAKH/KZ1048.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KAZAKH/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KAZAKH/PTCP154.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/KOI.alias#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/KOI.part#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/KOI.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/KOI7-switched.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/KOI7.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/KOI/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/ATARIST.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/C99.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/CTEXT.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/HP-ROMAN8.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/HZ.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/HZ8.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/ISO-IR-165.src#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/JAVA.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/JISX0201-KANA.src#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/JOHAB.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/MISC.alias#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/MISC.part#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/MULELAO-1.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/NEXTSTEP.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/RISCOS-LATIN1.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/Shift_JIS-2004.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/Shift_JIS.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/TDS565.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/MISC/ZW.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/Makefile#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/Makefile.inc#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/Makefile.part#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/TCVN.alias#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/TCVN.part#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/TCVN5712-1.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/VIQR.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/TCVN/VISCII.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/UTF/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/UTF/UTF.alias#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/UTF/UTF.part#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/esdb/UTF/UTF.src#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/iconv/Makefile#5 edit .. //depot/projects/soc2009/gabor_iconv/extracted/share/i18n/iconv/iconv.dir#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/tools/tools/iconv/tablegen.sh#2 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/iconv/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/iconv/iconv.1#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/iconv/iconv.c#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkcsmapper/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkcsmapper/ldef.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkcsmapper/lex.l#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkcsmapper/yacc.y#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkesdb/Makefile#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkesdb/ldef.h#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkesdb/lex.l#4 edit .. //depot/projects/soc2009/gabor_iconv/extracted/usr.bin/mkesdb/yacc.y#4 edit Differences ... ==== //depot/projects/soc2009/gabor_iconv/extracted/TESTING-HOWTO#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ARMSCII-8.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ARMSCII-8.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ASCII.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ATARIST.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-2003.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-2003.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-1999.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2001.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5-HKSCS-2004.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/BIG5.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1046.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1124.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1125.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1129.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1131.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1133.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1161.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1161.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1162.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1163.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1163.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1250.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1251.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1252.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1253.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1254.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1255.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1256.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1257.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP1258.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP437.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP737.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP775.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP850.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP852.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP853.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP855.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP856.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP857.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP858.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP860.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP861.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP862.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP863.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP864.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP865.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP866.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP869.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP874.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP922.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP932.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP932.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP936.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP949.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP950.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/CP950.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-HANYU.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-HANYU.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/DEC-KANJI.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-CN.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JISX0213.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JP.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-JP.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-KR.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-TW.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/EUC-TW.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/GB18030-BMP.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/GBK.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Georgian-Academy.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Georgian-PS.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HP-ROMAN8.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HZ-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/HZ-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-EXT-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-EXT-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-CN-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-1-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-1-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-2-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-2-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-3-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-3-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-JP-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-KR-snippet#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-2022-KR-snippet.UTF-8#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-1.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-10.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-11.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-13.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-14.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-15.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-16.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-2.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-3.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-4.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-5.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-6.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-7.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-8.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-8859-9.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-IR-165.IRREVERSIBLE.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO-IR-165.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO646-CN.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/ISO646-JP.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JIS_X0201.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JIS_X0208.TXT#2 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/JOHAB.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-R.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-RU.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-T.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/KOI8-U.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacArabic.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCentralEurope.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCroatian.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacCyrillic.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacGreek.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacHebrew.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacIceland.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacRoman.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacRomania.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacThai.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacTurkish.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/MacUkraine.TXT#4 (text+ko) ==== ==== //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/Makefile#6 (text+ko) ==== @@ -64,20 +64,20 @@ # -$(srcdir)/check-stateless $(srcdir) KOI8-R # -$(srcdir)/check-stateless $(srcdir) KOI8-U # -$(srcdir)/check-stateless $(srcdir) KOI8-RU - -$(srcdir)/check-stateless $(srcdir) CP1250 - -$(srcdir)/check-stateless $(srcdir) CP1251 - -$(srcdir)/check-stateless $(srcdir) CP1252 - -$(srcdir)/check-stateless $(srcdir) CP1253 - -$(srcdir)/check-stateless $(srcdir) CP1254 +# -$(srcdir)/check-stateless $(srcdir) CP1250 +# -$(srcdir)/check-stateless $(srcdir) CP1251 +# -$(srcdir)/check-stateless $(srcdir) CP1252 +# -$(srcdir)/check-stateless $(srcdir) CP1253 +# -$(srcdir)/check-stateless $(srcdir) CP1254 -$(srcdir)/check-stateless $(srcdir) CP1255 -$(srcdir)/check-stateful $(srcdir) CP1255 - -$(srcdir)/check-stateless $(srcdir) CP1256 - -$(srcdir)/check-stateless $(srcdir) CP1257 +# -$(srcdir)/check-stateless $(srcdir) CP1256 +# -$(srcdir)/check-stateless $(srcdir) CP1257 -$(srcdir)/check-stateless $(srcdir) CP1258 -$(srcdir)/check-stateful $(srcdir) CP1258 - -$(srcdir)/check-stateless $(srcdir) CP850 - -$(srcdir)/check-stateless $(srcdir) CP862 - -$(srcdir)/check-stateless $(srcdir) CP866 +# -$(srcdir)/check-stateless $(srcdir) CP850 +# -$(srcdir)/check-stateless $(srcdir) CP862 +# -$(srcdir)/check-stateless $(srcdir) CP866 # -$(srcdir)/check-stateless $(srcdir) CP1131 # -$(srcdir)/check-stateless $(srcdir) MacRoman # -$(srcdir)/check-stateless $(srcdir) MacCentralEurope @@ -89,7 +89,7 @@ # -$(srcdir)/check-stateless $(srcdir) MacGreek # -$(srcdir)/check-stateless $(srcdir) MacTurkish # -$(srcdir)/check-stateless $(srcdir) MacHebrew - -$(srcdir)/check-stateless $(srcdir) MacArabic +# -$(srcdir)/check-stateless $(srcdir) MacArabic # -$(srcdir)/check-stateless $(srcdir) MacThai # -$(srcdir)/check-stateless $(srcdir) HP-ROMAN8 # -$(srcdir)/check-stateless $(srcdir) NEXTSTEP @@ -102,8 +102,8 @@ # -$(srcdir)/check-stateless $(srcdir) MuleLao-1 >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Jul 19 10:55:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 37A431065672; Sun, 19 Jul 2009 10:55:26 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBC80106566B for ; Sun, 19 Jul 2009 10:55:25 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C029D8FC0A for ; Sun, 19 Jul 2009 10:55:25 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JAtPZ1029441 for ; Sun, 19 Jul 2009 10:55:25 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JAtPFh029439 for perforce@freebsd.org; Sun, 19 Jul 2009 10:55:25 GMT (envelope-from gabor@freebsd.org) Date: Sun, 19 Jul 2009 10:55:25 GMT Message-Id: <200907191055.n6JAtPFh029439@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166261 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 10:55:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=166261 Change 166261 by gabor@gabor_aspire on 2009/07/19 10:54:35 - Add files, which were left out in the previous merge Affected files ... .. //depot/projects/soc2009/gabor_iconv/extracted/gnu/share/iconv/regression-test/cmp.sh#1 add .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/Makefile#1 add .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gentable.c#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Sun Jul 19 12:05:47 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 65E3A10656C9; Sun, 19 Jul 2009 12:05:43 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF38010656C5 for ; Sun, 19 Jul 2009 12:05:42 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CA1298FC0C for ; Sun, 19 Jul 2009 12:05:42 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JC5gEH036709 for ; Sun, 19 Jul 2009 12:05:42 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JC5gkG036707 for perforce@freebsd.org; Sun, 19 Jul 2009 12:05:42 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 12:05:42 GMT Message-Id: <200907191205.n6JC5gkG036707@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166265 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 12:05:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=166265 Change 166265 by andre@andre_flirtbox on 2009/07/19 12:05:31 Compile. Affected files ... .. //depot/projects/tcp_new/netinet/tcp_input.c#15 edit .. //depot/projects/tcp_new/netinet/tcp_output.c#15 edit .. //depot/projects/tcp_new/netinet/tcp_sack.c#11 edit .. //depot/projects/tcp_new/netinet/tcp_var.h#15 edit Differences ... ==== //depot/projects/tcp_new/netinet/tcp_input.c#15 (text+ko) ==== @@ -1766,8 +1766,9 @@ * Update congestion control information. * NB: The algorithm must not increase cwnd when acked is zero. */ - if (tp->t_phase < TP_LOSSRECOV) - tcp_cc_ack(tp, th, tiwin, acked, tlen, sacked); + if (tp->t_phase < TP_LOSSRECOV) { + //tcp_cc_ack(tp, th, tiwin, acked, tlen, sacked); + } KASSERT(tp->snd_cwnd > tp->snd_mss, ("%s: cwnd < 1*mss after congestion control function", __func__)); @@ -2967,12 +2968,12 @@ if (SEQ_GEQ(tp->snd_una, tp->snd_recover)) { tp->snd_pipe = 0; tp->t_phase = TP_SENDING; - tcp_cc_post_fr(tp); + //tcp_cc_post_fr(tp); } /* Enter loss recovery phase. */ if (tp->snd_dupack == 3 && tp->t_phase < TP_LOSSRECOV) { - tcp_cc_pre_fr(tp); /* updates ssthresh */ + //tcp_cc_pre_fr(tp); /* updates ssthresh */ tp->t_phase = TP_LOSSRECOV; tp->snd_recover = tp->snd_nxt; tp->snd_rxmit = tp->snd_una; ==== //depot/projects/tcp_new/netinet/tcp_output.c#15 (text+ko) ==== @@ -810,17 +810,17 @@ * (C.1) modulo (C.3) */ if (tp->snd_rxmit == tp->snd_una) - rlen = tcp_sack_firsthole(tp, &rexmit); + rlen = tcp_sack_firsthole(tp, &rxmit); else - rlen = tcp_sack_nextseg(tp, &tp->snd_rexmit, slen); + rlen = tcp_sack_nextseg(tp, &tp->snd_rxmit, slen); /* * If we have nothing to retransmit, see if we can * send some new data. * (C.3) */ - if (rlen == 0) + if (rlen == 0) { if (slen > 0 && (rxmit >= tp->snd_mss || - (rxmit >= slen && dlen == slen)) + (rxmit >= slen && dlen == slen))) *len = min(slen, rxmit); else *len = 0; @@ -831,10 +831,10 @@ * (C.1) */ if (rxmit >= rlen || (rlen > rxmit && rxmit > tp->snd_mss)) - rlen = min(rlen, pipe); + rlen = min(rlen, tp->snd_pipe); else break; - } else if (tp->snd_rexmit == tp->snd_una) + } else if (tp->snd_rxmit == tp->snd_una) rlen = min(tp->snd_mss, SEQ_DELTA(tp->snd_una, tp->snd_nxt)); else break; ==== //depot/projects/tcp_new/netinet/tcp_sack.c#11 (text+ko) ==== @@ -89,10 +89,10 @@ static int tcp_sack_maxblocks = 32; SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, maxblocks, CTLFLAG_RW, - &tcp_sack_maxholes, 0, + &tcp_sack_maxblocks, 0, "Per connection limit on the number of SACK blocks"); -static int tcp_sack_globalmaxholes = 65536; +static int tcp_sack_globalmaxblocks = 65536; SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO, globalmaxblocks, CTLFLAG_RW, &tcp_sack_globalmaxblocks, 0, "Global total limit on the number of SACK blocks"); @@ -105,7 +105,7 @@ tcp_sackblock_zone = uma_zcreate("tcpsackblk", sizeof(struct tcp_sack_block), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); /* XXXAO: limit is not adjusted when changed at runtime. */ - uma_zone_set_max(tcp_sackblock_zone, tcp_sack_globalmaxholes); + uma_zone_set_max(tcp_sackblock_zone, tcp_sack_globalmaxblocks); } /* @@ -223,9 +223,9 @@ * We try our best here to avoid false positives. * RFC2018: section 8 */ - if (to->to_nsacks == 1 && !RB_EMPTY(tp->snd_sackblocks) && + if (to->to_nsacks == 1 && !RB_EMPTY(&tp->snd_sackblocks) && to->to_len <= TCP_MAXOLEN - TCPOLEN_SACK && - SEQ_DELTA(sack.tsb_blk.start, sack.tsb_blk.end) <= tp->snd_mss) + SEQ_DELTA(sack.tsb_blk.start, sack.tsb_blk.end) <= tp->snd_mss) { tcp_sack_flush(tp); } @@ -323,8 +323,8 @@ struct tcp_sack_block *tsb, *tsbp; struct tcp_sack_block sack; - sack.tsb_blk.start = rexmit; - sack.tsb_blk.end = rexmit; + sack.tsb_blk.start = *rexmit; + sack.tsb_blk.end = *rexmit; /* * Find the sackblock that covers rexmit, or the first one above it. ==== //depot/projects/tcp_new/netinet/tcp_var.h#15 (text+ko) ==== @@ -313,6 +313,7 @@ #define TOF_SIGNATURE 0x0040 /* TCP-MD5 signature option (RFC2385) */ #define TOF_SACK 0x0080 /* Peer sent SACK option */ #define TOF_MAXOPT 0x0100 /* highest option shift one */ + u_int to_len; /* total length of all options */ tcp_ts to_tsval; /* new timestamp */ tcp_ts to_tsecr; /* reflected timestamp */ u_int16_t to_mss; /* maximum segment size */ @@ -646,7 +647,8 @@ int tcp_sack_doack(struct tcpcb *, struct tcpopt *, tcp_seq); void tcp_sack_flush(struct tcpcb *); void tcp_sack_init(void); -int tcp_sack_nextseg(struct tcpcb *, tcp_seq *); +int tcp_sack_firsthole(struct tcpcb *, tcp_seq *); +int tcp_sack_nextseg(struct tcpcb *, tcp_seq *, int); int tcp_sack_pipe(struct tcpcb *tp); int tcp_newreno(struct tcpcb *, struct tcphdr *); From owner-p4-projects@FreeBSD.ORG Sun Jul 19 12:16:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 817611065675; Sun, 19 Jul 2009 12:16:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 240B0106566C for ; Sun, 19 Jul 2009 12:16:55 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 11A3E8FC24 for ; Sun, 19 Jul 2009 12:16:55 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JCGt0w037536 for ; Sun, 19 Jul 2009 12:16:55 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JCGsRg037534 for perforce@freebsd.org; Sun, 19 Jul 2009 12:16:54 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 12:16:54 GMT Message-Id: <200907191216.n6JCGsRg037534@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166266 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 12:16:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=166266 Change 166266 by andre@andre_flirtbox on 2009/07/19 12:15:56 IFC. Affected files ... .. //depot/projects/tcp_reass/amd64/amd64/pmap.c#9 integrate .. //depot/projects/tcp_reass/arm/conf/AVILA#7 integrate .. //depot/projects/tcp_reass/arm/conf/CAMBRIA#3 integrate .. //depot/projects/tcp_reass/cam/ata/ata_da.c#2 integrate .. //depot/projects/tcp_reass/geom/vinum/geom_vinum.c#4 integrate .. //depot/projects/tcp_reass/i386/i386/pmap.c#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_freebsd.c#6 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_input.c#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_input.h#4 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_ioctl.h#7 integrate .. //depot/projects/tcp_reass/netinet6/in6_mcast.c#5 integrate .. //depot/projects/tcp_reass/nfsclient/nfs_vnops.c#10 integrate .. //depot/projects/tcp_reass/vm/vm_page.c#9 integrate Differences ... ==== //depot/projects/tcp_reass/amd64/amd64/pmap.c#9 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.663 2009/07/12 23:31:20 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.664 2009/07/18 01:50:05 alc Exp $"); /* * Manages physical address maps. @@ -752,21 +752,6 @@ /* The PAT bit is different for PTE's and PDE's. */ pat_flag = is_pde ? PG_PDE_PAT : PG_PTE_PAT; - /* If we don't support PAT, map extended modes to older ones. */ - if (!(cpu_feature & CPUID_PAT)) { - switch (mode) { - case PAT_UNCACHEABLE: - case PAT_WRITE_THROUGH: - case PAT_WRITE_BACK: - break; - case PAT_UNCACHED: - case PAT_WRITE_COMBINING: - case PAT_WRITE_PROTECTED: - mode = PAT_UNCACHEABLE; - break; - } - } - /* Map the caching mode to a PAT index. */ switch (mode) { case PAT_UNCACHEABLE: @@ -4295,7 +4280,9 @@ pa += PAGE_SIZE; } pmap_invalidate_range(kernel_pmap, va, tmpva); - pmap_invalidate_cache(); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); return ((void *)(va + offset)); } @@ -4634,7 +4621,9 @@ */ if (changed) { pmap_invalidate_range(kernel_pmap, base, tmpva); - pmap_invalidate_cache(); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); } return (error); } ==== //depot/projects/tcp_reass/arm/conf/AVILA#7 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/AVILA,v 1.32 2009/05/27 16:16:56 thompsa Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA,v 1.33 2009/07/17 18:35:45 rpaulo Exp $ ident AVILA @@ -105,6 +105,7 @@ device wlan # 802.11 support options IEEE80211_DEBUG options IEEE80211_SUPPORT_TDMA +options IEEE80211_SUPPORT_MESH device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support ==== //depot/projects/tcp_reass/arm/conf/CAMBRIA#3 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.11 2009/05/10 00:00:25 kuriyama Exp $ +# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.12 2009/07/17 18:35:45 rpaulo Exp $ ident CAMBRIA @@ -108,6 +108,7 @@ device wlan # 802.11 support options IEEE80211_DEBUG options IEEE80211_SUPPORT_TDMA +options IEEE80211_SUPPORT_MESH device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support ==== //depot/projects/tcp_reass/cam/ata/ata_da.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.1 2009/07/10 08:18:08 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.2 2009/07/17 21:48:08 mav Exp $"); #include @@ -275,7 +275,6 @@ if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) { ccb = cam_periph_getccb(periph, /*priority*/1); - ccb->ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ccb->ataio, 1, adadone, @@ -289,7 +288,9 @@ ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE48, 0, 0, 0); else ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0); - xpt_polled_action(ccb); + cam_periph_runccb(ccb, /*error_routine*/NULL, /*cam_flags*/0, + /*sense_flags*/SF_RETRY_UA, + softc->disk->d_devstat); if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) xpt_print(periph->path, "Synchronize cache failed\n"); ==== //depot/projects/tcp_reass/geom/vinum/geom_vinum.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum.c,v 1.28 2009/05/06 19:34:32 lulf Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/vinum/geom_vinum.c,v 1.29 2009/07/18 11:12:48 lulf Exp $"); #include #include @@ -133,10 +133,12 @@ error = ENXIO; gp = pp->geom; sc = gp->softc; - if (dw > 0 && dr == 0) - dr = 1; - else if (dw < 0 && dr == 0) - dr = -1; + /* + * We want to modify the read count with the write count in case we have + * plexes in a RAID-5 organization. + */ + dr += dw; + LIST_FOREACH(d, &sc->drives, drive) { if (d->consumer == NULL) continue; ==== //depot/projects/tcp_reass/i386/i386/pmap.c#8 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.640 2009/07/12 23:31:20 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.641 2009/07/18 01:50:05 alc Exp $"); /* * Manages physical address maps. @@ -4420,7 +4420,9 @@ pa += PAGE_SIZE; } pmap_invalidate_range(kernel_pmap, va, tmpva); - pmap_invalidate_cache(); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); return ((void *)(va + offset)); } @@ -4467,7 +4469,9 @@ * Flush CPU caches to make sure any data isn't cached that shouldn't * be, etc. */ - pmap_invalidate_cache(); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); } int @@ -4526,7 +4530,9 @@ * be, etc. */ pmap_invalidate_range(kernel_pmap, base, tmpva); - pmap_invalidate_cache(); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); return (0); } ==== //depot/projects/tcp_reass/net80211/ieee80211_freebsd.c#6 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_freebsd.c,v 1.36 2009/06/05 23:10:30 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_freebsd.c,v 1.37 2009/07/18 20:19:53 sam Exp $"); /* * IEEE 802.11 support (FreeBSD-specific code) @@ -53,6 +53,7 @@ #include #include +#include SYSCTL_NODE(_net, OID_AUTO, wlan, CTLFLAG_RD, 0, "IEEE 80211 parameters"); @@ -408,6 +409,43 @@ return m; } +/* + * Re-align the payload in the mbuf. This is mainly used (right now) + * to handle IP header alignment requirements on certain architectures. + */ +struct mbuf * +ieee80211_realign(struct ieee80211vap *vap, struct mbuf *m, size_t align) +{ + int pktlen, space; + struct mbuf *n; + + pktlen = m->m_pkthdr.len; + space = pktlen + align; + if (space < MINCLSIZE) + n = m_gethdr(M_DONTWAIT, MT_DATA); + else { + n = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, + space <= MCLBYTES ? MCLBYTES : +#if MJUMPAGESIZE != MCLBYTES + space <= MJUMPAGESIZE ? MJUMPAGESIZE : +#endif + space <= MJUM9BYTES ? MJUM9BYTES : MJUM16BYTES); + } + if (__predict_true(n != NULL)) { + m_move_pkthdr(n, m); + n->m_data = (caddr_t)(ALIGN(n->m_data + align) - align); + m_copydata(m, 0, pktlen, mtod(n, caddr_t)); + n->m_len = pktlen; + } else { + IEEE80211_DISCARD(vap, IEEE80211_MSG_ANY, + mtod(m, const struct ieee80211_frame *), NULL, + "%s", "no mbuf to realign"); + vap->iv_stats.is_rx_badalign++; + } + m_freem(m); + return n; +} + int ieee80211_add_callback(struct mbuf *m, void (*func)(struct ieee80211_node *, void *, int), void *arg) ==== //depot/projects/tcp_reass/net80211/ieee80211_input.c#8 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_input.c,v 1.131 2009/07/11 15:02:45 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/net80211/ieee80211_input.c,v 1.132 2009/07/18 20:19:53 sam Exp $"); #include "opt_wlan.h" @@ -285,53 +285,9 @@ } #ifdef ALIGNED_POINTER if (!ALIGNED_POINTER(mtod(m, caddr_t) + sizeof(*eh), uint32_t)) { - struct mbuf *n, *n0, **np; - caddr_t newdata; - int off, pktlen; - - n0 = NULL; - np = &n0; - off = 0; - pktlen = m->m_pkthdr.len; - while (pktlen > off) { - if (n0 == NULL) { - MGETHDR(n, M_DONTWAIT, MT_DATA); - if (n == NULL) { - m_freem(m); - return NULL; - } - M_MOVE_PKTHDR(n, m); - n->m_len = MHLEN; - } else { - MGET(n, M_DONTWAIT, MT_DATA); - if (n == NULL) { - m_freem(m); - m_freem(n0); - return NULL; - } - n->m_len = MLEN; - } - if (pktlen - off >= MINCLSIZE) { - MCLGET(n, M_DONTWAIT); - if (n->m_flags & M_EXT) - n->m_len = n->m_ext.ext_size; - } - if (n0 == NULL) { - newdata = - (caddr_t)ALIGN(n->m_data + sizeof(*eh)) - - sizeof(*eh); - n->m_len -= newdata - n->m_data; - n->m_data = newdata; - } - if (n->m_len > pktlen - off) - n->m_len = pktlen - off; - m_copydata(m, off, n->m_len, mtod(n, caddr_t)); - off += n->m_len; - *np = n; - np = &n->m_next; - } - m_freem(m); - m = n0; + m = ieee80211_realign(vap, m, sizeof(*eh)); + if (m == NULL) + return NULL; } #endif /* ALIGNED_POINTER */ if (llc != NULL) { ==== //depot/projects/tcp_reass/net80211/ieee80211_input.h#4 (text+ko) ==== @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/net80211/ieee80211_input.h,v 1.3 2009/03/24 20:39:08 sam Exp $ + * $FreeBSD: src/sys/net80211/ieee80211_input.h,v 1.4 2009/07/18 20:19:53 sam Exp $ */ #ifndef _NET80211_IEEE80211_INPUT_H_ #define _NET80211_IEEE80211_INPUT_H_ @@ -146,6 +146,7 @@ struct ieee80211_node *, struct mbuf *); struct mbuf *ieee80211_defrag(struct ieee80211_node *, struct mbuf *, int); +struct mbuf *ieee80211_realign(struct ieee80211vap *, struct mbuf *, size_t); struct mbuf *ieee80211_decap(struct ieee80211vap *, struct mbuf *, int); struct mbuf *ieee80211_decap1(struct mbuf *, int *); int ieee80211_setup_rates(struct ieee80211_node *ni, ==== //depot/projects/tcp_reass/net80211/ieee80211_ioctl.h#7 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/net80211/ieee80211_ioctl.h,v 1.38 2009/07/11 15:02:45 rpaulo Exp $ + * $FreeBSD: src/sys/net80211/ieee80211_ioctl.h,v 1.39 2009/07/18 20:19:53 sam Exp $ */ #ifndef _NET80211_IEEE80211_IOCTL_H_ #define _NET80211_IEEE80211_IOCTL_H_ @@ -235,8 +235,9 @@ uint32_t is_hwmp_wrongseq; /* wrong hwmp seq no. */ uint32_t is_hwmp_rootreqs; /* root PREQs sent */ uint32_t is_hwmp_rootrann; /* root RANNs sent */ + uint32_t is_rx_badalign; /* dropped 'cuz misaligned */ - uint32_t is_spare[16]; + uint32_t is_spare[15]; }; /* ==== //depot/projects/tcp_reass/netinet6/in6_mcast.c#5 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/in6_mcast.c,v 1.7 2009/07/14 22:48:30 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/in6_mcast.c,v 1.8 2009/07/18 17:38:18 bms Exp $"); #include "opt_inet6.h" @@ -2160,14 +2160,24 @@ if (error) return (EADDRNOTAVAIL); /* + * Some badly behaved applications don't pass an ifindex + * or a scope ID, which is an API violation. In this case, + * perform a lookup as per a v6 join. + * * XXX For now, stomp on zone ID for the corner case. * This is not the 'KAME way', but we need to see the ifp * directly until such time as this implementation is * refactored, assuming the scope IDs are the way to go. */ ifindex = ntohs(gsa->sin6.sin6_addr.s6_addr16[1]); - KASSERT(ifindex != 0, ("%s: bad zone ID", __func__)); - ifp = ifnet_byindex(ifindex); + if (ifindex == 0) { + CTR2(KTR_MLD, "%s: warning: no ifindex, looking up " + "ifp for group %s.", __func__, + ip6_sprintf(ip6tbuf, &gsa->sin6.sin6_addr)); + ifp = in6p_lookup_mcast_ifp(inp, &gsa->sin6); + } else { + ifp = ifnet_byindex(ifindex); + } if (ifp == NULL) return (EADDRNOTAVAIL); } ==== //depot/projects/tcp_reass/nfsclient/nfs_vnops.c#10 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.316 2009/07/14 22:54:29 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_vnops.c,v 1.317 2009/07/17 19:38:07 rmacklem Exp $"); /* * vnode op calls for Sun NFS version 2 and 3 @@ -1061,7 +1061,8 @@ if (error == 0) newvp = NFSTOV(np); vfs_unbusy(mp); - vn_lock(dvp, ltype | LK_RETRY); + if (newvp != dvp) + vn_lock(dvp, ltype | LK_RETRY); if (dvp->v_iflag & VI_DOOMED) { if (error == 0) { if (newvp == dvp) ==== //depot/projects/tcp_reass/vm/vm_page.c#9 (text+ko) ==== @@ -98,7 +98,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.379 2009/07/12 23:31:20 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.380 2009/07/18 01:50:05 alc Exp $"); #include "opt_vm.h" @@ -1161,7 +1161,9 @@ mtx_unlock(&vm_page_queue_free_mtx); if (object != NULL) { - if (object->memattr != VM_MEMATTR_DEFAULT) + /* Ignore device objects; the pager sets "memattr" for them. */ + if (object->memattr != VM_MEMATTR_DEFAULT && + object->type != OBJT_DEVICE) pmap_page_set_memattr(m, object->memattr); vm_page_insert(m, object, pindex); } else From owner-p4-projects@FreeBSD.ORG Sun Jul 19 15:44:43 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7FFFF1065676; Sun, 19 Jul 2009 15:44:42 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E728F1065686 for ; Sun, 19 Jul 2009 15:44:41 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CF3008FC39 for ; Sun, 19 Jul 2009 15:44:41 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JFifK4065385 for ; Sun, 19 Jul 2009 15:44:41 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JFifiw065383 for perforce@freebsd.org; Sun, 19 Jul 2009 15:44:41 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 15:44:41 GMT Message-Id: <200907191544.n6JFifiw065383@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166270 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 15:44:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=166270 Change 166270 by andre@andre_t61 on 2009/07/19 15:44:00 Experiment with a rewritten TCP reassembly queue that uses a ranged red-black tree to store the received data blocks. Advantages are a simpler structure and O(log n) insertion/removal in all complexity cases compared to a tail queue. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#34 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#18 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#34 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2007 + * Copyright (c) 2007-2009 * Andre Oppermann, Internet Business Solutions AG. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -50,26 +50,11 @@ * queue. * * Instead of storing all segments on their own we build blocks of consequtive - * segments chained together. We use a tailq because a new segments has the - * highest probability to fit the tail of the chain. If not, the second - * highest probability is the beginning of the chain for being the missing - * segment. Otherwise we cycle through each consequtive block until a match - * is found. If a segment matches the end of one block and the start of the + * segments chained together. We use a red-black tree to cope with arbitrary + * complexity. If a segment matches the end of one block and the start of the * next block the two blocks are joined together. If no match is found a * new block is created. * - * This system is very efficient and can deal efficiently with long chains - * and many holes. - * - * trq_tail ----------------------------------------------\ - * trq_head --> [block] ------> [block] ------> [block] <-/ - * m_next m_next m_next - * | | | - * m_next m_next m_next - * | | | - * m_next m_next m_next - * - * * The reassembly queues block structure is also used to track SACK * information as a data receiver. A double-linked list is added * that links the blocks the reverse order of their arrival or updating. @@ -127,16 +112,11 @@ &tcp_reass_enabled, 0, "Enable/disable use of TCP Reassembly Queue"); -static int tcp_reass_maxblocks = 0; +static int tcp_reass_maxblocks = 65535; SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RDTUN, &tcp_reass_maxblocks, 0, "Global maximum number of TCP Segment Blocks in Reassembly Queue"); -int tcp_reass_qsize = 0; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, curblocks, CTLFLAG_RD, - &tcp_reass_qsize, 0, - "Global number of TCP Segment Blocks currently in Reassembly Queue"); - static int tcp_reass_qtimo = 0; SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, queue_timeout, CTLFLAG_RW, &tcp_reass_qtimo, 0, @@ -147,17 +127,8 @@ &tcp_reass_spacetime, 0, "Reassembly Queue strategy of space vs. time efficiency"); -static void tcp_reass_merge(struct tcpcb *, struct trq *, struct trq *); - -static __inline void -sack_track(struct tcpcb *tp, struct trq *tqe) -{ - - if (LIST_FIRST(&tp->t_trq_sack) != (tqe)) { - LIST_REMOVE((tqe), trq_s); - LIST_INSERT_HEAD(&tp->t_trq_sack, (tqe), trq_s); - } -} +static struct tcp_reass_block + tcp_reass_merge(struct tcpcb *, struct tcp_reass_block *, struct tcp_reass_block *); /* Trim empty mbufs from head of chain. */ static struct mbuf * @@ -195,46 +166,116 @@ uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); } +/* + * Initialize TCP reassembly zone on startup. + */ +void +tcp_reass_init(void) +{ + + TUNABLE_INT_FETCH("net.inet.tcp.reass.maxblocks", + &tcp_reass_maxblocks); + tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct trb), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); + EVENTHANDLER_REGISTER(nmbclusters_change, + tcp_reass_zone_change, NULL, EVENTHANDLER_PRI_ANY); +} + +/* + * Compare function implementing the ranged lookup on the RB tree. + * NB: The tree must never have any overlapping elements. + */ +static __inline int +tcp_reass_cmp(struct tcp_reass_block *a, struct tcp_reass_block *b) +{ + if (SEQ_LT(a->trb_seqe, b->trb_seqs)) + return (-1); + else if (SEQ_GT(a->trb_seqs, b->trb_seqe)) + return (1); + else + return (0); +} + +RB_PROTOTYPE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); +RB_GENERATE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); + #ifdef INVARIANTS static int tcp_reass_verify(struct tcpcb *tp) { - struct trq *tqe, *tqen; - int i = 0; + int i = 0, size = 0, total = 0; + struct mbuf *m; + struct tcp_reass_block *trb, *trbn; - TAILQ_FOREACH_SAFE(tqe, &tp->t_trq, trq_q, tqen) { - KASSERT(SEQ_GEQ(tqe->trq_seq, tp->rcv_nxt), - ("%s: trq_seq < rcv_nxt", __func__)); - KASSERT(tqen == NULL || - SEQ_LT(tqe->trq_seq + tqe->trq_len, tqen->trq_seq), - ("%s: overlapping blocks", __func__)); + RB_FOREACH_SAFE(trb, tcp_rb, &tp->rcv_reass, trbn) { + KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), + ("%s: trb_seqs >= trb_seqe", __func__)); + KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt), + ("%s: rcv_nxt >= trb_seqs", __func__)); + KASSERT(trb->trb_m != NULL, + ("%s: trb_m == NULL", __func__)); + KASSERT(trb->trb_mt != NULL, + ("%s: trb_mt == NULL", __func__)); + size = SEQ_DELTA(trb->trb_seqs, tsb->trb_seqe); + KASSERT(size == m_length(trb->trb_m, &m), + ("%s: seq# size != actual mbuf size", __func__)); + KASSERT(trb->trb_mt == m, + ("%s: trb_mt is not last mbuf", __func__)); + KASSERT(tsbn == NULL || SEQ_LT(tsb->trb_seqe, tsbn->trb_seqs), + ("%s: overlaps into next block", __func__)); + total += size; i++; } - LIST_FOREACH(tqe, &tp->t_trq_sack, trq_s) { + KASSERT(tp->rcv_reass_size == total, + ("%s: total not correct", __func__)); + + LIST_FOREACH(tcp_reass_block, &tp->rcv_reass_sack, trb_sack) { i--; } - KASSERT(i == 0, ("%s: SEQ# ordered tailq and arrival ordered " - "SACK list are not equally long", __func__)); + KASSERT(i == 0, + ("%s: sack list incorrect", __func__)); + return (0); } #endif -/* - * Initialize TCP reassembly zone on startup. - */ +static void +tcp_reass_free(struct tcpcb *tp, struct tcp_reass_block *trb) +{ + + trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); + KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); + LIST_REMOVE(trb, trb_sack); + if (trb->trb_m != NULL) + m_freem(trb->trb_m); + tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + uma_zfree(tcp_reass_zone, trb); +} + void -tcp_reass_init(void) +tcp_reass_flush(struct tcpcb *tp) +{ + struct tcp_reass_block *trb, *trbn; + + INP_WLOCK_ASSERT(tp->t_inpcb); + KASSERT(tcp_reass_verify(tp), + ("%s: reassembly queue inconsistent", __func__)); + + RB_FOREACH_SAFE(trb, tcp_rb, &tp->rcv_reass, trbn) { + tcp_reass_free(tp, trb); + } + KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); +} + +static __inline void +tcp_reass_sacktrack(struct tcpcb *tp, struct tcp_reass_block *trb) { - /* XXX: nmbclusters may be zero. */ - tcp_reass_maxblocks = nmbclusters / 16; - TUNABLE_INT_FETCH("net.inet.tcp.reass.maxblocks", - &tcp_reass_maxblocks); - tcp_reass_zone = uma_zcreate("tcpreass", sizeof (struct trq), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); - uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); - EVENTHANDLER_REGISTER(nmbclusters_change, - tcp_reass_zone_change, NULL, EVENTHANDLER_PRI_ANY); + if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { + LIST_REMOVE(trb, trb_sack); + LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); + } } /* @@ -246,12 +287,11 @@ int tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) { - struct trq *tqe, *tqen; + int i, thflags = 0; + tcp_seq th_seq; struct socket *so = tp->t_inpcb->inp_socket; - struct mbuf *n; - int i, thflags = 0, mcnt; - tcp_seq th_seq; - struct trq tqes; + struct tcp_reass_block *trb, *trbn; + struct tcp_reass_block trbs; INP_WLOCK_ASSERT(tp->t_inpcb); @@ -262,13 +302,19 @@ */ if (th == NULL) { if (!TCPS_HAVEESTABLISHED(tp->t_state) || - TAILQ_EMPTY(&tp->t_trq) || - ((tqe = TAILQ_FIRST(&tp->t_trq)) && - tqe->trq_seq != tp->rcv_nxt)) + RB_EMPTY(&tp->t_trq) || + ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && + trb->trb_seqs != tp->rcv_nxt)) return (0); goto present; } + KASSERT(th != NULL, ("%s: th is NULL", __func__)); + KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); + KASSERT(m != NULL, ("%s: m is NULL", __func__)); + KASSERT(*tlenp == m_length(m, NULL), + ("%s: tlen != mbuf length", __func__)); + /* * Store TCP header information in local variables as * we may lose access to it after mbuf compacting. @@ -278,15 +324,15 @@ th = NULL; /* Prevent further use. */ /* Check if it is really neccessary to do all the work. */ - if (!tcp_reass_enabled && TAILQ_EMPTY(&tp->t_trq)) { + if (!tcp_reass_enabled && RB_EMPTY(&tp->rcv_reass)) { *tlenp = 0; m_freem(m); return (0); } - KASSERT(SEQ_LEQ(tp->rcv_nxt, th_seq), + KASSERT(SEQ_LT(tp->rcv_nxt, th_seq), ("%s: sequence number below rcv_nxt", __func__)); - KASSERT(!(tp->rcv_nxt == th_seq) || !(TAILQ_EMPTY(&tp->t_trq)), + KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), ("%s: got missing segment but queue is empty", __func__)); KASSERT(tcp_reass_verify(tp), ("%s: reassembly queue inconsistent", __func__)); @@ -311,6 +357,7 @@ * buffer vs. actual real data with 2k clusters and 1500 byte * packets by introducing a correction factor of 11/8th. */ + /* if (th_seq != tp->rcv_nxt && tp->t_trqmcnt > (sbspace(&so->so_rcv) / 8 * 11)) { TCPSTAT_INC(tcps_reass_overflow); @@ -319,15 +366,7 @@ *tlenp = 0; return (0); } - - /* Get rid of packet header and mtags. */ - m_demote(m, 1); - - /* Trim empty mbufs from head of chain. */ - m = m_trimhead(m); - - /* NB: m_adj(m, -i) may free mbufs at the tail of a chain. */ - mcnt = m_storagesize(m); + */ /* * FIN handling is a bit tricky. @@ -344,269 +383,119 @@ * This approach is based on a discussion on TCPM mailing list. */ if ((thflags & TH_FIN) && tp->rcv_nxt == th_seq) { - tcp_reass_qfree(tp); - tqe = NULL; + tcp_reass_flush(tp); if (m->m_len == 0) { tcp_timer_activate(tp, TT_REASS, 0); return (thflags); } - goto insert; - } else + } else if (*tlenp = 0) { + m_freem(m); + return (0); + else thflags &= ~TH_FIN; - /* Check if this is the first segment. */ - if (TAILQ_EMPTY(&tp->t_trq)) - goto insert; + /* Get rid of packet header and mtags. */ + m_demote(m, 1); + /* Trim empty mbufs from head of chain. */ + m = m_trimhead(m); + /* Compact mbuf chain. */ + m = m_collapse(m, M_DONTWAIT, 1024); - /* Starting point for the following tests. */ - tqe = TAILQ_LAST(&tp->t_trq, trq_head); + KASSERT(m != NULL, ("%s: m is NULL after collapse", __func__)); - /* Check if this segment directly attaches to the end. */ - if (tqe->trq_seq + tqe->trq_len == th_seq) { - tqe->trq_len += *tlenp; - tqe->trq_mcnt += mcnt; - tp->t_trqmcnt += mcnt; - tqe->trq_ml->m_next = m; - tqe->trq_ml = m_last(m); - if (tcp_reass_spacetime) { - tqe->trq_m = m_collapse(tqe->trq_m, M_DONTWAIT, 1024); - tp->t_trqmcnt -= tqe->trq_mcnt; - tqe->trq_mcnt = m_storagesize(tqe->trq_m); - tqe->trq_mcnt += tp->t_trqmcnt; - } - sack_track(tp, tqe); - /* TCP statistics. */ - TCPSTAT_INC(tcps_rcvoopack); - TCPSTAT_ADD(tcps_rcvoobyte, *tlenp); - TCPSTAT_INC(tcps_reass_tail); - return (0); - } + /* Set up search structure. */ + trbs.trb_seqs = th_seq; + trbs.trb_seqe = th_seq + *tlenp; + trbs.trb_m = m; + trbs.trb_mt = m_last(m); - /* Check if beyond last block. */ - if (SEQ_LT(tqe->trq_seq + tqe->trq_len, th_seq)) - goto insert; - - /* Check if this is the missing segment. */ - if (tp->rcv_nxt == th_seq) { - tqe = TAILQ_FIRST(&tp->t_trq); - KASSERT(SEQ_GT(tqe->trq_seq, th_seq), - ("%s: first block starts below missing segment", __func__)); - /* Check if segment prepends first block. */ - if (SEQ_LEQ(tqe->trq_seq, th_seq + *tlenp)) { - /* Trim tail of segment. */ - if ((i = SEQ_DELTA(tqe->trq_seq, th_seq + *tlenp))) { - m_adj(m, -i); - *tlenp -= i; - /* TCP statistics. */ - TCPSTAT_INC(tcps_rcvpartduppack); - TCPSTAT_ADD(tcps_rcvpartdupbyte, i); - /* Update accounting. */ - mcnt = m_storagesize(m); - } - tqe->trq_len += *tlenp; - tqe->trq_mcnt += mcnt; - tp->t_trqmcnt += mcnt; - tqe->trq_seq = th_seq; - n = m_last(m); - n->m_next = tqe->trq_m; - tqe->trq_m = m; - goto present; - } - goto insert; /* No statistics, this segment is in line. */ - } - - /* TCP statistics. */ - TCPSTAT_INC(tcps_rcvoopack); - TCPSTAT_ADD(tcps_rcvoobyte, *tlenp); - - /* See where it fits. */ - TAILQ_FOREACH_SAFE(tqe, &tp->t_trq, trq_q, tqen) { - /* Segment is after this blocks coverage. */ - if (SEQ_LT(tqe->trq_seq + tqe->trq_len, th_seq)) - continue; - /* Segment is after the previous one but before this one. */ - if (SEQ_GT(tqe->trq_seq, th_seq + *tlenp)) - break; /* Insert as new block. */ - - /* Segment is already fully covered. */ - if (SEQ_LEQ(tqe->trq_seq, th_seq) && - SEQ_GEQ(tqe->trq_seq + tqe->trq_len, th_seq + *tlenp)) { - TCPSTAT_INC(tcps_rcvduppack); - TCPSTAT_ADD(tcps_rcvdupbyte, *tlenp); - TCPSTAT_INC(tcps_reass_covered); - /* - * XXXAO: What to SACK report when duplicate? - * See RFC2883: D-SACK (Duplicate SACK) - */ - sack_track(tp, tqe); + /* + * Return match that has at least partial overlap to either side or + * insert a new reassembly block. + */ + if ((trb = RB_FIND(tcp_rb, &tp->rcv_reass, &trbs)) != NULL) { + /* Within an already known block. */ + if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && + SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { + tcp_reass_sacktrack(tp, trb); m_freem(m); *tlenp = 0; return (0); } + tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - /* Segment covers and extends on both ends. */ - if (SEQ_GT(tqe->trq_seq, th_seq) && - SEQ_LT(tqe->trq_seq + tqe->trq_len, th_seq + *tlenp)) { - /* Replace block content. */ - tp->t_trqmcnt -= tqe->trq_mcnt; - m_freem(tqe->trq_m); - tqe->trq_len = *tlenp; - tqe->trq_mcnt = mcnt; - tp->t_trqmcnt += mcnt; - tqe->trq_seq = th_seq; - tqe->trq_m = m; - tqe->trq_ml = m_last(m); - /* Check if segment bridges next block to merge. */ - if (tqen != NULL && - SEQ_GEQ(tqe->trq_seq + tqe->trq_len, tqen->trq_seq)) - tcp_reass_merge(tp, tqe, tqen); - sack_track(tp, tqe); - TCPSTAT_INC(tcps_reass_replace); - return (0); - } + /* Extends the end, common case. */ + if (SEQ_GT(trbs.trb_seqe, trb->trb_seqe)) { + (void)tcp_reass_merge(trb, &trbs); + tcp_reass_sacktrack(tp, trb); - /* Segment prepends to this block. */ - if (SEQ_GT(tqe->trq_seq, th_seq) && - SEQ_LEQ(tqe->trq_seq, th_seq + *tlenp) && - SEQ_GEQ(tqe->trq_seq + tqe->trq_len, th_seq + *tlenp)) { - KASSERT(!(thflags & TH_FIN), - ("%s: new segment with FIN can't prepend", __func__)); - /* Trim tail of segment. */ - if ((i = SEQ_DELTA(tqe->trq_seq, th_seq + *tlenp))) { - m_adj(m, -i); - *tlenp -= i; - /* TCP statistics. */ - TCPSTAT_INC(tcps_rcvpartduppack); - TCPSTAT_ADD(tcps_rcvpartdupbyte, i); - /* Update accounting. */ - mcnt = m_storagesize(m); + /* Merge in next blocks if there is overlap. */ + while ((trbn = RB_NEXT(tcp_rb, &tp->rcv_reass, trb)) != NULL && + SEQ_GEQ(trbn->trb_seqs, trb->trb_seqe)) { + trbn = tcp_reass_merge(trb, trbn); + tcp_reass_free(tp, trbn); } - tqe->trq_len += *tlenp; - tqe->trq_mcnt += mcnt; - tp->t_trqmcnt += mcnt; - tqe->trq_seq = th_seq; - n = m_last(m); - n->m_next = tqe->trq_m; - tqe->trq_m = m; - sack_track(tp, tqe); - TCPSTAT_INC(tcps_reass_prepend); - return (0); } - /* Segment appends to this block. */ - if (SEQ_LT(tqe->trq_seq + tqe->trq_len, th_seq + *tlenp) && - SEQ_LEQ(tqe->trq_seq, th_seq) && - SEQ_GEQ(tqe->trq_seq + tqe->trq_len, th_seq)) { - /* Trim head of segment. */ - if ((i = SEQ_DELTA(tqe->trq_seq + tqe->trq_len, th_seq))) { - m_adj(m, i); - *tlenp -= i; - /* TCP Statistics. */ - TCPSTAT_INC(tcps_rcvpartduppack); - TCPSTAT_ADD(tcps_rcvpartdupbyte, i); + /* Extends the start. */ + if (SEQ_LT(trbs.trb_seqs, trb->trb_seqs)) { + (void)tcp_reass_merge(trb, &trbs); + tcp_reass_sacktrack(tp, trb); + + /* Merge in previous blocks if there is overlap. */ + while ((trbn = RB_PREV(tcp_rb, &tp->rcv_reass, trb)) != NULL && + SEQ_GEQ(trbn->trb_seqe, trb->trb_seqs)) { + trbn = tcp_reass_merge(tp, trb, trbn); + tcp_reass_free(tp, trbn); } - tqe->trq_len += *tlenp; - tqe->trq_mcnt += mcnt; - tp->t_trqmcnt += mcnt; - tqe->trq_ml->m_next = m; - tqe->trq_ml = m_last(m); - /* Check if segment bridges two blocks to merge. */ - if (tqen != NULL && - SEQ_GEQ(tqe->trq_seq + tqe->trq_len, tqen->trq_seq)) - tcp_reass_merge(tp, tqe, tqen); - sack_track(tp, tqe); - TCPSTAT_INC(tcps_reass_append); - return (0); } + } else if ((trb = (struct tcp_reass_block *)uma_zalloc(tcp_reass_zone, (M_NOWAIT|M_ZERO))) != NULL) { + trb->trb_seqs = trbs.trb_seqs; + trb->trb_seqe = trbs.trb_seqe; + trb->trb_m = trbs.trb_m; + trb->trb_mt = trbs.trb_mt; + trbn = RB_INSERT(tcp_rb, &tp->rcv_reass, trb); + KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); + tcp_reass_sacktrack(tp, trb); + tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + } else if (tp->rcv_nxt == th_seq) { + trbn = RB_INSERT(tcp_rb, &tp->rcv_reass, &trbs); + KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); } + if (tp->rcv_nxt == th_seq) + goto present; -insert: - /* Prepare to insert into block queue. */ - if (tp->rcv_nxt == th_seq) { - /* - * Use temporary struct trq on the stack for missing - * segment to prevent blocking of all reassembly queues - * due to zone exhaustion. - */ - tqen = &tqes; - } else { - tqen = uma_zalloc(tcp_reass_zone, (M_NOWAIT|M_ZERO)); - if (tqen == NULL) { - TCPSTAT_INC(tcps_rcvmemdrop); - m_freem(m); - *tlenp = 0; - return (0); - } - TCPSTAT_INC(tcps_reass_blocks); - } - tcp_reass_qsize++; - if (tcp_reass_spacetime) { - m = m_collapse(m, M_DONTWAIT, 1024); - mcnt = m_storagesize(m); - } - tqen->trq_seq = th_seq; - tqen->trq_len = *tlenp; - tqen->trq_mcnt = mcnt; - tp->t_trqmcnt += mcnt; - tqen->trq_m = m; - tqen->trq_ml = m_last(m); + KASSERT(tcp_reass_verify(tp), + ("%s: reassembly queue inconsistent", __func__)); + return (0); - /* Where to insert. */ - if (tqe != NULL && SEQ_LT(tqe->trq_seq + tqe->trq_len, th_seq)) - TAILQ_INSERT_AFTER(&tp->t_trq, tqe, tqen, trq_q); - else if (tqe != NULL) - TAILQ_INSERT_BEFORE(tqe, tqen, trq_q); - else { - KASSERT(TAILQ_EMPTY(&tp->t_trq), - ("%s: first element queue not empty", __func__)); - TAILQ_INSERT_HEAD(&tp->t_trq, tqen, trq_q); - /* - * Flush the reassembly queue after x times the - * current retransmit interval measured from the - * arrival time of the first segment. - */ - if (tcp_reass_qtimo) - tcp_timer_activate(tp, TT_REASS, - tp->t_rxtcur * tcp_reass_qtimo); - } - LIST_INSERT_HEAD(&tp->t_trq_sack, tqen, trq_s); - - /* Missing segment? */ - if (tp->rcv_nxt != th_seq) - return (0); present: /* * Present data to user, advancing rcv_nxt through the * completed sequence space. */ - KASSERT(!TAILQ_EMPTY(&tp->t_trq), + KASSERT(!RB_EMPTY(&tp->rcv_reass), ("%s: queue empty at present", __func__)); - KASSERT((TAILQ_FIRST(&tp->t_trq))->trq_seq == tp->rcv_nxt, + KASSERT((RB_MIN(tcp_ra, &tp->rcv_reass))->trb_seqs == tp->rcv_nxt, ("%s: first block does not match rcv_nxt", __func__)); TCPSTAT_INC(tcps_reass_missingseg); SOCKBUF_LOCK(&so->so_rcv); - TAILQ_FOREACH_SAFE(tqe, &tp->t_trq, trq_q, tqen) { - KASSERT(SEQ_GEQ(tqe->trq_seq, tp->rcv_nxt), - ("%s: trq_seq < rcv_nxt", __func__)); - KASSERT(tqen == NULL || - SEQ_LEQ(tqe->trq_seq + tqe->trq_len, tqen->trq_seq), - ("%s: block overlaps into next one", __func__)); - if (tqe->trq_seq != tp->rcv_nxt) - break; - if (so->so_rcv.sb_state & SBS_CANTRCVMORE) - m_freem(tqe->trq_m); - else - sbappendstream_locked(&so->so_rcv, tqe->trq_m); + trb = RB_MIN(tcp_ra, &tp->rcv_reass); + if (!(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { + sbappendstream_locked(&so->so_rcv, trb->trb_m); tp->rcv_nxt += tqe->trq_len; - tp->t_trqmcnt -= tqe->trq_mcnt; - TAILQ_REMOVE(&tp->t_trq, tqe, trq_q); - LIST_REMOVE(tqe, trq_s); - if (tqe != &tqes) - uma_zfree(tcp_reass_zone, tqe); - V_tcp_reass_qsize--; + trb->trb_m = NULL; + trb->trb_mt = NULL; } + if (trb == &trbs) { + RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); + if (trb->trb_m != NULL) + m_freem(trb->trb_m); + } else + tcp_reass_free(tp, trb); + /* NB: sorwakeup_locked() does a implicit socket buffer unlock. */ sorwakeup_locked(so); @@ -615,7 +504,7 @@ * the sequence space and if queue is not empty. Otherwise * deactivate it. */ - if (tcp_reass_qtimo && !TAILQ_EMPTY(&tp->t_trq)) + if (tcp_reass_qtimo && !RB_EMPTY(&tp->rcv_reass)) tcp_timer_activate(tp, TT_REASS, tp->t_rxtcur * tcp_reass_qtimo); else @@ -627,57 +516,45 @@ /* * Merge one or more consecutive blocks together. + * Always merge trbn into trb! */ -static void -tcp_reass_merge(struct tcpcb *tp, struct trq *tqe, struct trq *tqen) +static struct tcp_reass_block * +tcp_reass_merge(struct tcpcb *tp, struct tcp_reass_block *trb, struct tcp_reass_block *trbn) { int i; - KASSERT(tqe != NULL && tqen != NULL, + KASSERT(trb != NULL && trbn != NULL, ("%s: incomplete input", __func__)); - KASSERT(SEQ_GEQ(tqe->trq_seq + tqe->trq_len, tqen->trq_seq), - ("%s: blocks do not overlap, nothing to merge", __func__)); - /* Appended block may reach beyond next block. */ - while (SEQ_GEQ(tqe->trq_seq + tqe->trq_len, tqen->trq_seq + tqen->trq_len)) { - /* TCP Statistics. */ - TCPSTAT_ADD(tcps_rcvpartdupbyte, tqen->trq_len); - TCPSTAT_INC(tcps_reass_covered); - tp->t_trqmcnt -= tqe->trq_mcnt; - m_freem(tqen->trq_m); - TAILQ_REMOVE(&tp->t_trq, tqen, trq_q); - LIST_REMOVE(tqen, trq_s); - uma_zfree(tcp_reass_zone, tqen); - tcp_reass_qsize--; - /* And the one after that. */ - if ((tqen = TAILQ_NEXT(tqe, trq_q)) == NULL) - return; - } - - /* Trim head of next block. */ - if ((i = SEQ_DELTA(tqe->trq_seq + tqe->trq_len, tqen->trq_seq))) { - m_adj(tqen->trq_m, i); - tqen->trq_len -= i; - TCPSTAT_ADD(tcps_rcvpartdupbyte, i); /* Statistics */ - /* Dispose of empty mbufs. */ - if (tcp_reass_spacetime) { - tqen->trq_m = m_trimhead(tqen->trq_m); - tqen->trq_mcnt = m_storagesize(tqen->trq_m); + /* Append and prepend. */ + if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { + if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqe)) + return (trbn); + if ((i = SEQ_DELTA(trb->trb_seqe, trbn->trb_seqs)) > 0) { + m_adj(trbn->trb_m, i); + trbn->trb_m = m_trimhead(trbn->trb_m); + } + trb->trb_seqe = trbn->trb_seqe; + trb->trb_mt->m_next = trbn->trb_m; + trb->trb_mt = trbn->trb_mt; + } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { + if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs) + return (trbn); + if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) { + m_adj(trb->trb_m, i); + trb->trb_m = m_trimhead(trb->trb_m); } - KASSERT(tqen->trq_m != NULL, - ("%s: no remaining mbufs in block", __func__)); - } + trb->trb_seqs = trbn->trb_seqs; + trbn->trb_mt->m_next = trb->trb_m; + trb->trb_m = trbn->trb_m; + } else + return (NULL); - /* Merge blocks together. */ - tqe->trq_len += tqen->trq_len; - tqe->trq_mcnt += tqen->trq_mcnt; - tqe->trq_ml->m_next = tqen->trq_m; - tqe->trq_ml = tqen->trq_ml; - TAILQ_REMOVE(&tp->t_trq, tqen, trq_q); - LIST_REMOVE(tqen, trq_s); - uma_zfree(tcp_reass_zone, tqen); - tcp_reass_qsize--; - TCPSTAT_INC(tcps_reass_merge); + trbn->trb_seqs = 0; + trbn->trb_seqe = i; + trbn->trb_m = NULL; + trbn->trb_mt = NULL; + return (trbn); } /* @@ -691,10 +568,9 @@ tcp_seq sack_seq; int nsacks = 0; + INP_WLOCK_ASSERT(tp->t_inpcb); KASSERT(numsacks > 0, ("%s: zero sack blocks to add", __func__)); - KASSERT(!TAILQ_EMPTY(&tp->t_trq), - ("%s: reassembly queue empty", __func__)); KASSERT(!LIST_EMPTY(&tp->t_trq_sack), ("%s: sack list empty", __func__)); @@ -718,25 +594,15 @@ return (nsacks); } -/* - * Free the reassembly queue on tcpcb disposal or on general memory shortage. - */ -void -tcp_reass_qfree(struct tcpcb *tp) +#ifdef DDB +static void +db_print_reassblocks(struct tcpcb *tp) { - struct trq *tqe, *tqen; + struct tcp_reass_block *trb; - INP_WLOCK_ASSERT(tp->t_inpcb); - - TAILQ_FOREACH_SAFE(tqe, &tp->t_trq, trq_q, tqen) { - m_freem(tqe->trq_m); - KASSERT(tp->t_trqmcnt >= tqe->trq_mcnt, - ("%s: t_trqmcnt incorrect", __func__)); - tp->t_trqmcnt -= tqe->trq_mcnt; - TAILQ_REMOVE(&tp->t_trq, tqe, trq_q); - LIST_REMOVE(tqe, trq_s); - uma_zfree(tcp_reass_zone, tqe); - tcp_reass_qsize--; + RB_FOREACH(trb, tcp_ra, &tp->rcv_reass) { + db_printf(" reass block 0x%08x - 0x%08x\n", + trb->trb_seqs, trb->trb_seqe); } - tcp_timer_activate(tp, TT_REASS, 0); } +#endif ==== //depot/projects/tcp_reass/netinet/tcp_var.h#18 (text+ko) ==== @@ -51,14 +51,13 @@ #endif /* _KERNEL */ /* TCP reassembly queue segment block entry. */ -struct trq { - TAILQ_ENTRY(trq) trq_q; /* linked list in SEQ# order */ - LIST_ENTRY(trq) trq_s; /* linked list in SACK order */ - tcp_seq trq_seq; /* start of block */ - int trq_len; /* length of block */ - int trq_mcnt; /* gross mbuf size of block */ - struct mbuf *trq_m; /* mbuf chain of data */ - struct mbuf *trq_ml; /* last mbuf in chain of data */ +struct tcp_reass_block { + RB_ENTRY(tcp_reass_block) trb_rb; + LIST_ENTRY(tcp_reass_block) trb_sack; /* linked list in SACK order */ + tcp_seq trb_seqs; /* start of block */ + tcp_seq trb_seqe; /* end of block */ + struct mbuf *trb_m; /* mbuf chain of data */ + struct mbuf *trb_mt; /* last mbuf in chain of data */ }; struct sackblk { @@ -105,9 +104,9 @@ * Organized for 16 byte cacheline efficiency. */ struct tcpcb { - TAILQ_HEAD(trq_head, trq) t_trq; /* segment reassembly queue */ - LIST_HEAD(trq_shead, trq) t_trq_sack; /* last additions to reass queue */ - int t_trqmcnt; /* segment reassembly queue gross usage */ + RB_HEAD(tcp_ra, tcp_reass_block) rcv_reass; /* segment reassembly queue */ + LIST_HEAD(trq_shead, trq) rcv_reass_sack; /* last additions to reass queue */ + int rcv_reass_size; /* segment reassembly memory usage */ int t_dupacks; /* consecutive dup acks recd */ @@ -653,7 +652,7 @@ int tcp_reass(struct tcpcb *, struct tcphdr *, int *, struct mbuf *); void tcp_reass_init(void); int tcp_reass_sack(struct tcpcb *, u_char *, int); -void tcp_reass_qfree(struct tcpcb *); +void tcp_reass_flush(struct tcpcb *); void tcp_input(struct mbuf *, int); u_long tcp_maxmtu(struct in_conninfo *, int *); u_long tcp_maxmtu6(struct in_conninfo *, int *); From owner-p4-projects@FreeBSD.ORG Sun Jul 19 16:26:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E7C221065674; Sun, 19 Jul 2009 16:26:27 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88D6F1065673 for ; Sun, 19 Jul 2009 16:26:27 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 744588FC13 for ; Sun, 19 Jul 2009 16:26:27 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JGQR8T069455 for ; Sun, 19 Jul 2009 16:26:27 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JGQRe2069451 for perforce@freebsd.org; Sun, 19 Jul 2009 16:26:27 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 16:26:27 GMT Message-Id: <200907191626.n6JGQRe2069451@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166271 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 16:26:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=166271 Change 166271 by andre@andre_flirtbox on 2009/07/19 16:25:31 Fixup typos. Compile. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_input.c#13 edit .. //depot/projects/tcp_reass/netinet/tcp_output.c#15 edit .. //depot/projects/tcp_reass/netinet/tcp_reass.c#35 edit .. //depot/projects/tcp_reass/netinet/tcp_subr.c#12 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#19 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_input.c#13 (text+ko) ==== @@ -1245,7 +1245,7 @@ tp->snd_nxt == tp->snd_max && tiwin && tiwin == tp->snd_wnd && ((tp->t_flags & (TF_NEEDSYN|TF_NEEDFIN)) == 0) && - TAILQ_EMPTY(&tp->t_trq) && + RB_EMPTY(&tp->rcv_reass) && ((to.to_flags & TOF_TS) == 0 || TSTMP_GEQ(to.to_tsval, tp->ts_recent)) ) { @@ -2570,7 +2570,7 @@ * fast retransmit can work). */ if (th->th_seq == tp->rcv_nxt && - TAILQ_EMPTY(&tp->t_trq) && + RB_EMPTY(&tp->rcv_reass) && TCPS_HAVEESTABLISHED(tp->t_state)) { if (DELAY_ACK(tp)) tp->t_flags |= TF_DELACK; ==== //depot/projects/tcp_reass/netinet/tcp_output.c#15 (text+ko) ==== @@ -479,7 +479,7 @@ if (len > tp->t_maxseg) { if ((tp->t_flags & TF_TSO) && V_tcp_do_tso && ((tp->t_flags & TF_SIGNATURE) == 0) && - TAILQ_EMPTY(&tp->t_trq) && sack_rxmit == 0 && + RB_EMPTY(&tp->rcv_reass) && sack_rxmit == 0 && tp->t_inpcb->inp_options == NULL && tp->t_inpcb->in6p_options == NULL #ifdef IPSEC @@ -686,7 +686,7 @@ to.to_flags |= TOF_SACKPERM; else if (TCPS_HAVEESTABLISHED(tp->t_state) && (tp->t_flags & TF_SACK_PERMIT) && - !TAILQ_EMPTY(&tp->t_trq)) { + !RB_EMPTY(&tp->rcv_reass)) { to.to_flags |= TOF_SACK; to.to_sacks = (u_char *)tp; } ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#35 (text+ko) ==== @@ -127,8 +127,8 @@ &tcp_reass_spacetime, 0, "Reassembly Queue strategy of space vs. time efficiency"); -static struct tcp_reass_block - tcp_reass_merge(struct tcpcb *, struct tcp_reass_block *, struct tcp_reass_block *); +static struct tcp_reass_block * + tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); /* Trim empty mbufs from head of chain. */ static struct mbuf * @@ -144,6 +144,7 @@ return (m); } +#if 0 static u_int m_storagesize(struct mbuf *m) { @@ -154,6 +155,7 @@ m->m_ext.ext_size + MSIZE : MSIZE; return (mcnt); } +#endif /* * Adjust TCP reassembly zone limits when the nmbclusters zone changes. @@ -175,7 +177,7 @@ TUNABLE_INT_FETCH("net.inet.tcp.reass.maxblocks", &tcp_reass_maxblocks); - tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct trb), + tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); EVENTHANDLER_REGISTER(nmbclusters_change, @@ -208,7 +210,7 @@ struct mbuf *m; struct tcp_reass_block *trb, *trbn; - RB_FOREACH_SAFE(trb, tcp_rb, &tp->rcv_reass, trbn) { + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), ("%s: trb_seqs >= trb_seqe", __func__)); KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt), @@ -217,12 +219,12 @@ ("%s: trb_m == NULL", __func__)); KASSERT(trb->trb_mt != NULL, ("%s: trb_mt == NULL", __func__)); - size = SEQ_DELTA(trb->trb_seqs, tsb->trb_seqe); + size = SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); KASSERT(size == m_length(trb->trb_m, &m), ("%s: seq# size != actual mbuf size", __func__)); KASSERT(trb->trb_mt == m, ("%s: trb_mt is not last mbuf", __func__)); - KASSERT(tsbn == NULL || SEQ_LT(tsb->trb_seqe, tsbn->trb_seqs), + KASSERT(trbn == NULL || SEQ_LT(trb->trb_seqe, trbn->trb_seqs), ("%s: overlaps into next block", __func__)); total += size; i++; @@ -230,7 +232,7 @@ KASSERT(tp->rcv_reass_size == total, ("%s: total not correct", __func__)); - LIST_FOREACH(tcp_reass_block, &tp->rcv_reass_sack, trb_sack) { + LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { i--; } KASSERT(i == 0, @@ -262,7 +264,7 @@ KASSERT(tcp_reass_verify(tp), ("%s: reassembly queue inconsistent", __func__)); - RB_FOREACH_SAFE(trb, tcp_rb, &tp->rcv_reass, trbn) { + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { tcp_reass_free(tp, trb); } KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); @@ -287,7 +289,7 @@ int tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) { - int i, thflags = 0; + int thflags = 0; tcp_seq th_seq; struct socket *so = tp->t_inpcb->inp_socket; struct tcp_reass_block *trb, *trbn; @@ -302,7 +304,7 @@ */ if (th == NULL) { if (!TCPS_HAVEESTABLISHED(tp->t_state) || - RB_EMPTY(&tp->t_trq) || + RB_EMPTY(&tp->rcv_reass) || ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && trb->trb_seqs != tp->rcv_nxt)) return (0); @@ -388,10 +390,10 @@ tcp_timer_activate(tp, TT_REASS, 0); return (thflags); } - } else if (*tlenp = 0) { + } else if (*tlenp == 0) { m_freem(m); return (0); - else + } else thflags &= ~TH_FIN; /* Get rid of packet header and mtags. */ @@ -413,7 +415,7 @@ * Return match that has at least partial overlap to either side or * insert a new reassembly block. */ - if ((trb = RB_FIND(tcp_rb, &tp->rcv_reass, &trbs)) != NULL) { + if ((trb = RB_FIND(tcp_ra, &tp->rcv_reass, &trbs)) != NULL) { /* Within an already known block. */ if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { @@ -430,7 +432,7 @@ tcp_reass_sacktrack(tp, trb); /* Merge in next blocks if there is overlap. */ - while ((trbn = RB_NEXT(tcp_rb, &tp->rcv_reass, trb)) != NULL && + while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && SEQ_GEQ(trbn->trb_seqs, trb->trb_seqe)) { trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); @@ -443,9 +445,9 @@ tcp_reass_sacktrack(tp, trb); /* Merge in previous blocks if there is overlap. */ - while ((trbn = RB_PREV(tcp_rb, &tp->rcv_reass, trb)) != NULL && + while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && SEQ_GEQ(trbn->trb_seqe, trb->trb_seqs)) { - trbn = tcp_reass_merge(tp, trb, trbn); + trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); } } @@ -454,12 +456,12 @@ trb->trb_seqe = trbs.trb_seqe; trb->trb_m = trbs.trb_m; trb->trb_mt = trbs.trb_mt; - trbn = RB_INSERT(tcp_rb, &tp->rcv_reass, trb); + trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, trb); KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); tcp_reass_sacktrack(tp, trb); tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); } else if (tp->rcv_nxt == th_seq) { - trbn = RB_INSERT(tcp_rb, &tp->rcv_reass, &trbs); + trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, &trbs); KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); } if (tp->rcv_nxt == th_seq) @@ -485,7 +487,7 @@ trb = RB_MIN(tcp_ra, &tp->rcv_reass); if (!(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { sbappendstream_locked(&so->so_rcv, trb->trb_m); - tp->rcv_nxt += tqe->trq_len; + tp->rcv_nxt += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); trb->trb_m = NULL; trb->trb_mt = NULL; } @@ -519,7 +521,7 @@ * Always merge trbn into trb! */ static struct tcp_reass_block * -tcp_reass_merge(struct tcpcb *tp, struct tcp_reass_block *trb, struct tcp_reass_block *trbn) +tcp_reass_merge(struct tcp_reass_block *trb, struct tcp_reass_block *trbn) { int i; @@ -538,7 +540,7 @@ trb->trb_mt->m_next = trbn->trb_m; trb->trb_mt = trbn->trb_mt; } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs) + if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs)) return (trbn); if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) { m_adj(trb->trb_m, i); @@ -564,27 +566,27 @@ int tcp_reass_sack(struct tcpcb *tp, u_char *optp, int numsacks) { - struct trq *tqe; + struct tcp_reass_block *trb; tcp_seq sack_seq; int nsacks = 0; INP_WLOCK_ASSERT(tp->t_inpcb); KASSERT(numsacks > 0, ("%s: zero sack blocks to add", __func__)); - KASSERT(!LIST_EMPTY(&tp->t_trq_sack), + KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), ("%s: sack list empty", __func__)); /* * The most recent block must appear first. RFC2018, Section 4. * Add the other blocks in most recent created or updated order. */ - LIST_FOREACH(tqe, &tp->t_trq_sack, trq_s) { + LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { if (numsacks < 1) break; - sack_seq = htonl(tqe->trq_seq); + sack_seq = htonl(trb->trb_seqs); bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); optp += sizeof(sack_seq); - sack_seq = htonl(tqe->trq_seq + tqe->trq_len); + sack_seq = htonl(trb->trb_seqe); bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); optp += sizeof(sack_seq); numsacks--; @@ -605,4 +607,4 @@ trb->trb_seqs, trb->trb_seqe); } } -#endif+#endif ==== //depot/projects/tcp_reass/netinet/tcp_subr.c#12 (text+ko) ==== @@ -749,8 +749,8 @@ tp->t_flags = (TF_REQ_SCALE|TF_REQ_TSTMP); if (V_tcp_do_sack) tp->t_flags |= TF_SACK_PERMIT; - TAILQ_INIT(&tp->t_trq); - LIST_INIT(&tp->t_trq_sack); + RB_INIT(&tp->rcv_reass); + LIST_INIT(&tp->rcv_reass_sack); TAILQ_INIT(&tp->snd_holes); tp->t_inpcb = inp; /* XXX */ /* @@ -883,7 +883,7 @@ } /* Free the reassembly queue and other data structures. */ - tcp_reass_qfree(tp); + tcp_reass_flush(tp); tcp_free_sackholes(tp); /* Disconnect offload device, if any. */ @@ -958,7 +958,7 @@ continue; INP_WLOCK(inpb); if ((tcpb = intotcpcb(inpb)) != NULL) - tcp_reass_qfree(tcpb); + tcp_reass_flush(tcpb); INP_WUNLOCK(inpb); } INP_INFO_RUNLOCK(&V_tcbinfo); ==== //depot/projects/tcp_reass/netinet/tcp_var.h#19 (text+ko) ==== @@ -34,6 +34,7 @@ #define _NETINET_TCP_VAR_H_ #include +#include #ifdef _KERNEL #include @@ -105,7 +106,7 @@ */ struct tcpcb { RB_HEAD(tcp_ra, tcp_reass_block) rcv_reass; /* segment reassembly queue */ - LIST_HEAD(trq_shead, trq) rcv_reass_sack; /* last additions to reass queue */ + LIST_HEAD(tcp_ras, tcp_reass_block) rcv_reass_sack; /* last additions to reass queue */ int rcv_reass_size; /* segment reassembly memory usage */ int t_dupacks; /* consecutive dup acks recd */ From owner-p4-projects@FreeBSD.ORG Sun Jul 19 16:27:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 171B91065673; Sun, 19 Jul 2009 16:27:29 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9CA8106566C for ; Sun, 19 Jul 2009 16:27:28 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B61808FC1B for ; Sun, 19 Jul 2009 16:27:28 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JGRSsX069513 for ; Sun, 19 Jul 2009 16:27:28 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JGRSPB069511 for perforce@freebsd.org; Sun, 19 Jul 2009 16:27:28 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 16:27:28 GMT Message-Id: <200907191627.n6JGRSPB069511@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166272 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 16:27:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=166272 Change 166272 by andre@andre_flirtbox on 2009/07/19 16:27:18 IFC. Affected files ... .. //depot/projects/tcp_reass/kern/kern_vimage.c#7 integrate .. //depot/projects/tcp_reass/net/if.c#10 integrate .. //depot/projects/tcp_reass/netgraph/ng_gif.c#6 integrate .. //depot/projects/tcp_reass/netinet/igmp.c#8 integrate .. //depot/projects/tcp_reass/netinet/in_pcb.c#10 integrate .. //depot/projects/tcp_reass/netinet/in_rmx.c#9 integrate .. //depot/projects/tcp_reass/netinet/ip_input.c#9 integrate .. //depot/projects/tcp_reass/netinet/tcp_subr.c#13 integrate .. //depot/projects/tcp_reass/netinet/tcp_timer.c#9 integrate .. //depot/projects/tcp_reass/netinet6/frag6.c#8 integrate .. //depot/projects/tcp_reass/netinet6/mld6.c#8 integrate .. //depot/projects/tcp_reass/netipsec/key.c#10 integrate .. //depot/projects/tcp_reass/sys/kernel.h#7 integrate .. //depot/projects/tcp_reass/sys/vimage.h#7 integrate Differences ... ==== //depot/projects/tcp_reass/kern/kern_vimage.c#7 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_vimage.c,v 1.14 2009/07/17 14:48:21 jamie Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_vimage.c,v 1.15 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_ddb.h" @@ -58,23 +58,22 @@ static int vnet_mod_constructor(struct vnet_modlink *); static int vnet_mod_destructor(struct vnet_modlink *); -#define VNET_LIST_WLOCK() \ - mtx_lock(&vnet_list_refc_mtx); \ - while (vnet_list_refc != 0) \ - cv_wait(&vnet_list_condvar, &vnet_list_refc_mtx); +struct rwlock vnet_rwlock; +struct sx vnet_sxlock; + +#define VNET_LIST_WLOCK() do { \ + sx_xlock(&vnet_sxlock); \ + rw_wlock(&vnet_rwlock); \ +} while (0) -#define VNET_LIST_WUNLOCK() \ - mtx_unlock(&vnet_list_refc_mtx); +#define VNET_LIST_WUNLOCK() do { \ + rw_wunlock(&vnet_rwlock); \ + sx_xunlock(&vnet_sxlock); \ +} while (0) struct vnet_list_head vnet_head; - -struct cv vnet_list_condvar; -struct mtx vnet_list_refc_mtx; -int vnet_list_refc = 0; - struct vnet *vnet0; - /* * Move an ifnet to or from another vnet, specified by the jail id. */ @@ -373,17 +372,23 @@ } static void -vi_init(void *unused) +vnet_init_prelink(void *arg) +{ + + rw_init(&vnet_rwlock, "vnet_rwlock"); + sx_init(&vnet_sxlock, "vnet_sxlock"); + LIST_INIT(&vnet_head); +} +SYSINIT(vnet_init_prelink, SI_SUB_VNET_PRELINK, SI_ORDER_FIRST, + vnet_init_prelink, NULL); + +static void +vnet0_init(void *arg) { TAILQ_INIT(&vnet_modlink_head); TAILQ_INIT(&vnet_modpending_head); - LIST_INIT(&vnet_head); - - mtx_init(&vnet_list_refc_mtx, "vnet_list_refc_mtx", NULL, MTX_DEF); - cv_init(&vnet_list_condvar, "vnet_list_condvar"); - /* * We MUST clear curvnet in vi_init_done() before going SMP, * otherwise CURVNET_SET() macros would scream about unnecessary @@ -391,9 +396,10 @@ */ curvnet = prison0.pr_vnet = vnet0 = vnet_alloc(); } +SYSINIT(vnet0_init, SI_SUB_VNET, SI_ORDER_FIRST, vnet0_init, NULL); static void -vi_init_done(void *unused) +vnet_init_done(void *unused) { struct vnet_modlink *vml_iter; @@ -411,8 +417,8 @@ panic("going nowhere without my vnet modules!"); } -SYSINIT(vimage, SI_SUB_VIMAGE, SI_ORDER_FIRST, vi_init, NULL); -SYSINIT(vimage_done, SI_SUB_VIMAGE_DONE, SI_ORDER_FIRST, vi_init_done, NULL); +SYSINIT(vnet_init_done, SI_SUB_VNET_DONE, SI_ORDER_FIRST, vnet_init_done, + NULL); #ifdef DDB DB_SHOW_COMMAND(vnets, db_show_vnets) ==== //depot/projects/tcp_reass/net/if.c#10 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)if.c 8.5 (Berkeley) 1/9/95 - * $FreeBSD: src/sys/net/if.c,v 1.354 2009/07/17 14:48:21 jamie Exp $ + * $FreeBSD: src/sys/net/if.c,v 1.355 2009/07/19 14:20:53 rwatson Exp $ */ #include "opt_compat.h" @@ -1793,8 +1793,8 @@ struct ifnet *ifp; int s = splimp(); + VNET_LIST_RLOCK_NOSLEEP(); IFNET_RLOCK(); - VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); TAILQ_FOREACH(ifp, &V_ifnet, if_link) { @@ -1805,8 +1805,8 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IFNET_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); splx(s); timeout(if_slowtimo, (void *)0, hz / IFNET_SLOWHZ); } ==== //depot/projects/tcp_reass/netgraph/ng_gif.c#6 (text+ko) ==== @@ -62,7 +62,7 @@ * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * - * $FreeBSD: src/sys/netgraph/ng_gif.c,v 1.26 2009/07/14 22:48:30 rwatson Exp $ + * $FreeBSD: src/sys/netgraph/ng_gif.c,v 1.27 2009/07/19 14:20:53 rwatson Exp $ */ /* @@ -561,8 +561,8 @@ ng_gif_input_orphan_p = ng_gif_input_orphan; /* Create nodes for any already-existing gif interfaces */ + VNET_LIST_RLOCK_NOSLEEP(); IFNET_RLOCK(); - VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET_QUIET(vnet_iter); /* XXX revisit quiet */ TAILQ_FOREACH(ifp, &V_ifnet, if_link) { @@ -571,8 +571,8 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IFNET_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); break; case MOD_UNLOAD: ==== //depot/projects/tcp_reass/netinet/igmp.c#8 (text+ko) ==== @@ -48,7 +48,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/igmp.c,v 1.85 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/igmp.c,v 1.86 2009/07/19 14:20:53 rwatson Exp $"); #include #include @@ -1616,13 +1616,13 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); igmp_fasttimo_vnet(); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* @@ -2159,13 +2159,13 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); igmp_slowtimo_vnet(); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* ==== //depot/projects/tcp_reass/netinet/in_pcb.c#10 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/in_pcb.c,v 1.258 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/in_pcb.c,v 1.259 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_ddb.h" #include "opt_ipsec.h" @@ -1570,7 +1570,7 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); /* XXX appease INVARIANTS here */ if (V_ipport_tcpallocs <= @@ -1582,7 +1582,7 @@ V_ipport_tcplastcount = V_ipport_tcpallocs; CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); callout_reset(&ipport_tick_callout, hz, ipport_tick, NULL); } ==== //depot/projects/tcp_reass/netinet/in_rmx.c#9 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/in_rmx.c,v 1.77 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/in_rmx.c,v 1.78 2009/07/19 14:20:53 rwatson Exp $"); #include #include @@ -319,7 +319,7 @@ struct rtqk_arg arg; int fibnum; - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); @@ -336,7 +336,7 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } static int _in_rt_was_here; ==== //depot/projects/tcp_reass/netinet/ip_input.c#9 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/ip_input.c,v 1.370 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/ip_input.c,v 1.371 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_bootp.h" #include "opt_ipfw.h" @@ -1193,8 +1193,8 @@ struct ipq *fp; int i; + VNET_LIST_RLOCK_NOSLEEP(); IPQ_LOCK(); - VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); for (i = 0; i < IPREASS_NHASH; i++) { @@ -1228,8 +1228,8 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IPQ_UNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* @@ -1241,8 +1241,8 @@ VNET_ITERATOR_DECL(vnet_iter); int i; + VNET_LIST_RLOCK_NOSLEEP(); IPQ_LOCK(); - VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); for (i = 0; i < IPREASS_NHASH; i++) { @@ -1254,8 +1254,8 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IPQ_UNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); in_rtqdrain(); } ==== //depot/projects/tcp_reass/netinet/tcp_subr.c#13 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/tcp_subr.c,v 1.347 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/tcp_subr.c,v 1.348 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_compat.h" #include "opt_inet.h" @@ -938,7 +938,7 @@ if (!do_tcpdrain) return; - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); struct inpcb *inpb; @@ -964,7 +964,7 @@ INP_INFO_RUNLOCK(&V_tcbinfo); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* @@ -1564,7 +1564,7 @@ VNET_ITERATOR_DECL(vnet_iter); u_int32_t projected_offset; - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); ISN_LOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); /* XXX appease INVARIANTS */ @@ -1578,7 +1578,7 @@ CURVNET_RESTORE(); } ISN_UNLOCK(); - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); callout_reset(&isn_callout, hz/100, tcp_isn_tick, NULL); } ==== //depot/projects/tcp_reass/netinet/tcp_timer.c#9 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/tcp_timer.c,v 1.110 2009/07/14 22:48:30 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/tcp_timer.c,v 1.111 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_inet6.h" #include "opt_tcpdebug.h" @@ -127,7 +127,7 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); tcp_maxidle = tcp_keepcnt * tcp_keepintvl; @@ -136,7 +136,7 @@ INP_INFO_WUNLOCK(&V_tcbinfo); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } int tcp_syn_backoff[TCP_MAXRXTSHIFT + 1] = ==== //depot/projects/tcp_reass/netinet6/frag6.c#8 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/frag6.c,v 1.48 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/frag6.c,v 1.49 2009/07/19 14:20:53 rwatson Exp $"); #include #include @@ -720,8 +720,8 @@ VNET_ITERATOR_DECL(vnet_iter); struct ip6q *q6; + VNET_LIST_RLOCK_NOSLEEP(); IP6Q_LOCK(); - VNET_LIST_RLOCK(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); q6 = V_ip6q.ip6q_next; @@ -748,8 +748,8 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IP6Q_UNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* @@ -760,9 +760,11 @@ { VNET_ITERATOR_DECL(vnet_iter); - if (IP6Q_TRYLOCK() == 0) + VNET_LIST_RLOCK_NOSLEEP(); + if (IP6Q_TRYLOCK() == 0) { + VNET_LIST_RUNLOCK_NOSLEEP(); return; - VNET_LIST_RLOCK(); + } VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); while (V_ip6q.ip6q_next != &V_ip6q) { @@ -772,6 +774,6 @@ } CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); IP6Q_UNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } ==== //depot/projects/tcp_reass/netinet6/mld6.c#8 (text+ko) ==== @@ -64,7 +64,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/mld6.c,v 1.53 2009/07/16 21:13:04 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/mld6.c,v 1.54 2009/07/19 14:20:53 rwatson Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1306,13 +1306,13 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); mld_fasttimo_vnet(); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* @@ -1721,13 +1721,13 @@ { VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); mld_slowtimo_vnet(); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); } /* ==== //depot/projects/tcp_reass/netipsec/key.c#10 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/netipsec/key.c,v 1.60 2009/07/16 21:13:04 rwatson Exp $ */ +/* $FreeBSD: src/sys/netipsec/key.c,v 1.61 2009/07/19 14:20:53 rwatson Exp $ */ /* $KAME: key.c,v 1.191 2001/06/27 10:46:49 sakane Exp $ */ /*- @@ -4537,7 +4537,7 @@ VNET_ITERATOR_DECL(vnet_iter); time_t now = time_second; - VNET_LIST_RLOCK(); + VNET_LIST_RLOCK_NOSLEEP(); VNET_FOREACH(vnet_iter) { CURVNET_SET(vnet_iter); key_flush_spd(now); @@ -4546,7 +4546,7 @@ key_flush_spacq(now); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK(); + VNET_LIST_RUNLOCK_NOSLEEP(); #ifndef IPSEC_DEBUG2 /* do exchange to tick time !! */ ==== //depot/projects/tcp_reass/sys/kernel.h#7 (text+ko) ==== @@ -39,7 +39,7 @@ * SUCH DAMAGE. * * @(#)kernel.h 8.3 (Berkeley) 1/21/94 - * $FreeBSD: src/sys/sys/kernel.h,v 1.148 2009/05/29 21:27:12 jamie Exp $ + * $FreeBSD: src/sys/sys/kernel.h,v 1.149 2009/07/19 14:20:53 rwatson Exp $ */ #ifndef _SYS_KERNEL_H_ @@ -106,13 +106,14 @@ SI_SUB_MTX_POOL_DYNAMIC = 0x1AC0000, /* dynamic mutex pool */ SI_SUB_LOCK = 0x1B00000, /* various locks */ SI_SUB_EVENTHANDLER = 0x1C00000, /* eventhandler init */ + SI_SUB_VNET_PRELINK = 0x1E00000, /* vnet init before modules */ SI_SUB_KLD = 0x2000000, /* KLD and module setup */ SI_SUB_CPU = 0x2100000, /* CPU resource(s)*/ SI_SUB_KDTRACE = 0x2140000, /* Kernel dtrace hooks */ SI_SUB_MAC = 0x2180000, /* TrustedBSD MAC subsystem */ SI_SUB_MAC_POLICY = 0x21C0000, /* TrustedBSD MAC policies */ SI_SUB_MAC_LATE = 0x21D0000, /* TrustedBSD MAC subsystem */ - SI_SUB_VIMAGE = 0x21E0000, /* vimage infrastructure */ + SI_SUB_VNET = 0x21E0000, /* vnet 0 */ SI_SUB_INTRINSIC = 0x2200000, /* proc 0*/ SI_SUB_VM_CONF = 0x2300000, /* config VM, set limits*/ SI_SUB_DDB_SERVICES = 0x2380000, /* capture, scripting, etc. */ @@ -158,7 +159,7 @@ SI_SUB_SWAP = 0xc000000, /* swap */ SI_SUB_INTRINSIC_POST = 0xd000000, /* proc 0 cleanup*/ SI_SUB_SYSCALLS = 0xd800000, /* register system calls */ - SI_SUB_VIMAGE_DONE = 0xdc00000, /* vnet registration complete */ + SI_SUB_VNET_DONE = 0xdc00000, /* vnet registration complete */ SI_SUB_KTHREAD_INIT = 0xe000000, /* init process*/ SI_SUB_KTHREAD_PAGE = 0xe400000, /* pageout daemon*/ SI_SUB_KTHREAD_VM = 0xe800000, /* vm daemon*/ ==== //depot/projects/tcp_reass/sys/vimage.h#7 (text+ko) ==== @@ -27,17 +27,38 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/vimage.h,v 1.39 2009/07/17 14:48:21 jamie Exp $ + * $FreeBSD: src/sys/sys/vimage.h,v 1.41 2009/07/19 15:21:42 rwatson Exp $ */ #ifndef _SYS_VIMAGE_H_ #define _SYS_VIMAGE_H_ -#include +/* + * struct vnet describes a virtualized network stack, and is primarily a + * pointer to storage for virtualized global variables. Expose to userspace + * as required for libkvm. + */ +#if defined(_KERNEL) || defined(_WANT_VNET) #include +struct vnet { + LIST_ENTRY(vnet) vnet_le; /* all vnets list */ + u_int vnet_magic_n; + u_int ifcnt; + u_int sockcnt; + void *vnet_data_mem; + uintptr_t vnet_data_base; +}; + +#define VNET_MAGIC_N 0x3e0d8f29 +#endif + #ifdef _KERNEL +#include +#include +#include + #ifdef INVARIANTS #define VNET_DEBUG #endif @@ -112,19 +133,8 @@ #endif /* VIMAGE */ -struct vnet { - LIST_ENTRY(vnet) vnet_le; /* all vnets list */ - u_int vnet_magic_n; - u_int ifcnt; - u_int sockcnt; - void *vnet_data_mem; - uintptr_t vnet_data_base; -}; - #define curvnet curthread->td_vnet -#define VNET_MAGIC_N 0x3e0d8f29 - #ifdef VIMAGE #ifdef VNET_DEBUG #define VNET_ASSERT(condition) \ @@ -176,17 +186,42 @@ #endif /* !VIMAGE */ #ifdef VIMAGE +/* + * Global linked list of all virtual network stacks, along with read locks to + * access it. If a caller may sleep while accessing the list, it must use + * the sleepable lock macros. + */ LIST_HEAD(vnet_list_head, vnet); extern struct vnet_list_head vnet_head; -extern struct vnet *vnet0; -#define VNET_ITERATOR_DECL(arg) struct vnet *arg; -#define VNET_FOREACH(arg) LIST_FOREACH(arg, &vnet_head, vnet_le) -#else +extern struct rwlock vnet_rwlock; +extern struct sx vnet_sxlock; + +#define VNET_LIST_RLOCK() sx_slock(&vnet_sxlock) +#define VNET_LIST_RLOCK_NOSLEEP() rw_rlock(&vnet_rwlock) +#define VNET_LIST_RUNLOCK() sx_sunlock(&vnet_sxlock) +#define VNET_LIST_RUNLOCK_NOSLEEP() rw_runlock(&vnet_rwlock) + +/* + * Iteration macros to walk the global list of virtual network stacks. + */ +#define VNET_ITERATOR_DECL(arg) struct vnet *arg +#define VNET_FOREACH(arg) LIST_FOREACH((arg), &vnet_head, vnet_le) + +#else /* !VIMAGE */ +/* + * No-op macros for the !VIMAGE case. + */ +#define VNET_LIST_RLOCK() +#define VNET_LIST_RLOCK_NOSLEEP() +#define VNET_LIST_RUNLOCK() +#define VNET_LIST_RUNLOCK_NOSLEEP() #define VNET_ITERATOR_DECL(arg) #define VNET_FOREACH(arg) -#endif + +#endif /* VIMAGE */ #ifdef VIMAGE +extern struct vnet *vnet0; #define IS_DEFAULT_VNET(arg) ((arg) == vnet0) #else #define IS_DEFAULT_VNET(arg) 1 @@ -202,10 +237,6 @@ #define P_TO_VNET(p) NULL #endif /* VIMAGE */ -/* Non-VIMAGE null-macros */ -#define VNET_LIST_RLOCK() -#define VNET_LIST_RUNLOCK() - #endif /* _KERNEL */ #endif /* !_SYS_VIMAGE_H_ */ From owner-p4-projects@FreeBSD.ORG Sun Jul 19 17:35:44 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 079641065676; Sun, 19 Jul 2009 17:35:44 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA1361065673 for ; Sun, 19 Jul 2009 17:35:43 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A7A208FC14 for ; Sun, 19 Jul 2009 17:35:43 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JHZhPV086059 for ; Sun, 19 Jul 2009 17:35:43 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JHZh7k086057 for perforce@freebsd.org; Sun, 19 Jul 2009 17:35:43 GMT (envelope-from fangwang@FreeBSD.org) Date: Sun, 19 Jul 2009 17:35:43 GMT Message-Id: <200907191735.n6JHZh7k086057@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 166277 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 17:35:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166277 Change 166277 by fangwang@fangwang_utobsd on 2009/07/19 17:35:11 Fix bug. Affected files ... .. //depot/projects/soc2009/tcputo/src/contrib/tcpdump/print-tcp.c#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#7 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/contrib/tcpdump/print-tcp.c#3 (text+ko) ==== @@ -618,10 +618,11 @@ datalen = 2; LENCHECK(datalen); uint utoval = EXTRACT_16BITS(cp); - if (utoval & (~(uint)0 - 1)) - utoval = utoval >> 1; + (void)printf("0x%x", utoval); + if (utoval & 0x0001) + utoval = (utoval >> 1) * 60; else - utoval = (utoval >> 1) * 60; + utoval >>= 1; (void)printf(" %u", utoval); break; ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#7 (text+ko) ==== @@ -1382,8 +1382,8 @@ tp->uto_flags |= TCPUTO_ENABLE; if (tu.flags & STORE_UTO) { tp->uto_flags |= TCPUTO_NEED; - if (tu.uto > 0 && tu.uto <= 0x8FFF * 60) { - if (tu.uto > 0x8FFF) { + if (tu.uto > 0 && tu.uto <= 0x7FFF * 60) { + if (tu.uto > 0x7FFF) { tp->snd_uto = tu.uto / 60; tp->snd_uto <<= 1; tp->snd_uto |= 1; From owner-p4-projects@FreeBSD.ORG Sun Jul 19 22:15:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F74D106571C; Sun, 19 Jul 2009 22:15:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 113C31065716 for ; Sun, 19 Jul 2009 22:15:51 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id F26EB8FC22 for ; Sun, 19 Jul 2009 22:15:50 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6JMFosE023342 for ; Sun, 19 Jul 2009 22:15:50 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6JMFoBe023340 for perforce@freebsd.org; Sun, 19 Jul 2009 22:15:50 GMT (envelope-from andre@freebsd.org) Date: Sun, 19 Jul 2009 22:15:50 GMT Message-Id: <200907192215.n6JMFoBe023340@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166292 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Jul 2009 22:15:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=166292 Change 166292 by andre@andre_t61 on 2009/07/19 22:15:42 Rename tcp_reass_enabled to tcp_reass_enable. Change tcp_reass_maxblocks to a limit per connection. Add tcp_reass_globalmaxblocks as global zonelimit. Change tcp_reass_qtimo to tcp_reass_timeout as fixed timeout in milliseconds. Update sysctl descriptions. Decouple reassembly block zonelimit from nmbclusters. Add per connection block counter, tracking and limiting code. Combine all exit cases where the mbuf is freed into goto label 'done'. Differenciate between space and time efficiency through the use of m_collapse(). Add RFC2883 D-SACK support for duplicate retransmits. Fix merging of next/previous block test. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#36 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#20 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#36 (text+ko) ==== @@ -107,25 +107,30 @@ SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, "TCP Segment Reassembly Queue"); -static int tcp_reass_enabled = 1; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_WR, - &tcp_reass_enabled, 0, - "Enable/disable use of TCP Reassembly Queue"); +static int tcp_reass_enable = 1; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_RW, + &tcp_reass_enable, 0, + "Enable/disable use of TCP reassembly queue"); -static int tcp_reass_maxblocks = 65535; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RDTUN, +static int tcp_reass_maxblocks = 32; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RW, &tcp_reass_maxblocks, 0, - "Global maximum number of TCP Segment Blocks in Reassembly Queue"); + "Per connection limit of TCP segment blocks in reassembly queue"); + +static int tcp_reass_globalmaxblocks = 65535; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, + &tcp_reass_globalmaxblocks, 0, + "Global limit of TCP segment blocks in reassembly queue"); -static int tcp_reass_qtimo = 0; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, queue_timeout, CTLFLAG_RW, - &tcp_reass_qtimo, 0, - "Reassembly Queue Timeout in multiples of the Retransmission Timeout"); +static int tcp_reass_timeout = 30 * HZ; +SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, + &tcp_reass_timeout, NULL, sysctl_msec_to_ticks, "I", + "Reassembly queue flush timeout in milliseconds"); static int tcp_reass_spacetime = 0; SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, space_time, CTLFLAG_RW, &tcp_reass_spacetime, 0, - "Reassembly Queue strategy of space vs. time efficiency"); + "Reassembly queue strategy of space vs. time efficiency"); static struct tcp_reass_block * tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); @@ -158,30 +163,17 @@ #endif /* - * Adjust TCP reassembly zone limits when the nmbclusters zone changes. - */ -static void -tcp_reass_zone_change(void *tag) -{ - - tcp_reass_maxblocks = nmbclusters / 16; - uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); -} - -/* * Initialize TCP reassembly zone on startup. */ void tcp_reass_init(void) { - TUNABLE_INT_FETCH("net.inet.tcp.reass.maxblocks", - &tcp_reass_maxblocks); + TUNABLE_INT_FETCH("net.inet.tcp.reass.globalmaxblocks", + &tcp_reass_globalmaxblocks); tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - uma_zone_set_max(tcp_reass_zone, tcp_reass_maxblocks); - EVENTHANDLER_REGISTER(nmbclusters_change, - tcp_reass_zone_change, NULL, EVENTHANDLER_PRI_ANY); + uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); } /* @@ -252,6 +244,7 @@ if (trb->trb_m != NULL) m_freem(trb->trb_m); tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + tp->rcv_reass_blocks--; uma_zfree(tcp_reass_zone, trb); } @@ -326,11 +319,8 @@ th = NULL; /* Prevent further use. */ /* Check if it is really neccessary to do all the work. */ - if (!tcp_reass_enabled && RB_EMPTY(&tp->rcv_reass)) { - *tlenp = 0; - m_freem(m); - return (0); - } + if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) + goto done; KASSERT(SEQ_LT(tp->rcv_nxt, th_seq), ("%s: sequence number below rcv_nxt", __func__)); @@ -359,16 +349,13 @@ * buffer vs. actual real data with 2k clusters and 1500 byte * packets by introducing a correction factor of 11/8th. */ - /* if (th_seq != tp->rcv_nxt && - tp->t_trqmcnt > (sbspace(&so->so_rcv) / 8 * 11)) { + tp->rcv_reass_blocks > tcp_reass_maxblocks) { + //(sbspace(&so->so_rcv) / 8 * 11) TCPSTAT_INC(tcps_reass_overflow); TCPSTAT_INC(tcps_rcvmemdrop); - m_freem(m); - *tlenp = 0; - return (0); + goto done; } - */ /* * FIN handling is a bit tricky. @@ -390,10 +377,9 @@ tcp_timer_activate(tp, TT_REASS, 0); return (thflags); } - } else if (*tlenp == 0) { - m_freem(m); - return (0); - } else + } else if (*tlenp == 0) + goto done; + else thflags &= ~TH_FIN; /* Get rid of packet header and mtags. */ @@ -401,7 +387,8 @@ /* Trim empty mbufs from head of chain. */ m = m_trimhead(m); /* Compact mbuf chain. */ - m = m_collapse(m, M_DONTWAIT, 1024); + if (tcp_reass_spacetime) + m = m_collapse(m, M_DONTWAIT, 1024); KASSERT(m != NULL, ("%s: m is NULL after collapse", __func__)); @@ -420,9 +407,9 @@ if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { tcp_reass_sacktrack(tp, trb); - m_freem(m); - *tlenp = 0; - return (0); + tp->rcv_reass_dsack.start = trbs.trb_seqs; + tp->rcv_reass_dsack.end = trbs.trb_seqe; + goto done; } tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); @@ -433,7 +420,7 @@ /* Merge in next blocks if there is overlap. */ while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_GEQ(trbn->trb_seqs, trb->trb_seqe)) { + SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); } @@ -446,7 +433,7 @@ /* Merge in previous blocks if there is overlap. */ while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_GEQ(trbn->trb_seqe, trb->trb_seqs)) { + SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); } @@ -460,6 +447,7 @@ KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); tcp_reass_sacktrack(tp, trb); tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + tp->rcv_reass_blocks++; } else if (tp->rcv_nxt == th_seq) { trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, &trbs); KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); @@ -483,7 +471,7 @@ TCPSTAT_INC(tcps_reass_missingseg); SOCKBUF_LOCK(&so->so_rcv); - + /* We can only ever dequeue one block. */ trb = RB_MIN(tcp_ra, &tp->rcv_reass); if (!(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { sbappendstream_locked(&so->so_rcv, trb->trb_m); @@ -506,14 +494,19 @@ * the sequence space and if queue is not empty. Otherwise * deactivate it. */ - if (tcp_reass_qtimo && !RB_EMPTY(&tp->rcv_reass)) + if (tcp_reass_timeout && !RB_EMPTY(&tp->rcv_reass)) tcp_timer_activate(tp, TT_REASS, - tp->t_rxtcur * tcp_reass_qtimo); + tp->t_rxtcur * tcp_reass_timeout); else tcp_timer_activate(tp, TT_REASS, 0); ND6_HINT(tp); return (thflags); + +done: + m_freem(m); + *tlenp = 0; + return (0); } /* @@ -538,7 +531,11 @@ } trb->trb_seqe = trbn->trb_seqe; trb->trb_mt->m_next = trbn->trb_m; - trb->trb_mt = trbn->trb_mt; + if (tcp_reass_spacetime) { + trb->trb_mt = m_collapse(trb->trb_mt, M_DONTWAIT, 1024); + trb->trb_mt = m_last(trb->trb_mt, NULL); + } else + trb->trb_mt = trbn->trb_mt; } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs)) return (trbn); @@ -547,8 +544,12 @@ trb->trb_m = m_trimhead(trb->trb_m); } trb->trb_seqs = trbn->trb_seqs; + trb->trb_m = trbn->trb_m; trbn->trb_mt->m_next = trb->trb_m; - trb->trb_m = trbn->trb_m; + if (tcp_reass_spacetime) { + trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); + trb->trb_mt = m_last(trbn->trb_mt, NULL); + } } else return (NULL); @@ -562,13 +563,15 @@ /* * Put the sequence number of the reassembly queue blocks into * the SACK options of an outgoing segment. + * RFC2018: section ... + * RFC2883: section ... */ int tcp_reass_sack(struct tcpcb *tp, u_char *optp, int numsacks) { + int nsacks = 0; + tcp_seq sack_seq; struct tcp_reass_block *trb; - tcp_seq sack_seq; - int nsacks = 0; INP_WLOCK_ASSERT(tp->t_inpcb); KASSERT(numsacks > 0, @@ -576,9 +579,24 @@ KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), ("%s: sack list empty", __func__)); + /* DSACK */ + if (tp->rcv_reass_dsack.start == tp->rcv_reass_dsack.end) { + sack_seq = htonl(tp->rcv_reass_dsack.start); + bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); + optp += sizeof(sack_seq); + sack_seq = htonl(tp->rcv_reass_dsack.end); + bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); + optp += sizeof(sack_seq); + tp->rcv_reass_dsack.start = 0; + tp->rcv_reass_dsack.end = 0; + numsacks--; + nsacks++; + } + /* - * The most recent block must appear first. RFC2018, Section 4. - * Add the other blocks in most recent created or updated order. + * The most recent block must appear first. Add the other + * blocks in most recent created or updated order. + * RFC2018: section 4 */ LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { if (numsacks < 1) ==== //depot/projects/tcp_reass/netinet/tcp_var.h#20 (text+ko) ==== @@ -106,8 +106,10 @@ */ struct tcpcb { RB_HEAD(tcp_ra, tcp_reass_block) rcv_reass; /* segment reassembly queue */ + int rcv_reass_size; /* segment reassembly memory usage */ + int rcv_reass_blocks; /* blocks in reassembly queue */ LIST_HEAD(tcp_ras, tcp_reass_block) rcv_reass_sack; /* last additions to reass queue */ - int rcv_reass_size; /* segment reassembly memory usage */ + struct sackblk rcv_reass_dsack; /* DSACK block */ int t_dupacks; /* consecutive dup acks recd */ From owner-p4-projects@FreeBSD.ORG Mon Jul 20 11:43:32 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A0A4C1065677; Mon, 20 Jul 2009 11:43:32 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6040F106564A for ; Mon, 20 Jul 2009 11:43:32 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4E8978FC12 for ; Mon, 20 Jul 2009 11:43:32 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KBhWiK025427 for ; Mon, 20 Jul 2009 11:43:32 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KBhWgo025425 for perforce@freebsd.org; Mon, 20 Jul 2009 11:43:32 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Mon, 20 Jul 2009 11:43:32 GMT Message-Id: <200907201143.n6KBhWgo025425@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 166298 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 11:43:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=166298 Change 166298 by zhaoshuai@zhaoshuai on 2009/07/20 11:42:40 add performance test result Affected files ... .. //depot/projects/soc2009/fifo/fifo_test/README#2 edit Differences ... ==== //depot/projects/soc2009/fifo/fifo_test/README#2 (text+ko) ==== @@ -2,7 +2,7 @@ All about FIFO testings. === FUNCTIONALITY TEST === - + The directory "functionality" contains simple testing programs for FIFO. Each of the fifo core functions is tested separately, including read/write /select/poll/kqueue/sigio. All works well except the one testing fifo @@ -30,7 +30,71 @@ suffer from this problem. -=== REGRESSION Test === +=== REGRESSION TEST === The directory "regression" contains official regression tests for FIFO. My FIFO code passes all the tests. + + +=== PERFORMANCE TEST === + + The performance test takes this paper for reference: + http://linkinghub.elsevier.com/retrieve/pii/S0164121202001346 + + == How To Use == + + cd into the "performance" directory and build the benchmark program, + $ make + then run the "runme.sh" script + $ ./runme.sh + + == NOTE == + + The benchmark program employes the producer/consumer model to test the + throughput of the FIFO system. In this model, producer sends messages + and consumer receives messages using FIFO. The elapsed time will be + caculated. Less time we use, more throughput we have. + + The test is executed 100 times for all combinations of the following + parameters for message size and number of messages transmitted. The + avarage time is caculated and then printed. + - Message size(bytes): 64, 128, 256, 512, 1024, 2048, 4096 + - Number of messages : 100, 1000, 5000, 10000, 100000 + + == Results == + + The performance test was carried out on a Dell Optiplex 960 box with Intel + Core 2 Quad 9400 processor, 4G RAM, and 320G hard disk. FreeBSD 7.0-RELEASE + is installed on this machine but the kernel has been updated to 8.0-CURRENT. + + Here is the result obtained under the new fifo implementation (pipe version): + + 100 1000 5000 10000 100000 + 64B 274us 148us 418us 753us 8909us + 128B 89us 216us 769us 1545us 17729us + 256B 106us 353us 1530us 3700us 35265us + 512B 138us 595us 3709us 7310us 70396us + 1024B 184us 1183us 7300us 14103us 141104us + 2048B 295us 2696us 13929us 29296us 309294us + 4096B 502us 5988us 29094us 58351us 583801us + + Here is the reuslt obtained under the old fifo implementation (socket version): + + 100 1000 5000 10000 100000 + 64B 85us 175us 584us 1126us 11905us + 128B 96us 280us 1128us 2171us 23427us + 256B 119us 484us 2170us 4559us 53267us + 512B 159us 891us 4645us 9276us 109152us + 1024B 239us 1732us 9554us 18825us 222931us + 2048B 403us 3552us 18939us 38081us 451727us + 4096B 723us 7546us 39151us 83753us 905902us + + From these results, we can see that the new fifo implementation gains little + advantage over the old fifo implementation when transfering small amount of data. + e.g. transferring 100*128 bytes of data costs 89 microseconds under the new fifo + code while it costs 96 microseconds under the old fifo code. But when transferring + large amount of data, the new fifo implementation gains significant advantage over + the old fifo implementation. e.g. it takes 1126 microseconds transferring 10000*64 + bytes of data under the old fifo implementation, but under the new fifo implementation, + it takes 753 microseconds, saving 30% of time. That is to say, the new fifo system + increases the throughput by 30% in this case. From owner-p4-projects@FreeBSD.ORG Mon Jul 20 15:22:31 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A525D1065674; Mon, 20 Jul 2009 15:22:31 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 64794106564A for ; Mon, 20 Jul 2009 15:22:31 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 47F9D8FC15 for ; Mon, 20 Jul 2009 15:22:31 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KFMVA2055344 for ; Mon, 20 Jul 2009 15:22:31 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KFMVtj055342 for perforce@freebsd.org; Mon, 20 Jul 2009 15:22:31 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 20 Jul 2009 15:22:31 GMT Message-Id: <200907201522.n6KFMVtj055342@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166302 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 15:22:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=166302 Change 166302 by pgj@beehive on 2009/07/20 15:22:06 IFC Affected files ... .. //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#35 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/virtualization/chapter.sgml#7 integrate .. //depot/projects/docproj_hu/doc/share/sgml/trademarks.ent#4 integrate .. //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#41 integrate .. //depot/projects/docproj_hu/www/share/sgml/press.xml#19 integrate Differences ... ==== //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#35 (text+ko) ==== @@ -13,7 +13,7 @@ builds for the other languages, and we will poke fun of you in public. - $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.486 2009/06/07 19:14:05 tuexen Exp $ + $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.487 2009/07/20 14:15:44 yzlin Exp $ --> aaron@FreeBSD.org"> @@ -1184,6 +1184,8 @@ yongari@FreeBSD.org"> +yzlin@FreeBSD.org"> + xride@FreeBSD.org"> zarzycki@FreeBSD.org"> ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/books/handbook/virtualization/chapter.sgml#7 (text+ko) ==== @@ -1,7 +1,7 @@ 3Com and HomeConnect are registered @@ -329,9 +329,9 @@ Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, - Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, and - Ultra are trademarks or registered trademarks of Sun Microsystems, - Inc. in the United States and other countries."> + Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, + Ultra and VirtualBox are trademarks or registered trademarks of + Sun Microsystems, Inc. in the United States and other countries."> Java"> Java Virtual Machine"> JavaServer Pages"> @@ -348,6 +348,7 @@ Sun Fire"> Ultra"> SunOS"> +VirtualBox"> Symantec and Ghost are registered ==== //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#41 (text+ko) ==== @@ -11,7 +11,7 @@ - $FreeBSD: www/hu/share/sgml/news.xml,v 1.15 2009/07/09 20:09:43 pgj Exp $ + $FreeBSD: www/hu/share/sgml/news.xml,v 1.16 2009/07/19 11:15:17 pgj Exp $ ==== //depot/projects/docproj_hu/www/share/sgml/press.xml#19 (text+ko) ==== @@ -9,7 +9,7 @@ - $FreeBSD: www/share/sgml/press.xml,v 1.84 2009/06/24 01:19:43 jkoshy Exp $ + $FreeBSD: www/share/sgml/press.xml,v 1.85 2009/07/19 22:07:54 danger Exp $ @@ -17,6 +17,26 @@ 2009 + 7 + + + Why &os; 8 Won't Rewrite the Book + http://www.internetnews.com/dev-news/article.php/3830041 + InternetNews.com ‐ WebMediaBrands Inc. + http://www.internetnews.com/ + 15 July 2009 + Sean Michael Kerner +

An article about the upcoming &os; 8.0 release, which + includes interviews with Michael Lucas, author of the Absolute + &os; book, Matt Olander of iXsystems, and Kris Moore of + PC-BSD. The primary focus of the article is how &os;, even + across major releases, still keeps the disruption for users + to a minimum, and introduces new features and improvements + without forcing a paradigm shift on the users.

+
+
+ + 6 From owner-p4-projects@FreeBSD.ORG Mon Jul 20 15:45:57 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F4161065676; Mon, 20 Jul 2009 15:45:57 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2EF2C106566C for ; Mon, 20 Jul 2009 15:45:57 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1C1D18FC08 for ; Mon, 20 Jul 2009 15:45:57 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KFjv0u057187 for ; Mon, 20 Jul 2009 15:45:57 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KFjuJF057185 for perforce@freebsd.org; Mon, 20 Jul 2009 15:45:56 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 20 Jul 2009 15:45:56 GMT Message-Id: <200907201545.n6KFjuJF057185@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166304 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 15:45:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=166304 Change 166304 by pgj@beehive on 2009/07/20 15:45:18 MFen (www): 1.84 -> 1.85 hu/share/sgml/press.xml Affected files ... .. //depot/projects/docproj_hu/www/hu/share/sgml/press.xml#17 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/share/sgml/press.xml#17 (text+ko) ==== @@ -5,7 +5,7 @@ @@ -19,6 +19,33 @@ 2009 + 7 + + + Miért nem kell a &os; 8 miatt + újraírni a könyvet? + http://www.internetnews.com/dev-news/article.php/3830041 + InternetNews.com ‐ WebMediaBrands Inc. + http://www.internetnews.com/ + 2009. július 15. + Sean Michael Kerner +

A cikk a &os; legújabb, 8.0 + kiadásáról szól, amellyel + kapcsolatban megszólal benne többek közt + Michael Lucas, az Absolute &os; címû könyv + szerzõje, valamint Matt Olander az iXsystems és + Kris Moore a PC-BSD részérõl. A + cikkbõl megtudhatjuk, hogy a &os; miként marad + majdnem ugyanaz a rendszer még a nagyobb verziók + közt is, és miként hoz magával + újításokat és + fejlesztéseket a felhasználók + paradigmaváltásra + kényszerítése nélkül.

+
+
+ + 6 From owner-p4-projects@FreeBSD.ORG Mon Jul 20 17:15:36 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9158710656F7; Mon, 20 Jul 2009 17:15:36 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4C6AD10656F2 for ; Mon, 20 Jul 2009 17:15:36 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 389908FC20 for ; Mon, 20 Jul 2009 17:15:36 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KHFang075665 for ; Mon, 20 Jul 2009 17:15:36 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KHFaV6075663 for perforce@freebsd.org; Mon, 20 Jul 2009 17:15:36 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 20 Jul 2009 17:15:36 GMT Message-Id: <200907201715.n6KHFaV6075663@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166312 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 17:15:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=166312 Change 166312 by pgj@petymeg-current on 2009/07/20 17:15:00 Introduce a very initial version of netstat_interface() -- a function for listing network interfaces. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#11 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#29 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_if.c#1 add .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#27 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#32 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#11 (text+ko) ==== @@ -3,7 +3,7 @@ .include LIB= netstat -SRCS= netstat_socket.c netstat_mbuf.c netstat_util.c +SRCS= netstat_socket.c netstat_mbuf.c netstat_if.c netstat_util.c INCS= netstat.h ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#29 (text+ko) ==== @@ -38,6 +38,9 @@ #define SOCKTYPE_MAXADDR SOCK_MAXADDRLEN #define SOCKTYPE_MAXADDRCNT 2 +#define IFTYPE_MAXNAME 32 +#define IFTYPE_MAXADDRCNT 8 + #define NETSTAT_ERROR_UNDEFINED 0 #define NETSTAT_ERROR_NOMEMORY 1 #define NETSTAT_ERROR_VERSION 2 @@ -53,6 +56,13 @@ /* netstat_mbuf(): */ #define NETSTAT_MBUF_KVM 0x01 +/* netstat_interface(): */ +#define NETSTAT_INTERFACE_KVM 0x01 +#define NETSTAT_INTERFACE_ALL 0x02 + +/* Testing flags for interface_type: */ +#define NETSTAT_IF_UP 0x01 /* interface is up */ + /* Enum for TCP states: */ enum tcp_state { tcps_Closed, @@ -71,6 +81,13 @@ tcps_MAX, }; +enum intfaddr_layer { + layer_None, + layer_Link, + layer_Network, + layer_MAX, +}; + struct socket_type; struct sockaddr_type; struct sockbuf_type; @@ -80,7 +97,14 @@ struct mbuf_type; +struct interface_type; +struct intfaddr_type; +struct face_type; + +struct interface_type_list; +struct interface_type_iterator; + __BEGIN_DECLS const char *netstat_strerror(int); @@ -180,4 +204,40 @@ u_int64_t netstat_bt_get_size(const struct buffer_type *); u_int64_t netstat_bt_get_limit(const struct buffer_type *); +/* Interfaces: */ +struct interface_type_list *netstat_itl_alloc(void); +void netstat_itl_free(struct interface_type_list *); +int netstat_itl_geterror(const struct interface_type_list *); +int netstat_itl_length(const struct interface_type_list *); + +int netstat_iti_alloc(struct interface_type_list *list, + struct interface_type_iterator **iterator); +const struct interface_type *netstat_iti_first(struct interface_type_iterator *); +const struct interface_type *netstat_iti_next(struct interface_type_iterator *); +void netstat_iti_free(struct interface_type_iterator *iterator); + +void netstat_it_free(struct interface_type *); +void netstat_iat_free(struct intfaddr_type *); + +int netstat_interface(const char *name, int domain, + struct interface_type_list *list, int flags, void *kvm_handle); + +const char *netstat_it_get_name(const struct interface_type *); +u_int64_t netstat_it_get_mtu(const struct interface_type *); +int netstat_it_get_flags(const struct interface_type *); +u_int64_t netstat_it_get_collisions(const struct interface_type *); +u_int64_t netstat_it_get_drops(const struct interface_type *); +u_int16_t netstat_it_get_timer(const struct interface_type *); +const struct face_type *netstat_it_get_in(const struct interface_type *); +const struct face_type *netstat_it_get_out(const struct interface_type *); + +u_int64_t netstat_ft_get_packets(const struct face_type *); +u_int64_t netstat_ft_get_bytes(const struct face_type *); +u_int64_t netstat_ft_get_mcasts(const struct face_type *); +u_int64_t netstat_ft_get_errors(const struct face_type *); + +enum intfaddr_layer netstat_iat_get_layer(const struct intfaddr_type *); + +/* Interface addresses: */ + #endif /* !_NETSTAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#27 (text+ko) ==== @@ -83,6 +83,9 @@ #define NETSTAT_ADDRTYPE_INET6_LOCAL 5 #define NETSTAT_ADDRTYPE_INET6_FOREIGN 6 +#define NETSTAT_IF_IFADDR 0 +#define NETSTAT_IF_IFMULTIADDR 1 + /* Socket (PCB) type: a connection. */ struct socket_type { /* Static properties. */ @@ -170,6 +173,71 @@ int mbt_error; }; +/* General interface statistics. */ +struct face_type { + u_int64_t ft_packets; + u_int64_t ft_bytes; + u_int64_t ft_mcasts; + u_int64_t ft_errors; +}; + +/* Interface address. */ +struct intfaddr_type { + int iat_family; /* protocol family */ + enum intfaddr_layer iat_layer; + int iat_type; /* ifa, ifma */ + char iat_name[20]; + char iat_subnet[16]; + void *iat_address; /* raw address */ + void *iat_network; /* raw network */ + int iat_address_len; + u_int64_t iat_network_mask; + u_int32_t iat_refcount; /* ifma */ + /* for network-layer addresses: */ + u_int64_t iat_opackets; + u_int64_t iat_ipackets; + u_int64_t iat_obytes; + u_int64_t iat_ibytes; +}; + +/* Interface. */ +struct interface_type { + int it_type; /* ethernet, tokenring, etc. */ + int it_physical; /* AUI, Thinnet, 10base-T, etc. */ + char it_name[IFTYPE_MAXNAME]; + u_int64_t it_mtu; /* maximum transmission unit */ + int it_flags; + + struct face_type it_in; + struct face_type it_out; + + u_int64_t it_collisions; + u_int64_t it_drops; + u_int16_t it_timer; /* time until watchdog called */ + + /* Addresses. */ + struct intfaddr_type *it_address[IFTYPE_MAXADDRCNT]; + int it_addrcnt; + + /* Multicast addresses. */ + struct intfaddr_type *it_maddress[IFTYPE_MAXADDRCNT]; + int it_maddrcnt; + + LIST_ENTRY(interface_type) it_list; +}; + +struct interface_type_list { + LIST_HEAD(, interface_type) itl_list; + int itl_length; + int itl_error; +}; + +struct interface_type_iterator { + struct interface_type_list *iti_list; + struct interface_type *iti_first; + struct interface_type *iti_next; +}; + int kread_data(kvm_t *kvm, u_long kvm_pointer, void *address, size_t size); int kread_string(kvm_t *kvm, u_long kvm_pointer, char *buffer, int buflen); @@ -185,4 +253,20 @@ void _netstat_sat_resolve_portname(struct sockaddr_type *addr); int sotoxsocket(kvm_t * kvm, struct socket *so, struct xsocket *xso); + +void _netstat_itl_empty(struct interface_type_list *list); +struct interface_type *_netstat_it_allocate(struct interface_type_list *list, + int type, int physical, const char *name); +struct intfaddr_type *_netstat_iat_allocate(int family, int type); + + +/* XXX: merge these into a common address resolution routine. */ +const char *routename(in_addr_t *in, int numeric); +const char *netname(in_addr_t *in, u_long mask, int numeric); +#ifdef INET6 +const char *routename6(struct sockaddr_in6 *in6, int numeric); +const char *netname6(struct sockaddr_in6 *in6, struct in6_addr *mask, + int numeric); +#endif + #endif /* !_NETSTAT_INTERNAL_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#32 (text+ko) ==== @@ -31,7 +31,14 @@ #include #include #include + +#include +#include + #include +#include +#include +#include #include #include @@ -708,3 +715,397 @@ { return (btp->bt_limit); } + +struct interface_type * +_netstat_it_allocate(struct interface_type_list *list, int type, int physical, + const char *name) +{ + struct interface_type *itp; + + itp = malloc(sizeof(*itp)); + if (itp == NULL) + return (NULL); + + bzero(itp, sizeof(*itp)); + + itp->it_type = type; + itp->it_physical = physical; + strlcpy(itp->it_name, name, IFTYPE_MAXNAME); + LIST_INSERT_HEAD(&list->itl_list, itp, it_list); + list->itl_length += 1; + return (itp); +} + +struct intfaddr_type * +_netstat_iat_allocate(int family, int type) +{ + struct intfaddr_type *iatp; + + iatp = malloc(sizeof(*iatp)); + if (iatp == NULL) + return (NULL); + + bzero(iatp, sizeof(*iatp)); + iatp->iat_family = family; + iatp->iat_type = type; + iatp->iat_layer = layer_None; + return (iatp); +} + +struct interface_type_list * +netstat_itl_alloc(void) +{ + struct interface_type_list *itlp; + + itlp = malloc(sizeof(*itlp)); + if (itlp == NULL) + return (NULL); + + LIST_INIT(&itlp->itl_list); + itlp->itl_error = NETSTAT_ERROR_UNDEFINED; + itlp->itl_length = 0; + return (itlp); +} + +void +_netstat_itl_empty(struct interface_type_list *list) +{ + struct interface_type *itp; + + while ((itp = LIST_FIRST(&list->itl_list))) { + LIST_REMOVE(itp, it_list); + netstat_it_free(itp); + } + + list->itl_length = 0; +} + +void +netstat_itl_free(struct interface_type_list *list) +{ + _netstat_itl_empty(list); + free(list); +} + +int +netstat_itl_geterror(const struct interface_type_list *list) +{ + return (list->itl_error); +} + +int +netstat_itl_length(const struct interface_type_list *list) +{ + return (list->itl_length); +} + +int +netstat_iti_alloc(struct interface_type_list *list, + struct interface_type_iterator **iterator) +{ + struct interface_type_iterator *itp; + + itp = malloc(sizeof(*itp)); + if (itp == NULL) + return (-1); + + bzero(itp, sizeof(*itp)); + + itp->iti_list = list; + itp->iti_first = LIST_FIRST(&list->itl_list); + if (itp->iti_first != NULL) + itp->iti_next = LIST_NEXT(itp->iti_first, it_list); + *iterator = itp; + return (0); +} + +const struct interface_type * +netstat_iti_first(struct interface_type_iterator *itip) +{ + itip->iti_next = LIST_NEXT(itip->iti_first, it_list); + return (itip->iti_first); +} + +const struct interface_type * +netstat_iti_next(struct interface_type_iterator *itip) +{ + const struct interface_type *itp; + + itp = itip->iti_next; + if (itip->iti_next != NULL) + itip->iti_next = LIST_NEXT(itip->iti_next, it_list); + + return (itp); +} + +void +netstat_iti_free(struct interface_type_iterator *itip) +{ + free(itip); +} + +void +netstat_it_free(struct interface_type *itp) +{ + int i; + + for (i = 0; itp->it_address[i] != NULL && i < IFTYPE_MAXADDRCNT; i++) + netstat_iat_free(itp->it_address[i]); + + for (i = 0; itp->it_maddress[i] != NULL && i < IFTYPE_MAXADDRCNT; i++) + netstat_iat_free(itp->it_maddress[i]); + + free(itp); +} + +void +netstat_iat_free(struct intfaddr_type *iatp) +{ + free(iatp->iat_address); + free(iatp->iat_network); + free(iatp); +} + +const char * +netstat_it_get_name(const struct interface_type *itp) +{ + return (itp->it_name); +} + +u_int64_t +netstat_it_get_mtu(const struct interface_type *itp) +{ + return (itp->it_mtu); +} + +int +netstat_it_get_flags(const struct interface_type *itp) +{ + return (itp->it_flags); +} + +u_int64_t +netstat_it_get_collisions(const struct interface_type *itp) +{ + return (itp->it_collisions); +} + +u_int64_t +netstat_it_get_drops(const struct interface_type *itp) +{ + return (itp->it_drops); +} + +u_int16_t +netstat_it_get_timer(const struct interface_type *itp) +{ + return (itp->it_timer); +} + +const struct face_type * +netstat_it_get_in(const struct interface_type *itp) +{ + return (&itp->it_in); +} + +const struct face_type * +netstat_it_get_out(const struct interface_type *itp) +{ + return (&itp->it_out); +} + +u_int64_t +netstat_ft_get_packets(const struct face_type *ftp) +{ + return (ftp->ft_packets); +} + +u_int64_t +netstat_ft_get_bytes(const struct face_type *ftp) +{ + return (ftp->ft_bytes); +} + +u_int64_t +netstat_ft_get_mcasts(const struct face_type *ftp) +{ + return (ftp->ft_mcasts); +} + +u_int64_t +netstat_ft_get_errors(const struct face_type *ftp) +{ + return (ftp->ft_errors); +} + +enum intfaddr_layer +netstat_iat_get_layer(const struct intfaddr_type *iatp) +{ + return (iatp->iat_layer); +} + +const char * +routename(in_addr_t *in, int numeric) +{ + char *cp; + static char line[MAXHOSTNAMELEN]; + struct hostent *hp; + in_addr_t tin; + + cp = NULL; + if (!numeric) { + hp = gethostbyaddr(in, sizeof(struct in_addr), PF_INET); + if (hp != NULL) { + cp = hp->h_name; + trimdomain(cp, strlen(cp)); + } + } + if (cp != NULL) { + strlcpy(line, cp, sizeof(line)); + } else { +#define C(x) ((x) & 0xff) + tin = ntohl(*in); + sprintf(line, "%u.%u.%u.%u", + C(tin >> 24), C(tin >> 16), C(tin >> 8), C(tin)); + } + return (line); +} + +#define NSHIFT(m) ( \ + (m) == IN_CLASSA_NET ? IN_CLASSA_NSHIFT : \ + (m) == IN_CLASSB_NET ? IN_CLASSB_NSHIFT : \ + (m) == IN_CLASSC_NET ? IN_CLASSC_NSHIFT : \ + 0) + +static void +domask(char *dst, in_addr_t addr __unused, u_long mask, int numeric) +{ + int b, i; + + if (mask == 0 || (!numeric && NSHIFT(mask) != 0)) { + *dst = '\0'; + return; + } + i = 0; + for (b = 0; b < 32; b++) + if (mask & (1 << b)) { + int bb; + + i = b; + for (bb = b + 1; bb < 32; bb++) + if (!(mask & (1 << b))) { + i = -1; /* noncontig */ + } + break; + } + if (i == -1) + sprintf(dst, "&0x%lx", mask); + else + sprintf(dst, "/%d", 32 - i); +} + +const char * +netname(in_addr_t *in, u_long mask, int numeric) +{ + char *cp = NULL; + static char line[MAXHOSTNAMELEN]; + struct netent *np = NULL; + in_addr_t i; + + i = ntohl(*in); + if (!numeric && i != 0) { + np = getnetbyaddr(i >> NSHIFT(mask), PF_INET); + if (np != NULL) { + cp = np->n_name; + trimdomain(cp, strlen(cp)); + } + } + if (cp != NULL) + strlcpy(line, cp, sizeof(line)); + else + inet_ntop(PF_INET, &in, line, sizeof(line) - 1); + domask(line + strlen(line), i, mask, numeric); + return (line); +} + +#undef NSHIFT + +#ifdef INET6 +const char * +routename6(struct sockaddr_in6 *in6, int numeric) +{ + static char line[MAXHOSTNAMELEN]; + int flag = 0; + struct sockaddr_in6 in6_local; + + in6_local.sin6_family = PF_INET6; + in6_local.sin6_len = sizeof(in6_local); + in6_local.sin6_addr = in6->sin6_addr; + in6_local.sin6_scope_id = in6->sin6_scope_id; + + if (numeric) + flag |= NI_NUMERICHOST; + + getnameinfo((struct sockaddr *)&in6_local, in6_local.sin6_len, + line, sizeof(line), NULL, 0, flag); + + return (line); +} + +const char * +netname6(struct sockaddr_in6 *in6, struct in6_addr *mask, int numeric) +{ + static char line[MAXHOSTNAMELEN]; + u_char *p = (u_char *)mask; + u_char *lim; + int masklen, flag = 0; + + if (mask) { + for (masklen = 0, lim = p + 16; p < lim; p++) { + switch (*p) { + case 0xff: + masklen += 8; + break; + case 0xfe: + masklen += 7; + break; + case 0xfc: + masklen += 6; + break; + case 0xf8: + masklen += 5; + break; + case 0xf0: + masklen += 4; + break; + case 0xe0: + masklen += 3; + break; + case 0xc0: + masklen += 2; + break; + case 0x80: + masklen += 1; + break; + case 0x00: + break; + } + } + } + else + masklen = 128; + + if (masklen == 0 && IN6_IS_ADDR_UNSPECIFIED(&in6->sin6_addr)) + return ("default"); + + if (numeric != 0) + flag |= NI_NUMERICHOST; + getnameinfo((struct sockaddr *)in6, in6->sin6_len, line, sizeof(line), + NULL, 0, flag); + + if (numeric != 0) + sprintf(&line[strlen(line)], "/%d", masklen); + + return (line); +} +#endif From owner-p4-projects@FreeBSD.ORG Mon Jul 20 17:42:06 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C16A81065673; Mon, 20 Jul 2009 17:42:05 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7FBAA1065670 for ; Mon, 20 Jul 2009 17:42:05 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6B8128FC17 for ; Mon, 20 Jul 2009 17:42:05 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KHg513077579 for ; Mon, 20 Jul 2009 17:42:05 GMT (envelope-from rene@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KHg5w4077577 for perforce@freebsd.org; Mon, 20 Jul 2009 17:42:05 GMT (envelope-from rene@FreeBSD.org) Date: Mon, 20 Jul 2009 17:42:05 GMT Message-Id: <200907201742.n6KHg5w4077577@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rene@FreeBSD.org using -f From: Rene Ladan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166316 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 17:42:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=166316 Change 166316 by rene@rene_self on 2009/07/20 17:41:58 IFC Affected files ... .. //depot/projects/docproj_nl/en_US.ISO8859-1/articles/committers-guide/article.sgml#27 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#30 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/articles/contributors/contrib.committers.sgml#27 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/articles/portbuild/article.sgml#14 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/virtualization/chapter.sgml#4 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sgml#37 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/share/sgml/authors.ent#22 integrate .. //depot/projects/docproj_nl/share/pgpkeys/pgpkeys-developers.sgml#24 integrate .. //depot/projects/docproj_nl/share/pgpkeys/pgpkeys.ent#21 integrate .. //depot/projects/docproj_nl/share/pgpkeys/yzlin.key#1 branch .. //depot/projects/docproj_nl/share/sgml/trademarks.ent#4 integrate .. //depot/projects/docproj_nl/www/en/developers.sgml#21 integrate .. //depot/projects/docproj_nl/www/share/sgml/news.xml#46 integrate .. //depot/projects/docproj_nl/www/share/sgml/press.xml#14 integrate Differences ... ==== //depot/projects/docproj_nl/en_US.ISO8859-1/articles/committers-guide/article.sgml#27 (text+ko) ==== @@ -9,7 +9,7 @@ The &os; Documentation Project - $FreeBSD: doc/en_US.ISO8859-1/articles/committers-guide/article.sgml,v 1.284 2009/06/04 09:06:16 linimon Exp $ + $FreeBSD: doc/en_US.ISO8859-1/articles/committers-guide/article.sgml,v 1.285 2009/07/18 15:46:44 keramida Exp $ 1999 @@ -42,7 +42,7 @@ start, and existing committers are strongly encouraged to review it from time to time. - Almost all FreeBSD developers have commmit rights to one or + Almost all FreeBSD developers have commit rights to one or more repositories. However, a few developers do not, and some of the information here applies to them as well. (For instance, some people only have rights to work with the Problem Report database). @@ -863,7 +863,7 @@ Good commit messages are important. They tell others why you did the changes you did, not just right here and now, but months or years from now when someone wonders why some - seemingly illogical or inefficient piece of code snuck into + seemingly illogical or inefficient piece of code sneaked into your source file. It is also an invaluable aid to deciding which changes to MFC and which not to MFC. ==== //depot/projects/docproj_nl/en_US.ISO8859-1/articles/contributors/contrib.additional.sgml#30 (text+ko) ==== @@ -1,4 +1,4 @@ - + + Configure ssh: copy /etc/ssh to /usr/local/etc/ssh and add - NoneEnabled=yes to + NoneEnabled yes to sshd_config. @@ -1660,20 +1659,12 @@ directories: squid -z - - - Test each of the TCP ports by executing - telnet hostname portnumber. - 414 (or its tunnel) should give you a few lines of status - information; 8649 should give you an - XML response. - - - Enabling the node + + Configuration on <literal>pointyhat</literal> These steps need to be taken by a portmgr acting as root on pointyhat. @@ -1696,13 +1687,6 @@ - Test each of the TCP ports by executing - telnet hostname portnumber, - where portnumber is either the native - portnumber or its tunnelled equivalent. - - - Add the public IP address to /etc/hosts.allow. (Remember, multiple machines can be on the same IP address.) @@ -1764,13 +1748,74 @@ - Add an appropriate entry to - /usr/local/etc/gmetad.conf. + Add an appropriate data_source entry to + /usr/local/etc/gmetad.conf: + + data_source "arch/location Package Build Cluster" 30 hostname + + + Enabling the node + + These steps need to be taken by a portmgr + acting as ports-arch + on pointyhat. + + + + + Ensure that ssh is working by executing + ssh hostname. + + + + + Populate /var/portbuild/scripts/ + by something like + /var/portbuild/dosetupnode arch major latest hostname. + Verify that you now have files in that directory. + + + + + Test the other TCP ports by executing + telnet hostname portnumber. + 414 (or its tunnel) should give you a few lines of status + information including arch and + osversion; 8649 should + give you an XML response from + ganglia. + + + + This step needs to be taken by a portmgr + acting as root on pointyhat. + + + + + Tell qmanager about the node. Example: + + + python /var/portbuild/evil/qmanager/qclient add + name=uniquename + arch=arch + osversion=osversion + numcpus=number + haszfs=0 + online=1 + domain=domain + primarypool=package + pools="package all" maxjobs=1 + acl="ports-arch,deny_all" + + + + ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/handbook/virtualization/chapter.sgml#4 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -970,25 +970,25 @@ role="package">emulators/vmware3), which utilized the &linux; binary compatibility layer. Shortly after the release of &os; 7.2, the Open Source Edition (OSE) of - &sun;'s VirtualBox appeared in the + Sun's &virtualbox; appeared in the Ports Collection as a native &os; program. - VirtualBox is an actively developed, + &virtualbox; is an actively developed, complete virtualization package, that is available for most operating systems including &windows;, &macos;, &linux; and &os;. It is equally - capable at running &windows; or &unix;-type guests. It comes in two + capable at running &windows; or &unix; like guests. It comes in two flavors, an open source and a proprietary edition. From the user's point of view, perhaps the most important limitation of the OSE is the lack of USB support. Other differences may be found in the Editions page of the - VirtualBox wiki, at &virtualbox; wiki, at . Currently, only the OSE is available for &os;. - Installing VirtualBox + Installing &virtualbox; - VirtualBox is available as a &os; port + &virtualbox; is available as a &os; port in emulators/virtualbox, and may be installed using the following commands: @@ -1005,7 +1005,7 @@ menu, after the installation of the guest OS is finished. A few configuration changes are needed before - VirtualBox is started for the first time. + &virtualbox; is started for the first time. The port installs a kernel module in /boot/modules which must be loaded into the running kernel: @@ -1017,7 +1017,7 @@ vboxdrv_load="YES" - VirtualBox also requires the + &virtualbox; also requires the proc file system to be mounted: @@ -1030,7 +1030,7 @@ If an error message similar to the following is observed - when VirtualBox is run from + when &virtualbox; is run from the terminal: VirtualBox: supR3HardenedExecDir: couldn't read "", errno=2 cchLink=-1 @@ -1042,15 +1042,15 @@ The vboxusers group is created during - the installation of VirtualBox. - All users that need access to VirtualBox + the installation of &virtualbox;. + All users that need access to &virtualbox; will have to be added as members of this group. The pw command may be used to add new members: &prompt.root; pw groupmod vboxusers -m yourusername - To launch VirtualBox, either select + To launch &virtualbox;, either select the Sun VirtualBox item from your graphic environment's menu, or type the following in a terminal: @@ -1058,12 +1058,12 @@ &prompt.user; VirtualBox For more information on configuring and using - VirtualBox, please visit the official + &virtualbox;, please visit the official website at . As the &os; port is very recent, it is under heavy development. For the latest information and troubleshooting instructions, please visit the relevant page in the &os; wiki, at . + url="http://wiki.FreeBSD.org/VirtualBox">. ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sgml#37 (text+ko) ==== @@ -1,7 +1,7 @@ June 24, 2009 8.0-CURRENT after SYSVIPC ABI change. + + 800105 + July 19, 2009 + 8.0-CURRENT after version bump for all + shared libraries that do not have symbol versioning + turned on. + ==== //depot/projects/docproj_nl/en_US.ISO8859-1/share/sgml/authors.ent#22 (text+ko) ==== @@ -13,7 +13,7 @@ builds for the other languages, and we will poke fun of you in public. - $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.486 2009/06/07 19:14:05 tuexen Exp $ + $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.487 2009/07/20 14:15:44 yzlin Exp $ --> aaron@FreeBSD.org"> @@ -1184,6 +1184,8 @@ yongari@FreeBSD.org"> +yzlin@FreeBSD.org"> + xride@FreeBSD.org"> zarzycki@FreeBSD.org"> ==== //depot/projects/docproj_nl/share/pgpkeys/pgpkeys-developers.sgml#24 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -736,6 +736,11 @@ &pgpkey.clive; + + &a.yzlin; + &pgpkey.yzlin; + + &a.linimon; &pgpkey.linimon; ==== //depot/projects/docproj_nl/share/pgpkeys/pgpkeys.ent#21 (text+ko) ==== @@ -1,5 +1,5 @@ - + @@ -317,6 +317,7 @@ + ==== //depot/projects/docproj_nl/share/sgml/trademarks.ent#4 (text+ko) ==== @@ -8,7 +8,7 @@ Please keep this file sorted. - $FreeBSD: doc/share/sgml/trademarks.ent,v 1.45 2009/06/06 14:05:54 blackend Exp $ + $FreeBSD: doc/share/sgml/trademarks.ent,v 1.46 2009/07/19 20:31:50 manolis Exp $ --> 3Com and HomeConnect are registered @@ -329,9 +329,9 @@ Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, - Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, and - Ultra are trademarks or registered trademarks of Sun Microsystems, - Inc. in the United States and other countries."> + Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, + Ultra and VirtualBox are trademarks or registered trademarks of + Sun Microsystems, Inc. in the United States and other countries."> Java"> Java Virtual Machine"> JavaServer Pages"> @@ -348,6 +348,7 @@ Sun Fire"> Ultra"> SunOS"> +VirtualBox"> Symantec and Ghost are registered ==== //depot/projects/docproj_nl/www/en/developers.sgml#21 (text+ko) ==== @@ -6,7 +6,7 @@ us to update author names, or the representation of those names (such as adding email addresses), by just editing a single file. -$FreeBSD: www/en/developers.sgml,v 1.228 2009/06/08 16:03:29 np Exp $ +$FreeBSD: www/en/developers.sgml,v 1.229 2009/07/20 15:41:19 yzlin Exp $ --> @@ -588,6 +588,7 @@ + ==== //depot/projects/docproj_nl/www/share/sgml/news.xml#46 (text+ko) ==== @@ -25,7 +25,7 @@ - $FreeBSD: www/share/sgml/news.xml,v 1.263 2009/07/07 16:45:36 danger Exp $ + $FreeBSD: www/share/sgml/news.xml,v 1.265 2009/07/20 15:44:53 yzlin Exp $ @@ -36,6 +36,36 @@ 7 + 20 + +

New committer: Yi-Jheng + Lin (ports)

+
+
+ + + 18 + + + &os; 8.0-BETA2 Available + +

The final stage of the &os;-8.0 Release cycle continues + with the second public beta release. The &os; 8.0-BETA2 + ISO images for Tier-1 architectures are now available for + download on most of the + &os; mirror sites. As with the first beta release, + this is not yet intended for use in a production + environment. However we encourage our users to test this + release and report any bugs and problems you may have + found. For more information about this release and + updating details please see the official + announcement.

+
+
+ + 7 ==== //depot/projects/docproj_nl/www/share/sgml/press.xml#14 (text+ko) ==== @@ -9,7 +9,7 @@ - $FreeBSD: www/share/sgml/press.xml,v 1.84 2009/06/24 01:19:43 jkoshy Exp $ + $FreeBSD: www/share/sgml/press.xml,v 1.85 2009/07/19 22:07:54 danger Exp $ @@ -17,6 +17,26 @@ 2009 + 7 + + + Why &os; 8 Won't Rewrite the Book + http://www.internetnews.com/dev-news/article.php/3830041 + InternetNews.com ‐ WebMediaBrands Inc. + http://www.internetnews.com/ + 15 July 2009 + Sean Michael Kerner +

An article about the upcoming &os; 8.0 release, which + includes interviews with Michael Lucas, author of the Absolute + &os; book, Matt Olander of iXsystems, and Kris Moore of + PC-BSD. The primary focus of the article is how &os;, even + across major releases, still keeps the disruption for users + to a minimum, and introduces new features and improvements + without forcing a paradigm shift on the users.

+
+
+ + 6 From owner-p4-projects@FreeBSD.ORG Mon Jul 20 17:59:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EAEDA1065672; Mon, 20 Jul 2009 17:59:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA7CB1065670 for ; Mon, 20 Jul 2009 17:59:24 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8D6E98FC25 for ; Mon, 20 Jul 2009 17:59:24 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KHxOLc078723 for ; Mon, 20 Jul 2009 17:59:24 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KHxOD0078721 for perforce@freebsd.org; Mon, 20 Jul 2009 17:59:24 GMT (envelope-from anchie@FreeBSD.org) Date: Mon, 20 Jul 2009 17:59:24 GMT Message-Id: <200907201759.n6KHxOD0078721@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166318 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 17:59:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=166318 Change 166318 by anchie@anchie_malimis on 2009/07/20 17:59:04 Bug fix - in case of RTM_SND, rtsock.c calculates now the length of if_announcemsghdr, and not rt_msghdr. Affected files ... .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#20 edit .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#10 edit .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#19 edit Differences ... ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#20 (text+ko) ==== @@ -41,7 +41,6 @@ #include #include #include - #include "config.h" #include #include @@ -129,6 +128,7 @@ { struct snd_packet_info *pi; struct rt_msghdr *rtm; + struct ip6_hdr *ip6; if (drop) { snd_put_buf(b); @@ -137,19 +137,38 @@ pi = (struct snd_packet_info *)(b->head); DBG(&dbg_snd, "Direction, in = %d", pi->in); +#if 0 + ip6 = sbuff_data(b); + DBG(&dbg_snd, "SRC: %s", inet_ntop(AF_INET6, &ip6->ip6_src, abuf, sizeof (abuf))); + DBG(&dbg_snd, "DST: %s", inet_ntop(AF_INET6, &ip6->ip6_dst, abuf, sizeof (abuf))); + struct nd_neighbor_solicit *ns; + struct in6_addr *tgt; + b->data += sizeof (struct ip6_hdr); + ns = (struct nd_neighbor_solicit *)(b->data); + tgt = &ns->nd_ns_target; + DBG(&dbg_snd, "DST: %s", inet_ntop(AF_INET6, tgt, abuf, sizeof (abuf))); +#endif + + DBG(&dbg_snd, "rt_msghdr = %d, if_announcemsghdr = %d\n", sizeof (struct rt_msghdr), sizeof (struct if_announcemsghdr)); + /* buffer starts with IPv6 hdr, roll back to include rtm header */ +#if 0 b->data -= sizeof (struct rt_msghdr); b->len += sizeof (struct rt_msghdr); +#endif + b->data -= sizeof (struct if_announcemsghdr); + b->len += sizeof (struct if_announcemsghdr); DBG(&dbg_snd, "%d bytes on %s", b->len, pi->ifinfo->name); rtm = sbuff_data(b); - /* RTM header already has rtm version, type, etc. set up */ + /* reusing RTM header received from kernel */ rtm->rtm_msglen = b->len; rtm->rtm_addrs = 0; + rtm->rtm_index = pi->ifinfo->ifidx; - if (send(sndsock, rtm, rtm->rtm_msglen, 0) < 0) { + if (send(sndsock, rtm, b->len, 0) < 0) { DBG(&dbg_snd, "Failed to send routing message back to kernel."); perror("Failed"); snd_put_buf(b); @@ -263,6 +282,7 @@ switch (rtm->rtm_type) { case RTM_IFANNOUNCE: /* XXX: Do we need this? */ + DBG(&dbg_snd, "RTM_IFANNOUNCE"); break; case RTM_SND: ifan = sbuff_data(b); @@ -282,8 +302,11 @@ case RTM_SND_OUT: applog(LOG_ERR, "RTM_SND_OUT"); /* n = RTM hdr + ip6_hdr + icmp6len */ +#if 0 if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { - DBG(&dbg_snd, "invalid pkt (not enough for rtm hedaer"); +#endif + if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { + DBG(&dbg_snd, "invalid pkt (not enough for rtm header"); goto done; } ==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#10 (text+ko) ==== @@ -65,6 +65,7 @@ #include #endif #include +#include #if defined(INET) || defined(INET6) #ifdef SCTP @@ -523,27 +524,34 @@ struct rtentry *saved_nrt; case RTM_SND: - printf("RTM_SND!"); + printf("RTM_SND!\n"); struct if_announcemsghdr *ifan; ifan = mtod(m, struct if_announcemsghdr *); switch (ifan->ifan_what) { case RTM_SND_IN: ifp = ifnet_byindex(rtm->rtm_index); - m_adj(m, sizeof (struct rt_msghdr)); - printf("rtm->rtm_index = %d\n", rtm->rtm_index); - if (ifp) + if (ifp) { + m_adj(m, sizeof (struct if_announcemsghdr)); + printf("rtm->rtm_index = %d\n", rtm->rtm_index); send_output_hook(m, ifp, SND_IN); + } else { + printf("route_output: ifp == NULL"); + } + return (0); break; case RTM_SND_OUT: - ifp = m->m_pkthdr.rcvif; - printf("rtm->rtm_index = %d\n", rtm->rtm_index); + ifp = ifnet_byindex(rtm->rtm_index); + if (ifp) { #if 0 - ifp = ifnet_byindex(rtm->rtm_index); + m_adj(m, sizeof (struct if_announcemsghdr)); #endif - m_adj(m, sizeof (struct rt_msghdr)); - if (ifp) + printf("if_index = %u\n", ifp->if_index); + m->m_data += sizeof (struct if_announcemsghdr); send_output_hook(m, ifp, SND_OUT); + } else + printf("route_output: ifp == NULL"); + return (0); break; } @@ -913,6 +921,7 @@ case RTM_IFANNOUNCE: case RTM_IEEE80211: + case RTM_SND: len = sizeof(struct if_announcemsghdr); break; ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#19 (text+ko) ==== @@ -10,19 +10,20 @@ #include #include +#include #include #include #include -#include +#include static int send_output(struct mbuf *m, struct ifnet *ifp, int in) { struct ip6_hdr *ip6; struct sockaddr_in6 *dst; - struct icmp6_hdr *icmp6 + struct icmp6_hdr *icmp6; int icmp6len; printf("send_output\n"); @@ -38,11 +39,12 @@ icmp6len = m->m_pkthdr.len - sizeof(struct ip6_hdr); printf("send_output: m_pkthdr.len = %d\n", m->m_pkthdr.len); - icmp6 = (struct icmp6_hdr *)((caddr_t)ip6 + sizeof(struct ip6_hdr)); + ip6 = mtod(m, struct ip6_hdr *); + icmp6 = (struct icmp6_hdr *)(ip6 + 1); switch (icmp6->icmp6_code) { case ND_NEIGHBOR_SOLICIT: /* From icmp6.c: incpm6_input(). */ - nd6_ns_input(m, sizeof(struct ip6_hdr), icmp6len); + //nd6_ns_input(m, sizeof(struct ip6_hdr), icmp6len); break; } @@ -52,19 +54,32 @@ case SND_OUT: ip6 = mtod(m, struct ip6_hdr *); + { + char ip6buf[INET6_ADDRSTRLEN]; + printf("XXX-AK, send.c: ifp=%p, xname=%s, dst=%s\n", ifp, ifp->if_xname, ip6_sprintf(ip6buf, &ip6->ip6_dst)); + } + + dst = malloc (sizeof (struct sockaddr_in6), M_TEMP, M_NOWAIT); + bzero(dst, sizeof(*dst)); dst->sin6_len = sizeof(struct sockaddr_in6); dst->sin6_family = AF_INET6; dst->sin6_addr = ip6->ip6_dst; + { + char ip6buf[INET6_ADDRSTRLEN]; + printf("XXX-BZ, send.c: ifp=%p, xname=%s, dst=%s\n", ifp, ifp->if_xname, ip6_sprintf(ip6buf, &((struct sockaddr_in6 *)dst)->sin6_addr)); + } + /* * From nd6.c: nd6_output_lle(). - * ToFix: kernel panic: Duplicate free of item (mbuf). */ return (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); //return (0); break; } + + return (0); } static int From owner-p4-projects@FreeBSD.ORG Mon Jul 20 18:30:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9553E1065678; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 552D01065676 for ; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4306A8FC20 for ; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KIUxS9082196 for ; Mon, 20 Jul 2009 18:30:59 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KIUx02082194 for perforce@freebsd.org; Mon, 20 Jul 2009 18:30:59 GMT (envelope-from fangwang@FreeBSD.org) Date: Mon, 20 Jul 2009 18:30:59 GMT Message-Id: <200907201830.n6KIUx02082194@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 166320 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 18:31:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=166320 Change 166320 by fangwang@fangwang_utobsd on 2009/07/20 18:30:27 Add uto packets stats for netstat -s. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#7 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#9 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#8 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#12 edit .. //depot/projects/soc2009/tcputo/src/usr.bin/netstat/inet.c#2 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#7 (text+ko) ==== @@ -1197,6 +1197,7 @@ if (to.to_flags & TOF_UTO) { tp->uto_flags |= TCPUTO_RCVD; tp->rcv_uto = to.to_uto; + TCPSTAT_INC(tcps_rcvuto); } /* ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#9 (text+ko) ==== @@ -718,12 +718,14 @@ * the amount of state information TCP must keep for connections in non-synchronized states." * So even though UTO options is put in SYN segment successfully, we still transmit it. */ - if ((flags & TH_SYN) == 0 && - tp->uto_flags & (TCPUTO_NEED | TCPUTO_SENDING) && + if (tp->uto_flags & (TCPUTO_NEED | TCPUTO_SENDING) && (to.to_flags & TOF_UTO) == 0) { - tp->uto_flags &= ~(TCPUTO_NEED | TCPUTO_SENDING); - tp->uto_flags |= TCPUTO_SENDING; - tp->uto_carrier = tp->snd_nxt + len; + if ((flags & TH_SYN) == 0) { + tp->uto_flags &= ~(TCPUTO_NEED | TCPUTO_SENDING); + tp->uto_flags |= TCPUTO_SENDING; + tp->uto_carrier = tp->snd_nxt + len; + } + TCPSTAT_INC(tcps_snduto); } } ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#8 (text+ko) ==== @@ -1212,6 +1212,10 @@ ti->tcpi_snd_wscale = tp->snd_scale; ti->tcpi_rcv_wscale = tp->rcv_scale; } + if (tp->uto_flags & TCPUTO_IMPL) { + ti->tcpi_options |= TCPI_OPT_UTO; + ti->tcpi_uto = tp->t_uto_impl / hz; + } ti->tcpi_rtt = ((u_int64_t)tp->t_srtt * tick) >> TCP_RTT_SHIFT; ti->tcpi_rttvar = ((u_int64_t)tp->t_rttvar * tick) >> TCP_RTTVAR_SHIFT; ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#12 (text+ko) ==== @@ -403,6 +403,7 @@ u_long tcps_sndurg; /* packets sent with URG only */ u_long tcps_sndwinup; /* window update-only packets sent */ u_long tcps_sndctrl; /* control (SYN|FIN|RST) packets sent */ + u_long tcps_snduto; /* packets sent with tcp UTO option */ u_long tcps_rcvtotal; /* total packets received */ u_long tcps_rcvpack; /* packets received in sequence */ @@ -426,6 +427,7 @@ u_long tcps_rcvackpack; /* rcvd ack packets */ u_long tcps_rcvackbyte; /* bytes acked by rcvd acks */ u_long tcps_rcvwinupd; /* rcvd window update packets */ + u_long tcps_rcvuto; /* packets received with tcp UTO option */ u_long tcps_pawsdrop; /* segments dropped due to PAWS */ u_long tcps_predack; /* times hdr predict ok for acks */ u_long tcps_preddat; /* times hdr predict ok for data pkts */ ==== //depot/projects/soc2009/tcputo/src/usr.bin/netstat/inet.c#2 (text+ko) ==== @@ -607,6 +607,7 @@ p(tcps_sndprobe, "\t\t%lu window probe packet%s\n"); p(tcps_sndwinup, "\t\t%lu window update packet%s\n"); p(tcps_sndctrl, "\t\t%lu control packet%s\n"); + p(tcps_snduto, "\t\t%lu tcp uto enabled packet%s\n"); p(tcps_rcvtotal, "\t%lu packet%s received\n"); p2(tcps_rcvackpack, tcps_rcvackbyte, "\t\t%lu ack%s (for %lu byte%s)\n"); @@ -623,6 +624,7 @@ "\t\t%lu out-of-order packet%s (%lu byte%s)\n"); p2(tcps_rcvpackafterwin, tcps_rcvbyteafterwin, "\t\t%lu packet%s (%lu byte%s) of data after window\n"); + p(tcps_rcvuto, "\t\t%lu tcp uto enabled packet%s\n"); p(tcps_rcvwinprobe, "\t\t%lu window probe%s\n"); p(tcps_rcvwinupd, "\t\t%lu window update packet%s\n"); p(tcps_rcvafterclose, "\t\t%lu packet%s received after close\n"); From owner-p4-projects@FreeBSD.ORG Mon Jul 20 18:42:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AA8951065674; Mon, 20 Jul 2009 18:42:12 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A6D31065670 for ; Mon, 20 Jul 2009 18:42:12 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 08D438FC13 for ; Mon, 20 Jul 2009 18:42:12 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KIgBRN083039 for ; Mon, 20 Jul 2009 18:42:11 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KIgBxJ083037 for perforce@freebsd.org; Mon, 20 Jul 2009 18:42:11 GMT (envelope-from dforsyth@FreeBSD.org) Date: Mon, 20 Jul 2009 18:42:11 GMT Message-Id: <200907201842.n6KIgBxJ083037@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 166323 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 18:42:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=166323 Change 166323 by dforsyth@squirrel on 2009/07/20 18:41:23 Fix build issue? Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/Makefile#12 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/Makefile#12 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Mon Jul 20 19:16:54 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 51BF51065743; Mon, 20 Jul 2009 19:16:53 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED5EE1065676 for ; Mon, 20 Jul 2009 19:16:49 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C315B8FC08 for ; Mon, 20 Jul 2009 19:16:49 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KJGnWT086517 for ; Mon, 20 Jul 2009 19:16:49 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KJGnLL086515 for perforce@freebsd.org; Mon, 20 Jul 2009 19:16:49 GMT (envelope-from truncs@FreeBSD.org) Date: Mon, 20 Jul 2009 19:16:49 GMT Message-Id: <200907201916.n6KJGnLL086515@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166326 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 19:16:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=166326 Change 166326 by truncs@aditya on 2009/07/20 19:15:56 Use the new group descriptors implementation and remove unused functions. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#31 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#31 (text+ko) ==== @@ -54,7 +54,6 @@ static daddr_t ext2_alloccg(struct inode *, int, daddr_t, int); static u_long ext2_dirpref(struct m_ext2fs *); static void ext2_fserr(struct m_ext2fs *, u_int, char *); -static struct ext2_gd * get_group_desc2(struct m_ext2fs *, int, struct buf **); static u_long ext2_hashalloc(struct inode *, int, long, int, daddr_t (*)(struct inode *, int, daddr_t, int)); @@ -457,14 +456,11 @@ { struct m_ext2fs *fs; struct buf *bp; - struct buf *bh; - struct ext2_gd *gdp = NULL; int cg, error; char *bbp; fs = ip->i_e2fs; cg = dtog(fs, bno); - gdp = get_group_desc2(fs, cg, &bh); if ((u_int)bno >= fs->e2fs->e2fs_bcount) { printf("bad block %lld, ino %llu\n", (long long)bno, (unsigned long long)ip->i_number); @@ -472,7 +468,7 @@ return; } error = bread(ip->i_devvp, - fsbtodb(fs, gdp->ext2bgd_b_bitmap), + fsbtodb(fs, fs->e2fs_gd[cg].ext2bgd_b_bitmap), (int)fs->e2fs_bsize, NOCRED, &bp); if (error) { brelse(bp); @@ -487,8 +483,7 @@ } clrbit(bbp, bno); fs->e2fs->e2fs_fbcount++; - gdp->ext2bgd_nbfree++; - mark_buffer_dirty2(bh); + fs->e2fs_gd[cg].ext2bgd_nbfree++; fs->e2fs_fmod = 1; bdwrite(bp); } @@ -507,8 +502,6 @@ struct m_ext2fs *fs; struct inode *pip; struct buf *bp; - struct buf *bh; - struct ext2_gd * gdp = NULL; int error, cg; char * ibp; /* mode_t save_i_mode; */ @@ -519,22 +512,9 @@ panic("ext2_vfree: range: devvp = %p, ino = %d, fs = %s", pip->i_devvp, ino, fs->e2fs_fsmnt); -/* ext2_debug("ext2_vfree (%d, %d) called\n", pip->i_number, mode); - */ - - /* we need to make sure that ext2_free_inode can adjust the - used_dir_counts in the group summary information - I'd - really like to know what the rationale behind this - 'set i_mode to zero to denote an unused inode' is - */ -/* save_i_mode = pip->i_mode; - pip->i_mode = mode; - ext2_free_inode(pip); - pip->i_mode = save_i_mode; */ cg = ino_to_cg(fs, ino); - gdp = get_group_desc2(fs, cg, &bh); error = bread(pip->i_devvp, - fsbtodb(fs, gdp->ext2bgd_i_bitmap), + fsbtodb(fs, fs->e2fs_gd[cg].ext2bgd_i_bitmap), (int)fs->e2fs_bsize, NOCRED, &bp); if (error) { brelse(bp); @@ -550,11 +530,10 @@ } clrbit(ibp, ino); fs->e2fs->e2fs_ficount++; - gdp->ext2bgd_nifree++; + fs->e2fs_gd[cg].ext2bgd_nifree++; if ((mode & IFMT) == IFDIR) { - gdp->ext2bgd_ndirs--; + fs->e2fs_gd[cg].ext2bgd_ndirs--; } - mark_buffer_dirty2(bh); fs->e2fs_fmod = 1; bdwrite(bp); return (0); @@ -587,16 +566,14 @@ ext2_dirpref(struct m_ext2fs *fs) { int cg, maxspace, mincg, avgifree; - struct ext2_gd *gdp = NULL; avgifree = fs->e2fs->e2fs_ficount / fs->e2fs_gcount; maxspace = 0; mincg = -1; for (cg = 0; cg < fs->e2fs_gcount; cg++) { - gdp = get_group_desc2(fs, cg, NULL); - if ( gdp->ext2bgd_nifree >= avgifree) { - if (mincg == -1 || gdp->ext2bgd_nbfree > maxspace) { + if ( fs->e2fs_gd[cg].ext2bgd_nifree >= avgifree) { + if (mincg == -1 || fs->e2fs_gd[cg].ext2bgd_nbfree > maxspace) { mincg = cg; - maxspace = gdp->ext2bgd_nbfree; + maxspace = fs->e2fs_gd[cg].ext2bgd_nbfree; } } } @@ -666,17 +643,14 @@ struct m_ext2fs *fs; char *bbp; struct buf *bp; - struct buf *bh; - struct ext2_gd *gdp = NULL; /* XXX ondisk32 */ int error, bno, start, end, loc; fs = ip->i_e2fs; - gdp = get_group_desc2(fs, cg, &bh); - if (gdp->ext2bgd_nbfree == 0) + if (fs->e2fs_gd[cg].ext2bgd_nbfree == 0) return (0); error = bread(ip->i_devvp, fsbtodb(fs, - gdp->ext2bgd_b_bitmap), + fs->e2fs_gd[cg].ext2bgd_b_bitmap), (int)fs->e2fs_bsize, NOCRED, &bp); if (error) { brelse(bp); @@ -734,8 +708,7 @@ #endif setbit(bbp, (daddr_t)bno); fs->e2fs->e2fs_fbcount--; - gdp->ext2bgd_nbfree--; - mark_buffer_dirty2(bh); + fs->e2fs_gd[cg].ext2bgd_nbfree--; fs->e2fs_fmod = 1; bdwrite(bp); return (cg * fs->e2fs->e2fs_fpg + fs->e2fs->e2fs_first_dblock + bno); @@ -752,22 +725,18 @@ struct m_ext2fs *fs; char *ibp; struct buf *bp; - struct buf *bh; - struct ext2_gd *gdp = NULL; int error, start, len, loc, map, i; uprintf("1\n"); ipref--; /* to avoid a lot of (ipref -1) */ if (ipref == -1) ipref = 0; fs = ip->i_e2fs; - gdp = get_group_desc2(fs, cg, &bh); uprintf("2\n"); - if (gdp->ext2bgd_nifree == 0) + if (fs->e2fs_gd[cg].ext2bgd_nifree == 0) return (0); lock_super(DEVVP(ip)); - uprintf("%d\n", gdp->ext2bgd_nifree); error = bread(ip->i_devvp, fsbtodb(fs, - gdp->ext2bgd_i_bitmap), + fs->e2fs_gd[cg].ext2bgd_i_bitmap), (int)fs->e2fs_bsize, NOCRED, &bp); if (error) { brelse(bp); @@ -808,19 +777,15 @@ /* NOTREACHED */ gotit: setbit(ibp, ipref); - gdp->ext2bgd_nifree--; -/* bwrite(bh);*/ - mark_buffer_dirty2(bh); + fs->e2fs_gd[cg].ext2bgd_nifree--; fs->e2fs->e2fs_ficount--; fs->e2fs_fmod = 1; if ((mode & IFMT) == IFDIR) { - gdp->ext2bgd_ndirs++; + fs->e2fs_gd[cg].ext2bgd_ndirs++; } -/* mark_buffer_dirty2(bh); */ -/* mark_buffer_dirty2(bp); */ uprintf("4\n"); bdwrite(bp); - uprintf("%d\n", gdp->ext2bgd_nifree); + uprintf("%d\n", fs->e2fs_gd[cg].ext2bgd_nifree); unlock_super(DEVVP(ip)); return (cg * fs->e2fs->e2fs_ipg + ipref +1); } @@ -870,35 +835,6 @@ /* NOTREACHED */ } -/* - * This function is taken from ext2_linux_ialloc.c and is under GPL. NetBSD has e2fs_gd which contains all the group desc and is - * intialized at the time of mounting. - */ -struct ext2_gd * get_group_desc2(struct m_ext2fs * fs, int cg, struct buf ** bh) { - - unsigned long group_desc; - unsigned long desc; - struct ext2_gd * gdp; - - if (cg >= fs->e2fs_gcount) - panic ("get_group_desc: " - "block_group >= groups_count - " - "block_group = %d, groups_count = %d", - cg, fs->e2fs_gcount); - - group_desc = cg / EXT2_DESC_PER_BLOCK(fs); - desc = cg % EXT2_DESC_PER_BLOCK(fs); - if (!fs->e2fs_group_desc[group_desc]) - panic ( "get_group_desc:" - "Group descriptor not loaded - " - "block_group = %d, group_desc = %lu, desc = %lu", - cg, group_desc, desc); - gdp = (struct ext2_gd *) - fs->e2fs_group_desc[group_desc]->b_data; - if (bh) - *bh = fs->e2fs_group_desc[group_desc]; - return gdp + desc; -} int cg_has_sb(int i) { @@ -914,11 +850,4 @@ return 0; } -void mark_buffer_dirty2(struct buf *bh) -{ - int s; - s = splbio(); - bh->b_flags |= B_DIRTY; - splx(s); -} From owner-p4-projects@FreeBSD.ORG Mon Jul 20 19:51:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 141A01065674; Mon, 20 Jul 2009 19:51:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C720C1065672 for ; Mon, 20 Jul 2009 19:51:28 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id AA6E38FC1B for ; Mon, 20 Jul 2009 19:51:28 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KJpSv3089119 for ; Mon, 20 Jul 2009 19:51:28 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KJpSU0089117 for perforce@freebsd.org; Mon, 20 Jul 2009 19:51:28 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 20 Jul 2009 19:51:28 GMT Message-Id: <200907201951.n6KJpSU0089117@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166331 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 19:51:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=166331 Change 166331 by pgj@petymeg-current on 2009/07/20 19:51:11 Improve netstat_interface(), add code for link-level addresses. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#30 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_if.c#2 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#33 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#30 (text+ko) ==== @@ -231,11 +231,22 @@ const struct face_type *netstat_it_get_in(const struct interface_type *); const struct face_type *netstat_it_get_out(const struct interface_type *); +int netstat_it_get_addrcnt(const struct interface_type *); +const struct intfaddr_type * +netstat_it_get_address(const struct interface_type *, int index); + +int netstat_it_get_mcast_addrcnt(const struct interface_type *); +const struct intfaddr_type * +netstat_it_get_mcast_address(const struct interface_type *, int index); + u_int64_t netstat_ft_get_packets(const struct face_type *); u_int64_t netstat_ft_get_bytes(const struct face_type *); u_int64_t netstat_ft_get_mcasts(const struct face_type *); u_int64_t netstat_ft_get_errors(const struct face_type *); +int netstat_iat_get_family(const struct intfaddr_type *); +const char *netstat_iat_get_name(const struct intfaddr_type *); +const char *netstat_iat_get_subnet(const struct intfaddr_type *); enum intfaddr_layer netstat_iat_get_layer(const struct intfaddr_type *); /* Interface addresses: */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_if.c#2 (text+ko) ==== @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -78,7 +79,15 @@ struct ifnethead ifnethead; struct ifnet ifnet; struct ifaddr ifaddr; - struct sockaddr sa; + union { + struct sockaddr sa; + struct sockaddr_dl dl; + struct sockaddr_in in; +#ifdef INET6 + struct sockaddr_in6 in6; +#endif + struct sockaddr_ipx ipx; + } sa; struct ifmultiaddr ifmultiaddr; struct interface_type *itp; u_long ifn_addr; @@ -120,7 +129,7 @@ ifa_addr = (u_long)TAILQ_NEXT(&ifaddr, ifa_link)) { KREAD(ifa_addr, ifaddr); KREAD(ifaddr.ifa_addr, sa); - ifaddr.ifa_addr = &sa; + ifaddr.ifa_addr = &sa.sa; /* List addresses with the given protocol. */ if (domain != PF_UNSPEC && domain != ifaddr.ifa_addr->sa_family) @@ -134,7 +143,7 @@ ifma_addr = (u_long)TAILQ_NEXT(&ifmultiaddr, ifma_link)) { KREAD(ifma_addr, ifmultiaddr); KREAD(ifmultiaddr.ifma_addr, sa); - ifmultiaddr.ifma_addr = &sa; + ifmultiaddr.ifma_addr = &sa.sa; if (domain != PF_UNSPEC && domain != ifmultiaddr.ifma_addr->sa_family) continue; @@ -180,6 +189,7 @@ { struct sockaddr *sa; struct sockaddr_in *sa_in; + struct sockaddr_dl *sa_dl; struct in_ifaddr *in; #ifdef INET6 struct in6_ifaddr *in6; @@ -188,8 +198,12 @@ struct intfaddr_type *ifap; + char *cp, *p; + int n; + sa = (struct sockaddr *)ifa->ifa_addr; sa_in = (struct sockaddr_in *)sa; + sa_dl = (struct sockaddr_dl *)sa; in = (struct in_ifaddr *)sa; in6 = (struct in6_ifaddr *)sa; ipx = (struct ipx_ifaddr *)sa; @@ -217,6 +231,20 @@ case PF_APPLETALK: break; case PF_LINK: + ifap->iat_address_len = sizeof(struct sockaddr_dl); + ifap->iat_address = malloc(ifap->iat_address_len); + if (ifap->iat_address != NULL) + memcpy(ifap->iat_address, sa_dl, ifap->iat_address_len); + ifap->iat_network = NULL; + sprintf(ifap->iat_subnet, "", sa_dl->sdl_index); + cp = (char *)LLADDR(sa_dl); + n = sa_dl->sdl_alen; + p = ifap->iat_name; + while (--n >= 0) { + sprintf(p, "%02x%s", *cp++ & 0xff, n > 0 ? ":" : ""); + p += 3; + } + ifap->iat_layer = layer_Link; break; default: break; @@ -229,9 +257,14 @@ extract_if_maddress(struct ifmultiaddr *ifma, struct interface_type *itp) { struct sockaddr *sa; + struct sockaddr_dl *sa_dl; struct intfaddr_type *ifap; + char *cp, *p; + int n; + sa = ifma->ifma_addr; + sa_dl = (struct sockaddr_dl *)sa; /* Cannot store more addresses. */ if (itp->it_maddrcnt == IFTYPE_MAXADDRCNT) @@ -250,6 +283,20 @@ break; #endif /* INET6 */ case PF_LINK: + ifap->iat_address_len = sizeof(struct sockaddr_dl); + ifap->iat_address = malloc(ifap->iat_address_len); + if (ifap->iat_address != NULL) + memcpy(ifap->iat_address, sa_dl, ifap->iat_address_len); + ifap->iat_network = NULL; + sprintf(ifap->iat_subnet, "", sa_dl->sdl_index); + cp = (char *)LLADDR(sa_dl); + n = sa_dl->sdl_alen; + p = ifap->iat_name; + while (--n >= 0) { + sprintf(p, "%02x%s", *cp++ & 0xff, n > 0 ? ":" : ""); + p += 3; + } + ifap->iat_layer = layer_Link; break; } ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#33 (text+ko) ==== @@ -914,6 +914,34 @@ return (&itp->it_out); } +int +netstat_it_get_addrcnt(const struct interface_type *itp) +{ + return (itp->it_addrcnt); +} + +const struct intfaddr_type * +netstat_it_get_address(const struct interface_type *itp, int index) +{ + if (0 <= index && index < itp->it_addrcnt) + return (itp->it_address[index]); + return (NULL); +} + +int +netstat_it_get_mcast_addrcnt(const struct interface_type *itp) +{ + return (itp->it_maddrcnt); +} + +const struct intfaddr_type * +netstat_it_get_mcast_address(const struct interface_type *itp, int index) +{ + if (0 <= index && index < itp->it_maddrcnt) + return (itp->it_maddress[index]); + return (NULL); +} + u_int64_t netstat_ft_get_packets(const struct face_type *ftp) { @@ -938,6 +966,24 @@ return (ftp->ft_errors); } +int +netstat_iat_get_family(const struct intfaddr_type *iatp) +{ + return (iatp->iat_family); +} + +const char * +netstat_iat_get_name(const struct intfaddr_type *iatp) +{ + return (iatp->iat_name); +} + +const char * +netstat_iat_get_subnet(const struct intfaddr_type *iatp) +{ + return (iatp->iat_subnet); +} + enum intfaddr_layer netstat_iat_get_layer(const struct intfaddr_type *iatp) { From owner-p4-projects@FreeBSD.ORG Mon Jul 20 20:41:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E1FAF10656EC; Mon, 20 Jul 2009 20:41:23 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8E57610656DF for ; Mon, 20 Jul 2009 20:41:23 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7BF858FC13 for ; Mon, 20 Jul 2009 20:41:23 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KKfN6G093639 for ; Mon, 20 Jul 2009 20:41:23 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KKfNHl093637 for perforce@freebsd.org; Mon, 20 Jul 2009 20:41:23 GMT (envelope-from anchie@FreeBSD.org) Date: Mon, 20 Jul 2009 20:41:23 GMT Message-Id: <200907202041.n6KKfNHl093637@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166335 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 20:41:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=166335 Change 166335 by anchie@anchie_malimis on 2009/07/20 20:40:34 On the way back to kernel, mbuf flags (specifically M_MCAST) where changed. mbuf received through rtsock.c: route_output() did not have M_MCAST flag set despite that the address was ff02::1:x. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#20 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#20 (text+ko) ==== @@ -54,12 +54,14 @@ case SND_OUT: ip6 = mtod(m, struct ip6_hdr *); + if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) + m->m_flags |= M_MCAST; + { char ip6buf[INET6_ADDRSTRLEN]; printf("XXX-AK, send.c: ifp=%p, xname=%s, dst=%s\n", ifp, ifp->if_xname, ip6_sprintf(ip6buf, &ip6->ip6_dst)); } - dst = malloc (sizeof (struct sockaddr_in6), M_TEMP, M_NOWAIT); bzero(dst, sizeof(*dst)); dst->sin6_len = sizeof(struct sockaddr_in6); @@ -87,6 +89,9 @@ { struct ip6_hdr *ip6; + if (m->m_flags & M_MCAST) + printf("send_input: M_MCAST packet\n"); + ip6 = mtod(m, struct ip6_hdr *); /* From owner-p4-projects@FreeBSD.ORG Tue Jul 21 01:02:08 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 62922106567B; Tue, 21 Jul 2009 01:02:08 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 217101065679 for ; Tue, 21 Jul 2009 01:02:08 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 04FF98FC17 for ; Tue, 21 Jul 2009 01:02:08 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L127JU036584 for ; Tue, 21 Jul 2009 01:02:08 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L127qe036582 for perforce@freebsd.org; Tue, 21 Jul 2009 01:02:07 GMT (envelope-from pgj@FreeBSD.org) Date: Tue, 21 Jul 2009 01:02:07 GMT Message-Id: <200907210102.n6L127qe036582@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166340 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 01:02:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=166340 Change 166340 by pgj@petymeg-current on 2009/07/21 01:01:29 Some netstat_interface() improvements: - Eliminate the need for extract_if_maddress() - Add support for PF_INET, PF_INET6 - Fix the problem of sockaddr types of different sizes - Fix & improve address resolution - Add further accessor functions Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#31 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_if.c#3 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#28 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#34 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#31 (text+ko) ==== @@ -245,9 +245,14 @@ u_int64_t netstat_ft_get_errors(const struct face_type *); int netstat_iat_get_family(const struct intfaddr_type *); -const char *netstat_iat_get_name(const struct intfaddr_type *); -const char *netstat_iat_get_subnet(const struct intfaddr_type *); +const char *netstat_iat_get_address(const struct intfaddr_type *, int numeric); +const char *netstat_iat_get_network(const struct intfaddr_type *, int numeric); enum intfaddr_layer netstat_iat_get_layer(const struct intfaddr_type *); +u_int64_t netstat_iat_get_ipackets(const struct intfaddr_type *); +u_int64_t netstat_iat_get_ibytes(const struct intfaddr_type *); +u_int64_t netstat_iat_get_opackets(const struct intfaddr_type *); +u_int64_t netstat_iat_get_obytes(const struct intfaddr_type *); +u_int32_t netstat_iat_get_refcount(const struct intfaddr_type *); /* Interface addresses: */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_if.c#3 (text+ko) ==== @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -56,9 +57,8 @@ static const char *const if_symbol[] = { "_ifnet" }; static void extract_if_data(struct ifnet *ifp, struct interface_type *itp); -static void extract_if_address(struct ifaddr *ifa, struct interface_type *itp); -static void extract_if_maddress(struct ifmultiaddr *ifma, - struct interface_type *itp); +static struct intfaddr_type *extract_if_address(int type, void *ifaddr, + void *saddr, struct interface_type *itp); #define KREAD(off, dst) do { \ if ((list->itl_error = (kread_data(kvm, (uintptr_t)(off), &(dst), \ @@ -78,7 +78,14 @@ struct ifnethead ifnethead; struct ifnet ifnet; - struct ifaddr ifaddr; + union { + struct ifaddr ifa; + struct in_ifaddr in; +#ifdef INET6 + struct in6_ifaddr in6; +#endif + struct ipx_ifaddr ipx; + } ifaddr; union { struct sockaddr sa; struct sockaddr_dl dl; @@ -126,15 +133,19 @@ /* Interface addresses. */ for (ifa_addr = (u_long)TAILQ_FIRST(&ifnet.if_addrhead); ifa_addr != 0; - ifa_addr = (u_long)TAILQ_NEXT(&ifaddr, ifa_link)) { + ifa_addr = (u_long)TAILQ_NEXT(&ifaddr.ifa, ifa_link)) { KREAD(ifa_addr, ifaddr); - KREAD(ifaddr.ifa_addr, sa); - ifaddr.ifa_addr = &sa.sa; + KREAD(ifaddr.ifa.ifa_addr, sa); + ifaddr.ifa.ifa_addr = &sa.sa; /* List addresses with the given protocol. */ if (domain != PF_UNSPEC && - domain != ifaddr.ifa_addr->sa_family) + domain != ifaddr.ifa.ifa_addr->sa_family) continue; - extract_if_address(&ifaddr, itp); + if (itp->it_addrcnt >= IFTYPE_MAXADDRCNT) + continue; + itp->it_address[itp->it_addrcnt++] = + extract_if_address(NETSTAT_IF_IFADDR, + &ifaddr.ifa, ifaddr.ifa.ifa_addr, itp); } /* Multicast addresses. */ @@ -147,7 +158,11 @@ if (domain != PF_UNSPEC && domain != ifmultiaddr.ifma_addr->sa_family) continue; - extract_if_maddress(&ifmultiaddr, itp); + if (itp->it_maddrcnt >= IFTYPE_MAXADDRCNT) + continue; + itp->it_maddress[itp->it_maddrcnt++] = + extract_if_address(NETSTAT_IF_IFMULTIADDR, + &ifmultiaddr, ifmultiaddr.ifma_addr, itp); } } } else { @@ -184,11 +199,15 @@ itp->it_flags |= NETSTAT_IF_UP; } -void -extract_if_address(struct ifaddr *ifa, struct interface_type *itp) +struct intfaddr_type * +extract_if_address(int type, void *ifaddr, void *saddr, + struct interface_type *itp) { struct sockaddr *sa; struct sockaddr_in *sa_in; +#ifdef INET6 + struct sockaddr_in6 *sa_in6; +#endif struct sockaddr_dl *sa_dl; struct in_ifaddr *in; #ifdef INET6 @@ -196,34 +215,94 @@ #endif struct ipx_ifaddr *ipx; + struct ifmultiaddr *ifma; struct intfaddr_type *ifap; char *cp, *p; int n; - sa = (struct sockaddr *)ifa->ifa_addr; + sa = (struct sockaddr *)saddr; sa_in = (struct sockaddr_in *)sa; + sa_in6 = (struct sockaddr_in6 *)sa; sa_dl = (struct sockaddr_dl *)sa; - in = (struct in_ifaddr *)sa; - in6 = (struct in6_ifaddr *)sa; - ipx = (struct ipx_ifaddr *)sa; - /* Cannot store more addresses. */ - if (itp->it_addrcnt == IFTYPE_MAXADDRCNT) - return; + in = (struct in_ifaddr *)ifaddr; + in6 = (struct in6_ifaddr *)in; + ipx = (struct ipx_ifaddr *)in; + ifma = (struct ifmultiaddr *)ifaddr; - ifap = itp->it_address[itp->it_addrcnt] = - _netstat_iat_allocate(sa->sa_family, NETSTAT_IF_IFADDR); + ifap = _netstat_iat_allocate(sa->sa_family, type); if (ifap == NULL) - return; + return (NULL); switch (sa->sa_family) { case PF_UNSPEC: + ifap->iat_address = strdup("none"); + ifap->iat_network = strdup("none"); break; case PF_INET: + ifap->iat_sockaddr_len = sizeof(struct sockaddr_in); + ifap->iat_sockaddr = malloc(ifap->iat_sockaddr_len); + if (ifap->iat_sockaddr != NULL) + memcpy(ifap->iat_sockaddr, sa_in, + ifap->iat_sockaddr_len); + ifap->iat_ifaddr_len = sizeof(struct in_ifaddr); + if (ifap->iat_ifaddr != NULL) + memcpy(ifap->iat_ifaddr, in, ifap->iat_ifaddr_len); + strlcpy(ifap->iat_ni_network, + netname(htonl(in->ia_subnet), in->ia_subnetmask, 1), + sizeof(ifap->iat_ni_network)); + ifap->iat_network = strdup(netname(htonl(in->ia_subnet), + in->ia_subnetmask, 0)); + inet_ntop(PF_INET, &sa_in->sin_addr, ifap->iat_ni_address, + sizeof(ifap->iat_ni_address)); + ifap->iat_address = strdup(routename(sa_in->sin_addr.s_addr, 0)); + ifap->iat_layer = layer_Network; + switch (type) { + case NETSTAT_IF_IFADDR: + ifap->iat_refcount = in->ia_ifa.ifa_refcnt; + break; + case NETSTAT_IF_IFMULTIADDR: + ifap->iat_refcount = ifma->ifma_refcount; + break; + } + ifap->iat_opackets = in->ia_ifa.if_opackets; + ifap->iat_ipackets = in->ia_ifa.if_ipackets; + ifap->iat_obytes = in->ia_ifa.if_obytes; + ifap->iat_ibytes = in->ia_ifa.if_ibytes; break; #ifdef INET6 case PF_INET6: + ifap->iat_sockaddr_len = sizeof(struct sockaddr_in6); + ifap->iat_sockaddr = malloc(ifap->iat_sockaddr_len); + if (ifap->iat_sockaddr != NULL) + memcpy(ifap->iat_sockaddr, sa_in6, + ifap->iat_sockaddr_len); + ifap->iat_ifaddr_len = sizeof(struct in6_ifaddr); + if (ifap->iat_ifaddr != NULL) + memcpy(ifap->iat_ifaddr, in6, ifap->iat_ifaddr_len); + strlcpy(ifap->iat_ni_network, + netname6(&in6->ia_addr, &in6->ia_prefixmask.sin6_addr, 1), + sizeof(ifap->iat_ni_network)); + ifap->iat_network = + strdup(netname6(&in6->ia_addr, + &in6->ia_prefixmask.sin6_addr, 0)); + inet_ntop(PF_INET6, &sa_in6->sin6_addr, ifap->iat_ni_address, + sizeof(ifap->iat_ni_address)); + ifap->iat_address = strdup(routename6(sa_in6, 0)); + ifap->iat_layer = layer_Network; + switch (type) { + case NETSTAT_IF_IFADDR: + ifap->iat_refcount = in->ia_ifa.ifa_refcnt; + break; + case NETSTAT_IF_IFMULTIADDR: + ifap->iat_refcount = ifma->ifma_refcount; + break; + } + ifap->iat_opackets = in6->ia_ifa.if_opackets; + ifap->iat_ipackets = in6->ia_ifa.if_ipackets; + ifap->iat_obytes = in6->ia_ifa.if_obytes; + ifap->iat_ibytes = in6->ia_ifa.if_ibytes; break; #endif /* INET6 */ case PF_IPX: @@ -231,74 +310,26 @@ case PF_APPLETALK: break; case PF_LINK: - ifap->iat_address_len = sizeof(struct sockaddr_dl); - ifap->iat_address = malloc(ifap->iat_address_len); - if (ifap->iat_address != NULL) - memcpy(ifap->iat_address, sa_dl, ifap->iat_address_len); - ifap->iat_network = NULL; - sprintf(ifap->iat_subnet, "", sa_dl->sdl_index); + ifap->iat_sockaddr_len = sizeof(struct sockaddr_dl); + ifap->iat_sockaddr = malloc(ifap->iat_sockaddr_len); + if (ifap->iat_sockaddr != NULL) + memcpy(ifap->iat_sockaddr, sa_dl, + ifap->iat_sockaddr_len); + sprintf(ifap->iat_ni_network, "", sa_dl->sdl_index); + ifap->iat_network = strdup(ifap->iat_ni_network); cp = (char *)LLADDR(sa_dl); n = sa_dl->sdl_alen; - p = ifap->iat_name; + p = ifap->iat_ni_address; while (--n >= 0) { sprintf(p, "%02x%s", *cp++ & 0xff, n > 0 ? ":" : ""); p += 3; } + ifap->iat_address = strdup(ifap->iat_ni_address); ifap->iat_layer = layer_Link; break; default: break; } - itp->it_addrcnt += 1; -} - -void -extract_if_maddress(struct ifmultiaddr *ifma, struct interface_type *itp) -{ - struct sockaddr *sa; - struct sockaddr_dl *sa_dl; - struct intfaddr_type *ifap; - - char *cp, *p; - int n; - - sa = ifma->ifma_addr; - sa_dl = (struct sockaddr_dl *)sa; - - /* Cannot store more addresses. */ - if (itp->it_maddrcnt == IFTYPE_MAXADDRCNT) - return; - - ifap = itp->it_maddress[itp->it_maddrcnt] = - _netstat_iat_allocate(sa->sa_family, NETSTAT_IF_IFMULTIADDR); - if (ifap == NULL) - return; - - switch (sa->sa_family) { - case PF_INET: - break; -#ifdef INET6 - case PF_INET6: - break; -#endif /* INET6 */ - case PF_LINK: - ifap->iat_address_len = sizeof(struct sockaddr_dl); - ifap->iat_address = malloc(ifap->iat_address_len); - if (ifap->iat_address != NULL) - memcpy(ifap->iat_address, sa_dl, ifap->iat_address_len); - ifap->iat_network = NULL; - sprintf(ifap->iat_subnet, "", sa_dl->sdl_index); - cp = (char *)LLADDR(sa_dl); - n = sa_dl->sdl_alen; - p = ifap->iat_name; - while (--n >= 0) { - sprintf(p, "%02x%s", *cp++ & 0xff, n > 0 ? ":" : ""); - p += 3; - } - ifap->iat_layer = layer_Link; - break; - } - - itp->it_maddrcnt += 1; + return (ifap); } ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#28 (text+ko) ==== @@ -186,13 +186,15 @@ int iat_family; /* protocol family */ enum intfaddr_layer iat_layer; int iat_type; /* ifa, ifma */ - char iat_name[20]; - char iat_subnet[16]; - void *iat_address; /* raw address */ - void *iat_network; /* raw network */ - int iat_address_len; - u_int64_t iat_network_mask; - u_int32_t iat_refcount; /* ifma */ + char *iat_address; + char iat_ni_address[20]; /* numeric */ + char *iat_network; + char iat_ni_network[16]; /* numeric */ + void *iat_sockaddr; + void *iat_ifaddr; + int iat_sockaddr_len; + int iat_ifaddr_len; + u_int32_t iat_refcount; /* for network-layer addresses: */ u_int64_t iat_opackets; u_int64_t iat_ipackets; @@ -261,8 +263,8 @@ /* XXX: merge these into a common address resolution routine. */ -const char *routename(in_addr_t *in, int numeric); -const char *netname(in_addr_t *in, u_long mask, int numeric); +const char *routename(in_addr_t in, int numeric); +const char *netname(in_addr_t in, u_long mask, int numeric); #ifdef INET6 const char *routename6(struct sockaddr_in6 *in6, int numeric); const char *netname6(struct sockaddr_in6 *in6, struct in6_addr *mask, ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#34 (text+ko) ==== @@ -863,6 +863,8 @@ { free(iatp->iat_address); free(iatp->iat_network); + free(iatp->iat_sockaddr); + free(iatp->iat_ifaddr); free(iatp); } @@ -973,15 +975,19 @@ } const char * -netstat_iat_get_name(const struct intfaddr_type *iatp) +netstat_iat_get_address(const struct intfaddr_type *iatp, int numeric) { - return (iatp->iat_name); + if (numeric) + return (iatp->iat_ni_address); + return (iatp->iat_address); } const char * -netstat_iat_get_subnet(const struct intfaddr_type *iatp) +netstat_iat_get_network(const struct intfaddr_type *iatp, int numeric) { - return (iatp->iat_subnet); + if (numeric) + return (iatp->iat_ni_network); + return (iatp->iat_network); } enum intfaddr_layer @@ -990,17 +996,46 @@ return (iatp->iat_layer); } +u_int64_t +netstat_iat_get_ipackets(const struct intfaddr_type *iatp) +{ + return (iatp->iat_ipackets); +} + +u_int64_t +netstat_iat_get_ibytes(const struct intfaddr_type *iatp) +{ + return (iatp->iat_ibytes); +} + +u_int64_t +netstat_iat_get_opackets(const struct intfaddr_type *iatp) +{ + return (iatp->iat_opackets); +} + +u_int64_t +netstat_iat_get_obytes(const struct intfaddr_type *iatp) +{ + return (iatp->iat_obytes); +} + +u_int32_t +netstat_iat_get_refcount(const struct intfaddr_type *iatp) +{ + return (iatp->iat_refcount); +} + const char * -routename(in_addr_t *in, int numeric) +routename(in_addr_t in, int numeric) { char *cp; static char line[MAXHOSTNAMELEN]; struct hostent *hp; - in_addr_t tin; cp = NULL; if (!numeric) { - hp = gethostbyaddr(in, sizeof(struct in_addr), PF_INET); + hp = gethostbyaddr(&in, sizeof(struct in_addr), PF_INET); if (hp != NULL) { cp = hp->h_name; trimdomain(cp, strlen(cp)); @@ -1010,9 +1045,9 @@ strlcpy(line, cp, sizeof(line)); } else { #define C(x) ((x) & 0xff) - tin = ntohl(*in); + in = ntohl(in); sprintf(line, "%u.%u.%u.%u", - C(tin >> 24), C(tin >> 16), C(tin >> 8), C(tin)); + C(in >> 24), C(in >> 16), C(in >> 8), C(in)); } return (line); } @@ -1039,8 +1074,9 @@ i = b; for (bb = b + 1; bb < 32; bb++) - if (!(mask & (1 << b))) { + if (!(mask & (1 << bb))) { i = -1; /* noncontig */ + break; } break; } @@ -1051,15 +1087,15 @@ } const char * -netname(in_addr_t *in, u_long mask, int numeric) +netname(in_addr_t in, u_long mask, int numeric) { char *cp = NULL; static char line[MAXHOSTNAMELEN]; struct netent *np = NULL; in_addr_t i; - i = ntohl(*in); - if (!numeric && i != 0) { + i = ntohl(in); + if (!numeric && i) { np = getnetbyaddr(i >> NSHIFT(mask), PF_INET); if (np != NULL) { cp = np->n_name; From owner-p4-projects@FreeBSD.ORG Tue Jul 21 01:14:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CC2AC106566B; Tue, 21 Jul 2009 01:14:21 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87D881065672 for ; Tue, 21 Jul 2009 01:14:21 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 762BB8FC1A for ; Tue, 21 Jul 2009 01:14:21 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L1ELpU038484 for ; Tue, 21 Jul 2009 01:14:21 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L1ELuL038482 for perforce@freebsd.org; Tue, 21 Jul 2009 01:14:21 GMT (envelope-from pgj@FreeBSD.org) Date: Tue, 21 Jul 2009 01:14:21 GMT Message-Id: <200907210114.n6L1ELuL038482@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166341 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 01:14:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=166341 Change 166341 by pgj@petymeg-current on 2009/07/21 01:14:02 Use TAILQ for interface_type. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#29 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#35 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#29 (text+ko) ==== @@ -225,11 +225,11 @@ struct intfaddr_type *it_maddress[IFTYPE_MAXADDRCNT]; int it_maddrcnt; - LIST_ENTRY(interface_type) it_list; + TAILQ_ENTRY(interface_type) it_list; }; struct interface_type_list { - LIST_HEAD(, interface_type) itl_list; + TAILQ_HEAD(, interface_type) itl_list; int itl_length; int itl_error; }; ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#35 (text+ko) ==== @@ -731,7 +731,7 @@ itp->it_type = type; itp->it_physical = physical; strlcpy(itp->it_name, name, IFTYPE_MAXNAME); - LIST_INSERT_HEAD(&list->itl_list, itp, it_list); + TAILQ_INSERT_TAIL(&list->itl_list, itp, it_list); list->itl_length += 1; return (itp); } @@ -761,7 +761,7 @@ if (itlp == NULL) return (NULL); - LIST_INIT(&itlp->itl_list); + TAILQ_INIT(&itlp->itl_list); itlp->itl_error = NETSTAT_ERROR_UNDEFINED; itlp->itl_length = 0; return (itlp); @@ -772,8 +772,8 @@ { struct interface_type *itp; - while ((itp = LIST_FIRST(&list->itl_list))) { - LIST_REMOVE(itp, it_list); + while ((itp = TAILQ_FIRST(&list->itl_list))) { + TAILQ_REMOVE(&list->itl_list, itp, it_list); netstat_it_free(itp); } @@ -812,9 +812,9 @@ bzero(itp, sizeof(*itp)); itp->iti_list = list; - itp->iti_first = LIST_FIRST(&list->itl_list); + itp->iti_first = TAILQ_FIRST(&list->itl_list); if (itp->iti_first != NULL) - itp->iti_next = LIST_NEXT(itp->iti_first, it_list); + itp->iti_next = TAILQ_NEXT(itp->iti_first, it_list); *iterator = itp; return (0); } @@ -822,7 +822,7 @@ const struct interface_type * netstat_iti_first(struct interface_type_iterator *itip) { - itip->iti_next = LIST_NEXT(itip->iti_first, it_list); + itip->iti_next = TAILQ_NEXT(itip->iti_first, it_list); return (itip->iti_first); } @@ -833,7 +833,7 @@ itp = itip->iti_next; if (itip->iti_next != NULL) - itip->iti_next = LIST_NEXT(itip->iti_next, it_list); + itip->iti_next = TAILQ_NEXT(itip->iti_next, it_list); return (itp); } From owner-p4-projects@FreeBSD.ORG Tue Jul 21 03:23:44 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 91E37106566B; Tue, 21 Jul 2009 03:23:43 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 403031065670 for ; Tue, 21 Jul 2009 03:23:43 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 143558FC1F for ; Tue, 21 Jul 2009 03:23:43 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L3NgsR050104 for ; Tue, 21 Jul 2009 03:23:42 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L3NgXl050102 for perforce@freebsd.org; Tue, 21 Jul 2009 03:23:42 GMT (envelope-from truncs@FreeBSD.org) Date: Tue, 21 Jul 2009 03:23:42 GMT Message-Id: <200907210323.n6L3NgXl050102@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166342 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 03:23:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166342 Change 166342 by truncs@aditya on 2009/07/21 03:23:24 These files are no longer required. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_linux_ialloc.c#10 delete .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/i386-bitops.h#4 delete Differences ... From owner-p4-projects@FreeBSD.ORG Tue Jul 21 03:39:01 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5EA801065674; Tue, 21 Jul 2009 03:39:00 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 065441065673 for ; Tue, 21 Jul 2009 03:39:00 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DE7E38FC19 for ; Tue, 21 Jul 2009 03:38:59 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L3cxhK052521 for ; Tue, 21 Jul 2009 03:38:59 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L3cxW8052519 for perforce@freebsd.org; Tue, 21 Jul 2009 03:38:59 GMT (envelope-from truncs@FreeBSD.org) Date: Tue, 21 Jul 2009 03:38:59 GMT Message-Id: <200907210338.n6L3cxW8052519@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166343 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 03:39:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=166343 Change 166343 by truncs@aditya on 2009/07/21 03:38:36 Cleanup. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#26 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#14 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#10 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#26 (text+ko) ==== @@ -329,8 +329,6 @@ struct m_ext2fs { struct ext2fs * e2fs; - struct buf * e2fs_buf; - struct buf ** e2fs_group_desc; char e2fs_fsmnt[MAXMNTLEN];/* name mounted on */ char e2fs_ronly; /* mounted read-only flag */ char e2fs_fmod; /* super block modified flag */ @@ -352,12 +350,6 @@ uint32_t e2fs_gcount; /* Number of groups */ uint32_t e2fs_first_inode;/* First inode on fs */ int32_t e2fs_isize; /* Size of inode */ - uint8_t e2fs_lib; /* Loaded inode bitmap */ - uint8_t e2fs_lbb; /* Loaded block bitmap */ - uint32_t e2fs_ibn[EXT2_MAX_GROUP_LOADED]; /* Inode bitmap number */ - struct buf * e2fs_ib[EXT2_MAX_GROUP_LOADED];/* Inode bitmap */ - uint32_t e2fs_bbn[EXT2_MAX_GROUP_LOADED]; /* Block bitmap number */ - struct buf * e2fs_bb[EXT2_MAX_GROUP_LOADED];/* Block bitmap */ uint32_t e2fs_mount_opt; uint32_t e2fs_blocksize_bits; char e2fs_wasvalid; /* valid at mount time */ ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#14 (text+ko) ==== @@ -299,55 +299,6 @@ return (0); } -/* - * Checks that the data in the descriptor blocks make sense - * this is taken from ext2/super.c. - */ -/* -static int -ext2_check_descriptors(struct m_ext2fs *sb) -{ - struct ext2_gd *gdp = NULL; - unsigned long block = sb->e2fs->e2fs_first_dblock; - int desc_block = 0; - int i; - - for (i = 0; i < sb->e2fs_gcount; i++) { - examine next descriptor block */ /* - if ((i % EXT2_DESC_PER_BLOCK(sb)) == 0) - gdp = (struct ext2_gd *) - sb->e2fs_group_desc[desc_block++]->b_data; - if (gdp->ext2bgd_b_bitmap < block || - gdp->ext2bgd_b_bitmap >= block + EXT2_BLOCKS_PER_GROUP(sb)) { - printf ("ext2_check_descriptors: " - "Block bitmap for group %d" - " not in group (block %lu)!\n", - i, (unsigned long) gdp->ext2bgd_b_bitmap); - return (0); - } - if (gdp->ext2bgd_i_bitmap < block || - gdp->ext2bgd_i_bitmap >= block + EXT2_BLOCKS_PER_GROUP(sb)) { - printf ("ext2_check_descriptors: " - "Inode bitmap for group %d" - " not in group (block %lu)!\n", - i, (unsigned long) gdp->ext2bgd_i_bitmap); - return (0); - } - if (gdp->ext2bgd_i_tables < block || - gdp->ext2bgd_i_tables + sb->e2fs_itpg >= - block + EXT2_BLOCKS_PER_GROUP(sb)) { - printf ("ext2_check_descriptors: " - "Inode table for group %d" - " not in group (block %lu)!\n", - i, (unsigned long) gdp->ext2bgd_i_tables); - return (0); - } - block += EXT2_BLOCKS_PER_GROUP(sb); - gdp++; - } - return (1); -} -*/ static int ext2_check_sb_compat(struct ext2fs *es, struct cdev *dev, int ronly) { @@ -425,8 +376,6 @@ db_count = (fs->e2fs_gcount + EXT2_DESC_PER_BLOCK(fs) - 1) / EXT2_DESC_PER_BLOCK(fs); fs->e2fs_gdbcount = db_count; - fs->e2fs_group_desc = malloc(db_count * sizeof (struct buf *), - M_EXT2MNT, M_WAITOK); fs->e2fs_gd = malloc(db_count * fs->e2fs_bsize, M_EXT2MNT, M_WAITOK); @@ -453,14 +402,6 @@ brelse(bp); bp = NULL; } - for (i = 0; i < EXT2_MAX_GROUP_LOADED; i++) { - fs->e2fs_ibn[i] = 0; - fs->e2fs_ib[i] = NULL; - fs->e2fs_bbn[i] = 0; - fs->e2fs_bb[i] = NULL; - } - fs->e2fs_lib = 0; - fs->e2fs_lbb = 0; if (es->e2fs_rev == E2FS_REV0 || (es->e2fs_features_rocompat & EXT2F_ROCOMPAT_LARGEFILE) == 0) fs->e2fs_maxfilesize = 0x7fffffff; @@ -652,10 +593,6 @@ if ((error = compute_sb_data(devvp, ump->um_e2fs->e2fs, ump->um_e2fs))) goto out; - /* - * We don't free the group descriptors allocated by compute_sb_data() - * until ext2_unmount(). This is OK since the mount will succeed. - */ brelse(bp); bp = NULL; fs = ump->um_e2fs; @@ -721,7 +658,7 @@ { struct ext2mount *ump; struct m_ext2fs *fs; - int error, flags, ronly, i; + int error, flags, ronly; flags = 0; if (mntflags & MNT_FORCE) { @@ -740,19 +677,6 @@ ext2_sbupdate(ump, MNT_WAIT); } - /* release buffers containing group descriptors */ -/* for(i = 0; i < fs->e2fs_gdbcount; i++) - ULCK_BUF(fs->e2fs_group_desc[i]) - free(fs->e2fs_group_desc, M_EXT2MNT); -*/ - /* release cached inode/block bitmaps */ - for (i = 0; i < EXT2_MAX_GROUP_LOADED; i++) - if (fs->e2fs_ib[i]) - ULCK_BUF(fs->e2fs_ib[i]) - for (i = 0; i < EXT2_MAX_GROUP_LOADED; i++) - if (fs->e2fs_bb[i]) - ULCK_BUF(fs->e2fs_bb[i]) - DROP_GIANT(); g_topology_lock(); g_vfs_close(ump->um_cp); ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#10 (text+ko) ==== @@ -66,13 +66,6 @@ */ /* - * Convert cylinder group to base address of its global summary info. - */ -#define fs_cs(fs, cgindx) (((struct ext2_gd *) \ - (fs->e2fs_group_desc[cgindx / EXT2_DESC_PER_BLOCK(fs)]->b_data)) \ - [cgindx % EXT2_DESC_PER_BLOCK(fs)]) - -/* * Turn file system block numbers into disk block addresses. * This maps file system blocks to device size blocks. */ From owner-p4-projects@FreeBSD.ORG Tue Jul 21 08:23:11 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BD3D51065672; Tue, 21 Jul 2009 08:23:10 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DA40106566C for ; Tue, 21 Jul 2009 08:23:10 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6B0968FC17 for ; Tue, 21 Jul 2009 08:23:10 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L8NANR097533 for ; Tue, 21 Jul 2009 08:23:10 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L8N9wp097531 for perforce@freebsd.org; Tue, 21 Jul 2009 08:23:09 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 21 Jul 2009 08:23:09 GMT Message-Id: <200907210823.n6L8N9wp097531@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166349 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 08:23:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=166349 Change 166349 by anchie@anchie_malimis on 2009/07/21 08:22:44 Call the input hook for each incoming ND packet, and return IPPROTO_DONE after sending it to userspace SEND application. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#17 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#17 (text+ko) ==== @@ -765,18 +765,20 @@ /* give up local */ /* Send incoming SeND-protected/ND packet to user space. */ - if (send_input_hook != NULL) - send_input_hook(m, ifp, SND_IN, ip6len); - else { + if (send_output_hook != NULL) { + send_output_hook(m, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else { /* give up local */ nd6_rs_input(m, off, icmp6len); } m = NULL; goto freeit; } - if (send_input_hook != NULL) - send_input_hook(n, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(n, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else nd6_rs_input(n, off, icmp6len); /* m stays. */ break; @@ -790,16 +792,18 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_input_hook != NULL) - send_input_hook(m, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(m, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else nd6_ra_input(m, off, icmp6len); m = NULL; goto freeit; } - if (send_input_hook != NULL) - send_input_hook(n, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(n, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else nd6_ra_input(n, off, icmp6len); /* m stays. */ break; @@ -813,18 +817,20 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_input_hook != NULL) - send_input_hook(m, ifp, SND_IN, ip6len); - else { + if (send_output_hook != NULL) { + send_output_hook(m, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else { /* give up local */ nd6_ns_input(m, off, icmp6len); } m = NULL; goto freeit; } - if (send_input_hook != NULL) - send_input_hook(n, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(n, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else nd6_ns_input(n, off, icmp6len); /* m stays. */ break; @@ -838,18 +844,20 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_input_hook != NULL) - send_input_hook(m, ifp, SND_IN, ip6len); - else { + if (send_output_hook != NULL) { + send_output_hook(m, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else { /* give up local */ nd6_na_input(m, off, icmp6len); } m = NULL; goto freeit; } - if (send_input_hook != NULL) - send_input_hook(n, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(n, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else nd6_na_input(n, off, icmp6len); /* m stays. */ break; @@ -863,18 +871,20 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_input_hook != NULL) - send_input_hook(m, ifp, SND_IN, ip6len); - else { + if (send_output_hook != NULL) { + send_output_hook(m, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else { /* give up local */ icmp6_redirect_input(m, off); } m = NULL; goto freeit; } - if (send_input_hook != NULL) - send_input_hook(n, ifp, SND_IN, ip6len); - else + if (send_output_hook != NULL) { + send_output_hook(n, ifp, SND_IN, ip6len); + return (IPPROTO_DONE); + } else icmp6_redirect_input(n, off); /* m stays. */ break; @@ -2780,7 +2790,7 @@ nd_rd->nd_rd_cksum = in6_cksum(m, IPPROTO_ICMPV6, sizeof(*ip6), ntohs(ip6->ip6_plen)); - if (send_input_hook != NULL) { + if (send_output_hook != NULL) { mtag = m_tag_get(PACKET_TAG_ND_OUTGOING, sizeof(unsigned short), M_NOWAIT); if (mtag == NULL) From owner-p4-projects@FreeBSD.ORG Tue Jul 21 08:29:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8FE171065693; Tue, 21 Jul 2009 08:29:18 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26BB91065686 for ; Tue, 21 Jul 2009 08:29:17 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0F90C8FC3E for ; Tue, 21 Jul 2009 08:29:17 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6L8TGCo098070 for ; Tue, 21 Jul 2009 08:29:16 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6L8TGBJ098068 for perforce@freebsd.org; Tue, 21 Jul 2009 08:29:16 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 21 Jul 2009 08:29:16 GMT Message-Id: <200907210829.n6L8TGBJ098068@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166350 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 08:29:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=166350 Change 166350 by anchie@anchie_malimis on 2009/07/21 08:28:30 Call the input hook for each incoming ND packet, and return IPPROTO_DONE after sending it to userspace SEND application. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#18 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#18 (text+ko) ==== @@ -765,8 +765,8 @@ /* give up local */ /* Send incoming SeND-protected/ND packet to user space. */ - if (send_output_hook != NULL) { - send_output_hook(m, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else { /* give up local */ @@ -775,8 +775,8 @@ m = NULL; goto freeit; } - if (send_output_hook != NULL) { - send_output_hook(n, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else nd6_rs_input(n, off, icmp6len); @@ -792,16 +792,16 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_output_hook != NULL) { - send_output_hook(m, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else nd6_ra_input(m, off, icmp6len); m = NULL; goto freeit; } - if (send_output_hook != NULL) { - send_output_hook(n, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else nd6_ra_input(n, off, icmp6len); @@ -817,8 +817,8 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_output_hook != NULL) { - send_output_hook(m, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else { /* give up local */ @@ -827,8 +827,8 @@ m = NULL; goto freeit; } - if (send_output_hook != NULL) { - send_output_hook(n, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else nd6_ns_input(n, off, icmp6len); @@ -844,8 +844,8 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_output_hook != NULL) { - send_output_hook(m, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else { /* give up local */ @@ -854,8 +854,8 @@ m = NULL; goto freeit; } - if (send_output_hook != NULL) { - send_output_hook(n, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else nd6_na_input(n, off, icmp6len); @@ -871,8 +871,8 @@ if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { /* Send incoming SeND-protected/ND packet to user space. */ - if (send_output_hook != NULL) { - send_output_hook(m, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else { /* give up local */ @@ -881,8 +881,8 @@ m = NULL; goto freeit; } - if (send_output_hook != NULL) { - send_output_hook(n, ifp, SND_IN, ip6len); + if (send_input_hook != NULL) { + send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else icmp6_redirect_input(n, off); @@ -2790,7 +2790,7 @@ nd_rd->nd_rd_cksum = in6_cksum(m, IPPROTO_ICMPV6, sizeof(*ip6), ntohs(ip6->ip6_plen)); - if (send_output_hook != NULL) { + if (send_input_hook != NULL) { mtag = m_tag_get(PACKET_TAG_ND_OUTGOING, sizeof(unsigned short), M_NOWAIT); if (mtag == NULL) From owner-p4-projects@FreeBSD.ORG Tue Jul 21 13:25:42 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4CAB51065676; Tue, 21 Jul 2009 13:25:42 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E5E9E106564A for ; Tue, 21 Jul 2009 13:25:41 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C93A38FC24 for ; Tue, 21 Jul 2009 13:25:41 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6LDPfC3044699 for ; Tue, 21 Jul 2009 13:25:41 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6LDPfki044697 for perforce@freebsd.org; Tue, 21 Jul 2009 13:25:41 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Tue, 21 Jul 2009 13:25:41 GMT Message-Id: <200907211325.n6LDPfki044697@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 166362 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 13:25:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=166362 Change 166362 by zhaoshuai@zhaoshuai on 2009/07/21 13:25:06 add LMbench result Affected files ... .. //depot/projects/soc2009/fifo/fifo_test/README#3 edit Differences ... ==== //depot/projects/soc2009/fifo/fifo_test/README#3 (text+ko) ==== @@ -57,7 +57,7 @@ The test is executed 100 times for all combinations of the following parameters for message size and number of messages transmitted. The - avarage time is caculated and then printed. + avarage time cost is caculated and then printed. - Message size(bytes): 64, 128, 256, 512, 1024, 2048, 4096 - Number of messages : 100, 1000, 5000, 10000, 100000 @@ -91,10 +91,50 @@ From these results, we can see that the new fifo implementation gains little advantage over the old fifo implementation when transfering small amount of data. - e.g. transferring 100*128 bytes of data costs 89 microseconds under the new fifo - code while it costs 96 microseconds under the old fifo code. But when transferring + e.g. handling 100*128 bytes of data costs 89 microseconds under the new fifo code + while it costs 96 microseconds under the old fifo code. But when transferring large amount of data, the new fifo implementation gains significant advantage over - the old fifo implementation. e.g. it takes 1126 microseconds transferring 10000*64 + the old fifo implementation. e.g. it takes 1126 microseconds handling 10000*64 bytes of data under the old fifo implementation, but under the new fifo implementation, it takes 753 microseconds, saving 30% of time. That is to say, the new fifo system increases the throughput by 30% in this case. + + == LMbench == + + There is a FIFO related test in LMBench. It is designed to measure FIFO latency. + I run the test many times, but the result varies from time to time. + + Here are 10 results observed under the new fifo implementation. + + FIFO latency: 12.2243 microseconds + FIFO latency: 12.1555 microseconds + FIFO latency: 16.0318 microseconds + FIFO latency: 16.4396 microseconds + FIFO latency: 14.5265 microseconds + FIFO latency: 15.3577 microseconds + FIFO latency: 7.5029 microseconds + FIFO latency: 12.9248 microseconds + FIFO latency: 13.6932 microseconds + FIFO latency: 11.6913 microseconds + + The following 10 results are observed under the old fifo implementation. + + FIFO latency: 11.8956 microseconds + FIFO latency: 10.2409 microseconds + FIFO latency: 10.8170 microseconds + FIFO latency: 9.4636 microseconds + FIFO latency: 18.8605 microseconds + FIFO latency: 5.7682 microseconds + FIFO latency: 6.9138 microseconds + FIFO latency: 5.6443 microseconds + FIFO latency: 15.9345 microseconds + FIFO latency: 7.4886 microseconds + + It is very strange that the result fluctuates in a large range. Since each value + we get is an avarage value which is caculated after hundreds of internal test, + we could expect that each result have little difference with others. + + I think the testing method adopted by LMbench is not stable, thus those results + are not convincing. + + From owner-p4-projects@FreeBSD.ORG Tue Jul 21 15:06:34 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B4A96106567A; Tue, 21 Jul 2009 15:06:33 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 665301065675 for ; Tue, 21 Jul 2009 15:06:33 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 54D118FC21 for ; Tue, 21 Jul 2009 15:06:33 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6LF6XfB054305 for ; Tue, 21 Jul 2009 15:06:33 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6LF6Xf6054303 for perforce@freebsd.org; Tue, 21 Jul 2009 15:06:33 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 21 Jul 2009 15:06:33 GMT Message-Id: <200907211506.n6LF6Xf6054303@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166370 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 15:06:35 -0000 http://perforce.freebsd.org/chv.cgi?CH=166370 Change 166370 by anchie@anchie_malimis on 2009/07/21 15:05:37 Bug fixes. Affected files ... .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/Makefile#2 edit .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/os_specific.h#5 edit Differences ... ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/Makefile#2 (text+ko) ==== @@ -7,7 +7,7 @@ INC= sendd_local.h snd_proto.h snd_config.h CFLAGS= -Wall -O3 -CPPFLAGS= -I../include +CPPFLAGS= -I../include -I../../src/sys YFLAGS= -d -p params_ LFLAGS= -Pparams_ ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/os_specific.h#5 (text+ko) ==== @@ -50,7 +50,7 @@ extern void os_specific_fini(void); extern int os_specific_init(void); -extern void snd_add_fds(fd_set *, int *); +extern void snd_add_fds(fd_set *, int *, int); extern void snd_dispatch_fds(fd_set *); extern int snd_handle_iface(const char *, int); From owner-p4-projects@FreeBSD.ORG Tue Jul 21 15:09:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3A590106566B; Tue, 21 Jul 2009 15:09:37 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE7B01065670 for ; Tue, 21 Jul 2009 15:09:36 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C2AD38FC13 for ; Tue, 21 Jul 2009 15:09:36 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6LF9aiO054474 for ; Tue, 21 Jul 2009 15:09:36 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6LF9ahY054472 for perforce@freebsd.org; Tue, 21 Jul 2009 15:09:36 GMT (envelope-from andre@freebsd.org) Date: Tue, 21 Jul 2009 15:09:36 GMT Message-Id: <200907211509.n6LF9ahY054472@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 15:09:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=166371 Change 166371 by andre@andre_flirtbox on 2009/07/21 15:08:40 Move initialization of tcp_reass_timeout to tcp_reass_init(). Remove second argument to m_last(). Affected files ... .. //depot/projects/tcp_reass/kern/kern_sysctl.c#6 edit .. //depot/projects/tcp_reass/modules/Makefile#8 edit .. //depot/projects/tcp_reass/netinet/tcp_reass.c#37 edit Differences ... ==== //depot/projects/tcp_reass/kern/kern_sysctl.c#6 (text+ko) ==== ==== //depot/projects/tcp_reass/modules/Makefile#8 (text+ko) ==== @@ -235,7 +235,6 @@ rl \ ${_s3} \ ${_safe} \ - ${_sbni} \ scc \ scd \ ${_scsi_low} \ ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#37 (text+ko) ==== @@ -122,9 +122,9 @@ &tcp_reass_globalmaxblocks, 0, "Global limit of TCP segment blocks in reassembly queue"); -static int tcp_reass_timeout = 30 * HZ; +static int tcp_reass_timeout = 0; SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, - &tcp_reass_timeout, NULL, sysctl_msec_to_ticks, "I", + &tcp_reass_timeout, 0, sysctl_msec_to_ticks, "I", "Reassembly queue flush timeout in milliseconds"); static int tcp_reass_spacetime = 0; @@ -174,6 +174,7 @@ tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); + tcp_reass_timeout = 30 * hz; } /* @@ -533,7 +534,7 @@ trb->trb_mt->m_next = trbn->trb_m; if (tcp_reass_spacetime) { trb->trb_mt = m_collapse(trb->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trb->trb_mt, NULL); + trb->trb_mt = m_last(trb->trb_mt); } else trb->trb_mt = trbn->trb_mt; } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { @@ -548,7 +549,7 @@ trbn->trb_mt->m_next = trb->trb_m; if (tcp_reass_spacetime) { trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trbn->trb_mt, NULL); + trb->trb_mt = m_last(trbn->trb_mt); } } else return (NULL); From owner-p4-projects@FreeBSD.ORG Tue Jul 21 19:13:04 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CC44D1065674; Tue, 21 Jul 2009 19:13:03 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 62EB51065670 for ; Tue, 21 Jul 2009 19:13:03 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4F46F8FC0C for ; Tue, 21 Jul 2009 19:13:03 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6LJD37u085820 for ; Tue, 21 Jul 2009 19:13:03 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6LJD3DK085818 for perforce@freebsd.org; Tue, 21 Jul 2009 19:13:03 GMT (envelope-from andre@freebsd.org) Date: Tue, 21 Jul 2009 19:13:03 GMT Message-Id: <200907211913.n6LJD3DK085818@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166378 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 19:13:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=166378 Change 166378 by andre@andre_t61 on 2009/07/21 19:12:41 tcp_reass_verify() must return 1 to pass the master-KASSERT(). tcp_reass_sacktrack() must not do LIST_REMOVE() when this is the first element to be inserted. Another lookup in present: is unnecessary, just use 'trb'. Do not allocate tracking structure for stand-alone missing segment, use the stack based one. Adjust KASSERT()s accordingly. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#38 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#38 (text+ko) ==== @@ -1,629 +1,633 @@ -/*- - * Copyright (c) 2007-2009 - * Andre Oppermann, Internet Business Solutions AG. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)tcp_input.c 8.12 (Berkeley) 5/24/95 - * $FreeBSD: src/sys/netinet/tcp_reass.c,v 1.352 2007/05/13 22:16:13 andre Exp $ - */ - -#include -__FBSDID("$FreeBSD: src/sys/netinet/tcp_reass.c,v 1.363 2009/07/16 21:13:04 rwatson Exp $"); - -/* - * Operational overview of TCP reassembly: - * - * It is the purpose of tcp reassembly to store segments that are received - * out of order. This happens when packets are lost along the way due to - * various reasons. The most common one is traffic overload which causes - * routers to stop accepting packets for brief moments. - * - * Upon arrival of the missing segment(s) the whole chain of stored segments - * is moved into the socket buffer. In case of multiple missing segments - * the first consequtive part is moved with the remainder being kept in - * store until the next missing segment arrives. - * - * While in reassembly mode *all* arrving segments are put into the reassembly - * queue. - * - * Instead of storing all segments on their own we build blocks of consequtive - * segments chained together. We use a red-black tree to cope with arbitrary - * complexity. If a segment matches the end of one block and the start of the - * next block the two blocks are joined together. If no match is found a - * new block is created. - * - * The reassembly queues block structure is also used to track SACK - * information as a data receiver. A double-linked list is added - * that links the blocks the reverse order of their arrival or updating. - * This makes us fully compliant to RFC2018 Section 4 including all - * optional parts marked as "SHOULD". - * - * TODO: - * A further improvement is to merge the content of mbufs together if the - * preceeding one has enough space to hold the data of the new one. When - * trimming the head of an mbuf chain m_adj() empties the mbufs but leaves - * them in place. Only when trimming from the tail it actually frees them. - * Normally we don't get mbuf chains so this isn't too much of a concern - * right now. Use m_collapse() to compact the mbuf chains within the - * blocks. - */ - -#include "opt_inet.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -VNET_DEFINE(uma_zone_t, tcp_reass_zone); - -SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, - "TCP Segment Reassembly Queue"); - -static int tcp_reass_enable = 1; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_RW, - &tcp_reass_enable, 0, - "Enable/disable use of TCP reassembly queue"); - -static int tcp_reass_maxblocks = 32; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RW, - &tcp_reass_maxblocks, 0, - "Per connection limit of TCP segment blocks in reassembly queue"); - -static int tcp_reass_globalmaxblocks = 65535; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, - &tcp_reass_globalmaxblocks, 0, - "Global limit of TCP segment blocks in reassembly queue"); - -static int tcp_reass_timeout = 0; -SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, - &tcp_reass_timeout, 0, sysctl_msec_to_ticks, "I", - "Reassembly queue flush timeout in milliseconds"); - -static int tcp_reass_spacetime = 0; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, space_time, CTLFLAG_RW, - &tcp_reass_spacetime, 0, - "Reassembly queue strategy of space vs. time efficiency"); - -static struct tcp_reass_block * - tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); - -/* Trim empty mbufs from head of chain. */ -static struct mbuf * -m_trimhead(struct mbuf *m) -{ - struct mbuf *n; - - while (m->m_len == 0) { - n = m; - m = m->m_next; - m_free(n); - } - return (m); -} - -#if 0 -static u_int -m_storagesize(struct mbuf *m) -{ - u_int mcnt; - - for (mcnt = 0; m != NULL; m = m->m_next) - mcnt += (m->m_flags & M_EXT) ? - m->m_ext.ext_size + MSIZE : MSIZE; - return (mcnt); -} -#endif - -/* - * Initialize TCP reassembly zone on startup. - */ -void -tcp_reass_init(void) -{ - - TUNABLE_INT_FETCH("net.inet.tcp.reass.globalmaxblocks", - &tcp_reass_globalmaxblocks); - tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); - tcp_reass_timeout = 30 * hz; -} - -/* - * Compare function implementing the ranged lookup on the RB tree. - * NB: The tree must never have any overlapping elements. - */ -static __inline int -tcp_reass_cmp(struct tcp_reass_block *a, struct tcp_reass_block *b) -{ - if (SEQ_LT(a->trb_seqe, b->trb_seqs)) - return (-1); - else if (SEQ_GT(a->trb_seqs, b->trb_seqe)) - return (1); - else - return (0); -} - -RB_PROTOTYPE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); -RB_GENERATE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); - -#ifdef INVARIANTS -static int -tcp_reass_verify(struct tcpcb *tp) -{ - int i = 0, size = 0, total = 0; - struct mbuf *m; - struct tcp_reass_block *trb, *trbn; - - RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { - KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), - ("%s: trb_seqs >= trb_seqe", __func__)); - KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt), - ("%s: rcv_nxt >= trb_seqs", __func__)); - KASSERT(trb->trb_m != NULL, - ("%s: trb_m == NULL", __func__)); - KASSERT(trb->trb_mt != NULL, - ("%s: trb_mt == NULL", __func__)); - size = SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - KASSERT(size == m_length(trb->trb_m, &m), - ("%s: seq# size != actual mbuf size", __func__)); - KASSERT(trb->trb_mt == m, - ("%s: trb_mt is not last mbuf", __func__)); - KASSERT(trbn == NULL || SEQ_LT(trb->trb_seqe, trbn->trb_seqs), - ("%s: overlaps into next block", __func__)); - total += size; - i++; - } - KASSERT(tp->rcv_reass_size == total, - ("%s: total not correct", __func__)); - - LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { - i--; - } - KASSERT(i == 0, - ("%s: sack list incorrect", __func__)); - - return (0); -} -#endif - -static void -tcp_reass_free(struct tcpcb *tp, struct tcp_reass_block *trb) -{ - - trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); - KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); - LIST_REMOVE(trb, trb_sack); - if (trb->trb_m != NULL) - m_freem(trb->trb_m); - tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - tp->rcv_reass_blocks--; - uma_zfree(tcp_reass_zone, trb); -} - -void -tcp_reass_flush(struct tcpcb *tp) -{ - struct tcp_reass_block *trb, *trbn; - - INP_WLOCK_ASSERT(tp->t_inpcb); - KASSERT(tcp_reass_verify(tp), - ("%s: reassembly queue inconsistent", __func__)); - - RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { - tcp_reass_free(tp, trb); - } - KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); -} - -static __inline void -tcp_reass_sacktrack(struct tcpcb *tp, struct tcp_reass_block *trb) -{ - - if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { - LIST_REMOVE(trb, trb_sack); - LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); - } -} - -/* - * Insert segments into the reassembly queue. - * - * NB: We must always consume the mbuf. Either by appeding it to - * the queue or by freeing it. - */ -int -tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) -{ - int thflags = 0; - tcp_seq th_seq; - struct socket *so = tp->t_inpcb->inp_socket; - struct tcp_reass_block *trb, *trbn; - struct tcp_reass_block trbs; - - INP_WLOCK_ASSERT(tp->t_inpcb); - - /* - * Call with th==NULL after becoming established to - * force pre-ESTABLISHED data up to user socket. - * XXX: Was used for T/TCP of which code remains. - */ - if (th == NULL) { - if (!TCPS_HAVEESTABLISHED(tp->t_state) || - RB_EMPTY(&tp->rcv_reass) || - ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && - trb->trb_seqs != tp->rcv_nxt)) - return (0); - goto present; - } - - KASSERT(th != NULL, ("%s: th is NULL", __func__)); - KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); - KASSERT(m != NULL, ("%s: m is NULL", __func__)); - KASSERT(*tlenp == m_length(m, NULL), - ("%s: tlen != mbuf length", __func__)); - - /* - * Store TCP header information in local variables as - * we may lose access to it after mbuf compacting. - */ - thflags = th->th_flags; - th_seq = th->th_seq; - th = NULL; /* Prevent further use. */ - - /* Check if it is really neccessary to do all the work. */ - if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) - goto done; - - KASSERT(SEQ_LT(tp->rcv_nxt, th_seq), - ("%s: sequence number below rcv_nxt", __func__)); - KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), - ("%s: got missing segment but queue is empty", __func__)); - KASSERT(tcp_reass_verify(tp), - ("%s: reassembly queue inconsistent", __func__)); - - /* - * Limit the number of segments in the reassembly queue to prevent - * holding on to too many segments (and thus running out of mbufs). - * Make sure to let the missing segment through which caused this - * queue. - * - * Count the gross space used by the mbufs in the reassembly queue - * and limit it to the free space in the socket buffer. This way - * the reassembly queue can never consume more mbuf space than the - * socket buffer got allocated anyway and it reflects the actual - * amount of kernel memory used. This effectively prevents mbuf - * exhaustion due to pathological traffic (one byte segments with - * a hole each time) on a single connection. - * - * Counting the gross mbuf space effectively sets the net data - * limit lower than the socket buffer would allow. - * Don't underestimates the effective free space in the socket - * buffer vs. actual real data with 2k clusters and 1500 byte - * packets by introducing a correction factor of 11/8th. - */ - if (th_seq != tp->rcv_nxt && - tp->rcv_reass_blocks > tcp_reass_maxblocks) { - //(sbspace(&so->so_rcv) / 8 * 11) - TCPSTAT_INC(tcps_reass_overflow); - TCPSTAT_INC(tcps_rcvmemdrop); - goto done; - } - - /* - * FIN handling is a bit tricky. - * We cannot trust a FIN that goes into the reassembly queue. - * It can be easily spoofed as it may be anywhere in the receive - * window (see RST attack mitigation in tcp-secure). - * For this reason (and complexity avoidance) we generally ignore - * any FIN arriving at the reassembly queue with one exception; - * When it exactly matches rcv_nxt together with any data in the - * same segment we can conclude it to be genuine and proceed with - * flushing any other data waiting in the reassembly queue. - * A FIN is part of the sequence space and will get retransmitted - * if it was genuine. - * This approach is based on a discussion on TCPM mailing list. - */ - if ((thflags & TH_FIN) && tp->rcv_nxt == th_seq) { - tcp_reass_flush(tp); - if (m->m_len == 0) { - tcp_timer_activate(tp, TT_REASS, 0); - return (thflags); - } - } else if (*tlenp == 0) - goto done; - else - thflags &= ~TH_FIN; - - /* Get rid of packet header and mtags. */ - m_demote(m, 1); - /* Trim empty mbufs from head of chain. */ - m = m_trimhead(m); - /* Compact mbuf chain. */ - if (tcp_reass_spacetime) - m = m_collapse(m, M_DONTWAIT, 1024); - - KASSERT(m != NULL, ("%s: m is NULL after collapse", __func__)); - - /* Set up search structure. */ - trbs.trb_seqs = th_seq; - trbs.trb_seqe = th_seq + *tlenp; - trbs.trb_m = m; - trbs.trb_mt = m_last(m); - - /* - * Return match that has at least partial overlap to either side or - * insert a new reassembly block. - */ - if ((trb = RB_FIND(tcp_ra, &tp->rcv_reass, &trbs)) != NULL) { - /* Within an already known block. */ - if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && - SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { - tcp_reass_sacktrack(tp, trb); - tp->rcv_reass_dsack.start = trbs.trb_seqs; - tp->rcv_reass_dsack.end = trbs.trb_seqe; - goto done; - } - tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - - /* Extends the end, common case. */ - if (SEQ_GT(trbs.trb_seqe, trb->trb_seqe)) { - (void)tcp_reass_merge(trb, &trbs); - tcp_reass_sacktrack(tp, trb); - - /* Merge in next blocks if there is overlap. */ - while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } - } - - /* Extends the start. */ - if (SEQ_LT(trbs.trb_seqs, trb->trb_seqs)) { - (void)tcp_reass_merge(trb, &trbs); - tcp_reass_sacktrack(tp, trb); - - /* Merge in previous blocks if there is overlap. */ - while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } - } - } else if ((trb = (struct tcp_reass_block *)uma_zalloc(tcp_reass_zone, (M_NOWAIT|M_ZERO))) != NULL) { - trb->trb_seqs = trbs.trb_seqs; - trb->trb_seqe = trbs.trb_seqe; - trb->trb_m = trbs.trb_m; - trb->trb_mt = trbs.trb_mt; - trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, trb); - KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); - tcp_reass_sacktrack(tp, trb); - tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - tp->rcv_reass_blocks++; - } else if (tp->rcv_nxt == th_seq) { - trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, &trbs); - KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); - } - if (tp->rcv_nxt == th_seq) - goto present; - - KASSERT(tcp_reass_verify(tp), - ("%s: reassembly queue inconsistent", __func__)); - return (0); - -present: - /* - * Present data to user, advancing rcv_nxt through the - * completed sequence space. - */ - KASSERT(!RB_EMPTY(&tp->rcv_reass), - ("%s: queue empty at present", __func__)); - KASSERT((RB_MIN(tcp_ra, &tp->rcv_reass))->trb_seqs == tp->rcv_nxt, - ("%s: first block does not match rcv_nxt", __func__)); - TCPSTAT_INC(tcps_reass_missingseg); - - SOCKBUF_LOCK(&so->so_rcv); - /* We can only ever dequeue one block. */ - trb = RB_MIN(tcp_ra, &tp->rcv_reass); - if (!(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { - sbappendstream_locked(&so->so_rcv, trb->trb_m); - tp->rcv_nxt += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - trb->trb_m = NULL; - trb->trb_mt = NULL; - } - if (trb == &trbs) { - RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); - if (trb->trb_m != NULL) - m_freem(trb->trb_m); - } else - tcp_reass_free(tp, trb); - - /* NB: sorwakeup_locked() does a implicit socket buffer unlock. */ - sorwakeup_locked(so); - - /* - * Restart the reassembly queue flush timer after advancing - * the sequence space and if queue is not empty. Otherwise - * deactivate it. - */ - if (tcp_reass_timeout && !RB_EMPTY(&tp->rcv_reass)) - tcp_timer_activate(tp, TT_REASS, - tp->t_rxtcur * tcp_reass_timeout); - else - tcp_timer_activate(tp, TT_REASS, 0); - - ND6_HINT(tp); - return (thflags); - -done: - m_freem(m); - *tlenp = 0; - return (0); -} - -/* - * Merge one or more consecutive blocks together. - * Always merge trbn into trb! - */ -static struct tcp_reass_block * -tcp_reass_merge(struct tcp_reass_block *trb, struct tcp_reass_block *trbn) -{ - int i; - - KASSERT(trb != NULL && trbn != NULL, - ("%s: incomplete input", __func__)); - - /* Append and prepend. */ - if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { - if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqe)) - return (trbn); - if ((i = SEQ_DELTA(trb->trb_seqe, trbn->trb_seqs)) > 0) { - m_adj(trbn->trb_m, i); - trbn->trb_m = m_trimhead(trbn->trb_m); - } - trb->trb_seqe = trbn->trb_seqe; - trb->trb_mt->m_next = trbn->trb_m; - if (tcp_reass_spacetime) { - trb->trb_mt = m_collapse(trb->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trb->trb_mt); - } else - trb->trb_mt = trbn->trb_mt; - } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs)) - return (trbn); - if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) { - m_adj(trb->trb_m, i); - trb->trb_m = m_trimhead(trb->trb_m); - } - trb->trb_seqs = trbn->trb_seqs; - trb->trb_m = trbn->trb_m; - trbn->trb_mt->m_next = trb->trb_m; - if (tcp_reass_spacetime) { - trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trbn->trb_mt); - } - } else - return (NULL); - - trbn->trb_seqs = 0; - trbn->trb_seqe = i; - trbn->trb_m = NULL; - trbn->trb_mt = NULL; - return (trbn); -} - -/* - * Put the sequence number of the reassembly queue blocks into - * the SACK options of an outgoing segment. - * RFC2018: section ... - * RFC2883: section ... - */ -int -tcp_reass_sack(struct tcpcb *tp, u_char *optp, int numsacks) -{ - int nsacks = 0; - tcp_seq sack_seq; - struct tcp_reass_block *trb; - - INP_WLOCK_ASSERT(tp->t_inpcb); - KASSERT(numsacks > 0, - ("%s: zero sack blocks to add", __func__)); - KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), - ("%s: sack list empty", __func__)); - - /* DSACK */ - if (tp->rcv_reass_dsack.start == tp->rcv_reass_dsack.end) { - sack_seq = htonl(tp->rcv_reass_dsack.start); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - sack_seq = htonl(tp->rcv_reass_dsack.end); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - tp->rcv_reass_dsack.start = 0; - tp->rcv_reass_dsack.end = 0; - numsacks--; - nsacks++; - } - - /* - * The most recent block must appear first. Add the other - * blocks in most recent created or updated order. - * RFC2018: section 4 - */ - LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { - if (numsacks < 1) - break; - sack_seq = htonl(trb->trb_seqs); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - sack_seq = htonl(trb->trb_seqe); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - numsacks--; - nsacks++; - } - - return (nsacks); -} - -#ifdef DDB -static void -db_print_reassblocks(struct tcpcb *tp) -{ - struct tcp_reass_block *trb; - - RB_FOREACH(trb, tcp_ra, &tp->rcv_reass) { - db_printf(" reass block 0x%08x - 0x%08x\n", - trb->trb_seqs, trb->trb_seqe); - } -} -#endif +/*- + * Copyright (c) 2007-2009 + * Andre Oppermann, Internet Business Solutions AG. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)tcp_input.c 8.12 (Berkeley) 5/24/95 + * $FreeBSD: src/sys/netinet/tcp_reass.c,v 1.352 2007/05/13 22:16:13 andre Exp $ + */ + +#include +__FBSDID("$FreeBSD: src/sys/netinet/tcp_reass.c,v 1.363 2009/07/16 21:13:04 rwatson Exp $"); + +/* + * Operational overview of TCP reassembly: + * + * It is the purpose of tcp reassembly to store segments that are received + * out of order. This happens when packets are lost along the way due to + * various reasons. The most common one is traffic overload which causes + * routers to stop accepting packets for brief moments. + * + * Upon arrival of the missing segment(s) the whole chain of stored segments + * is moved into the socket buffer. In case of multiple missing segments + * the first consequtive part is moved with the remainder being kept in + * store until the next missing segment arrives. + * + * While in reassembly mode *all* arrving segments are put into the reassembly + * queue. + * + * Instead of storing all segments on their own we build blocks of consequtive + * segments chained together. We use a red-black tree to cope with arbitrary + * complexity. If a segment matches the end of one block and the start of the + * next block the two blocks are joined together. If no match is found a + * new block is created. + * + * The reassembly queues block structure is also used to track SACK + * information as a data receiver. A double-linked list is added + * that links the blocks the reverse order of their arrival or updating. + * This makes us fully compliant to RFC2018 Section 4 including all + * optional parts marked as "SHOULD". + * + * TODO: + * A further improvement is to merge the content of mbufs together if the + * preceeding one has enough space to hold the data of the new one. When + * trimming the head of an mbuf chain m_adj() empties the mbufs but leaves + * them in place. Only when trimming from the tail it actually frees them. + * Normally we don't get mbuf chains so this isn't too much of a concern + * right now. Use m_collapse() to compact the mbuf chains within the + * blocks. + */ + +#include "opt_inet.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +VNET_DEFINE(uma_zone_t, tcp_reass_zone); + +SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, + "TCP Segment Reassembly Queue"); + +static int tcp_reass_enable = 1; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_RW, + &tcp_reass_enable, 0, + "Enable/disable use of TCP reassembly queue"); + +static int tcp_reass_maxblocks = 32; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RW, + &tcp_reass_maxblocks, 0, + "Per connection limit of TCP segment blocks in reassembly queue"); + +static int tcp_reass_globalmaxblocks = 65535; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, + &tcp_reass_globalmaxblocks, 0, + "Global limit of TCP segment blocks in reassembly queue"); + +static int tcp_reass_timeout = 0; +SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, + &tcp_reass_timeout, 0, sysctl_msec_to_ticks, "I", + "Reassembly queue flush timeout in milliseconds"); + +static int tcp_reass_spacetime = 0; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, space_time, CTLFLAG_RW, + &tcp_reass_spacetime, 0, + "Reassembly queue strategy of space vs. time efficiency"); + +static struct tcp_reass_block * + tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); + +/* Trim empty mbufs from head of chain. */ +static struct mbuf * +m_trimhead(struct mbuf *m) +{ + struct mbuf *n; + + while (m->m_len == 0) { + n = m; + m = m->m_next; + m_free(n); + } + return (m); +} + +#if 0 +static u_int +m_storagesize(struct mbuf *m) +{ + u_int mcnt; + + for (mcnt = 0; m != NULL; m = m->m_next) + mcnt += (m->m_flags & M_EXT) ? + m->m_ext.ext_size + MSIZE : MSIZE; + return (mcnt); +} +#endif + +/* + * Initialize TCP reassembly zone on startup. + */ +void +tcp_reass_init(void) +{ + + TUNABLE_INT_FETCH("net.inet.tcp.reass.globalmaxblocks", + &tcp_reass_globalmaxblocks); + tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); + tcp_reass_timeout = 30 * hz; +} + +/* + * Compare function implementing the ranged lookup on the RB tree. + * NB: The tree must never have any overlapping elements. + */ +static __inline int +tcp_reass_cmp(struct tcp_reass_block *a, struct tcp_reass_block *b) +{ + if (SEQ_LT(a->trb_seqe, b->trb_seqs)) + return (-1); + else if (SEQ_GT(a->trb_seqs, b->trb_seqe)) + return (1); + else + return (0); +} + +RB_PROTOTYPE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); +RB_GENERATE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); + +#ifdef INVARIANTS +static int +tcp_reass_verify(struct tcpcb *tp) +{ + int i = 0, size = 0, total = 0; + struct mbuf *m; + struct tcp_reass_block *trb, *trbn; + + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { + KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), + ("%s: trb_seqs >= trb_seqe", __func__)); + KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt), + ("%s: rcv_nxt >= trb_seqs", __func__)); + KASSERT(trb->trb_m != NULL, + ("%s: trb_m == NULL", __func__)); + KASSERT(trb->trb_mt != NULL, + ("%s: trb_mt == NULL", __func__)); + size = SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + KASSERT(size == m_length(trb->trb_m, &m), + ("%s: seq# size != actual mbuf size", __func__)); + KASSERT(trb->trb_mt == m, + ("%s: trb_mt is not last mbuf", __func__)); + KASSERT(trbn == NULL || SEQ_LT(trb->trb_seqe, trbn->trb_seqs), + ("%s: overlaps into next block", __func__)); + total += size; + i++; + } + KASSERT(tp->rcv_reass_size == total, + ("%s: total not correct", __func__)); + + LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { + i--; + } + KASSERT(i == 0, + ("%s: sack list incorrect", __func__)); + + return (1); +} +#endif + +static void +tcp_reass_free(struct tcpcb *tp, struct tcp_reass_block *trb) +{ + + trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); + KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); + LIST_REMOVE(trb, trb_sack); + if (trb->trb_m != NULL) + m_freem(trb->trb_m); + tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + tp->rcv_reass_blocks--; + uma_zfree(tcp_reass_zone, trb); +} + +void +tcp_reass_flush(struct tcpcb *tp) +{ + struct tcp_reass_block *trb, *trbn; + + INP_WLOCK_ASSERT(tp->t_inpcb); + KASSERT(tcp_reass_verify(tp), + ("%s: reassembly queue inconsistent", __func__)); + + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { + tcp_reass_free(tp, trb); + } + KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); +} + +static __inline void +tcp_reass_sacktrack(struct tcpcb *tp, struct tcp_reass_block *trb) +{ + + if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { + if (!LIST_EMPTY(&tp->rcv_reass_sack)) + LIST_REMOVE(trb, trb_sack); + LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); + } +} + +/* + * Insert segments into the reassembly queue. + * + * NB: We must always consume the mbuf. Either by appeding it to + * the queue or by freeing it. + */ +int +tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) +{ + int thflags = 0; + tcp_seq th_seq; + struct socket *so = tp->t_inpcb->inp_socket; + struct tcp_reass_block *trb = NULL, *trbn; + struct tcp_reass_block trbs; + + INP_WLOCK_ASSERT(tp->t_inpcb); + + /* + * Call with th==NULL after becoming established to + * force pre-ESTABLISHED data up to user socket. + * XXX: Was used for T/TCP of which code remains. + */ + if (th == NULL) { + if (!TCPS_HAVEESTABLISHED(tp->t_state) || + RB_EMPTY(&tp->rcv_reass) || + ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && + trb->trb_seqs != tp->rcv_nxt)) + return (0); + trb = RB_MIN(tcp_ra, &tp->rcv_reass); + goto present; + } + + KASSERT(th != NULL, ("%s: th is NULL", __func__)); + KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); + KASSERT(m != NULL, ("%s: m is NULL", __func__)); + KASSERT(*tlenp == m_length(m, NULL), + ("%s: tlen != mbuf length", __func__)); + + /* + * Store TCP header information in local variables as + * we may lose access to it after mbuf compacting. + */ + thflags = th->th_flags; + th_seq = th->th_seq; + th = NULL; /* Prevent further use. */ + + /* Check if it is really neccessary to do all the work. */ + if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) + goto done; + + KASSERT(SEQ_LT(tp->rcv_nxt, th_seq), + ("%s: sequence number below rcv_nxt", __func__)); + KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), + ("%s: got missing segment but queue is empty", __func__)); + KASSERT(tcp_reass_verify(tp), + ("%s: reassembly queue already inconsistent", __func__)); + + /* + * Limit the number of segments in the reassembly queue to prevent + * holding on to too many segments (and thus running out of mbufs). + * Make sure to let the missing segment through which caused this + * queue. + * + * Count the gross space used by the mbufs in the reassembly queue + * and limit it to the free space in the socket buffer. This way + * the reassembly queue can never consume more mbuf space than the + * socket buffer got allocated anyway and it reflects the actual + * amount of kernel memory used. This effectively prevents mbuf + * exhaustion due to pathological traffic (one byte segments with + * a hole each time) on a single connection. + * + * Counting the gross mbuf space effectively sets the net data + * limit lower than the socket buffer would allow. + * Don't underestimates the effective free space in the socket + * buffer vs. actual real data with 2k clusters and 1500 byte + * packets by introducing a correction factor of 11/8th. + */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Jul 21 20:44:44 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 45EF1106566C; Tue, 21 Jul 2009 20:44:44 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F01BC106564A for ; Tue, 21 Jul 2009 20:44:43 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DDF478FC26 for ; Tue, 21 Jul 2009 20:44:43 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6LKihOK093555 for ; Tue, 21 Jul 2009 20:44:43 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6LKihQ8093553 for perforce@freebsd.org; Tue, 21 Jul 2009 20:44:43 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 21 Jul 2009 20:44:43 GMT Message-Id: <200907212044.n6LKihQ8093553@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 166383 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2009 20:44:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166383 Change 166383 by anchie@anchie_malimis on 2009/07/21 20:44:15 ND/SEND message is prepended to if_announcemsghdr. Affected files ... .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#21 edit Differences ... ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#21 (text+ko) ==== @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include #include #include @@ -168,6 +170,9 @@ rtm->rtm_addrs = 0; rtm->rtm_index = pi->ifinfo->ifidx; + if (rtm->rtm_flags & M_MCAST) + DBG(&dbg_snd, "M_MCAST!"); + if (send(sndsock, rtm, b->len, 0) < 0) { DBG(&dbg_snd, "Failed to send routing message back to kernel."); perror("Failed"); @@ -290,7 +295,10 @@ case RTM_SND_IN: applog(LOG_ERR, "RTM_SND_IN"); /* n = RTM hdr + SEND message */ +#if 0 if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { +#endif + if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { DBG(&dbg_snd, "invalid pkt (not enough for rtm hedaer"); goto done; } From owner-p4-projects@FreeBSD.ORG Wed Jul 22 00:53:15 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 633281065674; Wed, 22 Jul 2009 00:53:15 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2178F1065672 for ; Wed, 22 Jul 2009 00:53:15 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 047BC8FC21 for ; Wed, 22 Jul 2009 00:53:15 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6M0rFv2035516 for ; Wed, 22 Jul 2009 00:53:15 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6M0rEQI035514 for perforce@freebsd.org; Wed, 22 Jul 2009 00:53:14 GMT (envelope-from alepulver@freebsd.org) Date: Wed, 22 Jul 2009 00:53:14 GMT Message-Id: <200907220053.n6M0rEQI035514@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 166388 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 00:53:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=166388 Change 166388 by alepulver@alepulver_deimos on 2009/07/22 00:52:40 - Update FOSSology port to 1.1.0 - This version is working and will be committed to the ports tree. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#4 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#4 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/Makefile#5 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/distinfo#3 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/fossology.in#3 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-common__Makefile#2 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-common__fo-postinstall.in#2 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-db__dbcreate.in#2 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-scheduler__mkschedconf.c#2 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-scheduler__selftest.c#2 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/pkg-message.in#4 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/log.txt#3 delete .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/pkg-plist#4 edit Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#4 (text+ko) ==== ==== //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#4 (text+ko) ==== ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/Makefile#5 (text+ko) ==== @@ -11,11 +11,13 @@ # archivers/rpm4 -> archivers/rpm2cpio # # TODO: -# - Investigate scheduler problem when starting some agents. +# - Add status command to rc.d script (run through "daemon -p ..."). +# - Make it shm_open in /var/tmp from lockfs.c rather than changing +# current directory. # PORTNAME= fossology -PORTVERSION= 1.0.0 +PORTVERSION= 1.1.0 CATEGORIES= devel MASTER_SITES= SF @@ -43,9 +45,10 @@ USE_PERL5= yes USE_PGSQL= yes IGNORE_WITH_PGSQL= 73 74 80 -USE_PHP= pgsql session posix +USE_PHP= pgsql session posix pcre IGNORE_WITH_PHP=4 WANT_PHP_CLI= yes +WANT_PHP_WEB= yes USE_RC_SUBR= fossology REINPLACE_ARGS= -i '' @@ -55,7 +58,7 @@ SUB_LIST= FOSS_DB="${FOSS_DB}" PLIST_SUB= FOSS_DB="${FOSS_DB:S/${PREFIX}\///}" -MAN1= cp2foss.1 fossjobs.1 fosslic.1 +MAN1= cp2foss.1 fo_notify.1 fossjobs.1 fosslic.1 FOSS_DB?= ${DATADIR}/repository LIBDIR= ${PREFIX}/lib # is /usr/lib by default, and affects build @@ -82,9 +85,20 @@ # Fix PostgreSQL user name (postgres -> pgsql) @${REINPLACE_CMD} -e 's|su postgres|su pgsql|' \ ${WRKSRC}/db/dbcreate.in +# Fix hostname invocation + @${REINPLACE_CMD} -Ee 's|(hostname) --fqdn|\1|' \ + ${WRKSRC}/cli/fo_notify.php +# Add path to repository (might be hardcoded in other parts of FOSSology) + @${ECHO_CMD} "${FOSS_DB}" > ${WRKSRC}/common/defconf/RepPath.conf + +# XXX: this is done in rc.d script, but program could be modified as well # Fix shm file path - @${REINPLACE_CMD} -Ee 's|"(fossology-scheduler)"|"/var/tmp/\1"|' \ - ${WRKSRC}/scheduler/lockfs.c +# @${REINPLACE_CMD} -Ee 's|"(fossology-scheduler)"|"/var/tmp/\1"|' \ +# ${WRKSRC}/scheduler/lockfs.c +# Do not chdir to "/" as it does not have permission to create files there + @${REINPLACE_CMD} -e 's|daemon(0,|daemon(1,|' \ + ${WRKSRC}/scheduler/scheduler.c \ + ${WRKSRC}/scheduler/fo_watchdog.c pre-install: @${MKDIR} ${PREFIX}/lib/fossology/agents ${DATADIR}/php @@ -94,6 +108,7 @@ ${MKDIR} ${DOCSDIR} ${INSTALL_DATA} ${WRKSRC}/README ${WRKSRC}/INSTALL* ${DOCSDIR} .endif +# Copy .sample (defaults) to .conf when not present .for f in Db Depth Hosts Proxy RepPath @cd ${PREFIX}/etc/fossology && test -f ${f}.conf || \ ${CP} ${f}.conf.sample ${f}.conf ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/distinfo#3 (text+ko) ==== @@ -1,3 +1,3 @@ -MD5 (fossology-1.0.0.tar.gz) = 7d0e26d45871fac0e33a1a83c456e234 -SHA256 (fossology-1.0.0.tar.gz) = 3582c80390aa706878b2814dfb17622287b8574574609340958ddb75e6c3594a -SIZE (fossology-1.0.0.tar.gz) = 1705341 +MD5 (fossology-1.1.0.tar.gz) = deffdd25641e6b1c053e123c5307f2db +SHA256 (fossology-1.1.0.tar.gz) = c05e53e5fbaa3ac44c2fab79fcb5713668b675cbffa4bf1abccb49f18f9334d5 +SIZE (fossology-1.1.0.tar.gz) = 1994690 ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/fossology.in#3 (text+ko) ==== @@ -2,7 +2,7 @@ # # $FreeBSD$ # -# REQUIRE: DAEMON +# REQUIRE: DAEMON postgresql # PROVIDE: fossology # @@ -10,13 +10,32 @@ name="fossology" rcvar=`set_rcvar` +load_rc_config "$name" +: ${fossology_enable="NO"} + +SCHEDULER="%%PREFIX%%/lib/fossology/fossology-scheduler" +WATCHDOG="%%PREFIX%%/lib/fossology/fo_watchdog" + +start_cmd="fossology_start" +stop_cmd="fossology_stop" -load_rc_config "$name" +# FIXME: status command not implemented, but only one instance +# is allowed so there aren't problems for now. -: ${fossology_enable="NO"} -: ${fossology_flags=""} +fossology_start() +{ + echo "Starting fossology." +# XXX: Enter /var/tmp because uses shm_open in current directory, +# otherwise patch scheduler.c + cd /var/tmp && ${SCHEDULER} -d -R + cd /var/tmp && ${WATCHDOG} +} -command="%%PREFIX%%/lib/fossology/fossology-scheduler" -command_args="-d" +fossology_stop() +{ + echo "Stopping fossology." + ${WATCHDOG} -k + ${SCHEDULER} -k +} run_rc_command "$1" ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-common__Makefile#2 (text+ko) ==== ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-common__fo-postinstall.in#2 (text+ko) ==== @@ -1,15 +1,100 @@ ---- ./common/fo-postinstall.in.orig 2008-12-11 11:03:15.000000000 +0000 -+++ ./common/fo-postinstall.in 2009-07-10 01:50:46.000000000 +0000 -@@ -18,10 +18,8 @@ +--- common/fo-postinstall.in.orig 2009-07-13 21:51:17.000000000 +0000 ++++ common/fo-postinstall.in 2009-07-15 00:37:37.000000000 +0000 +@@ -8,22 +8,15 @@ + # right thing, regardless of the success of previous runs. + + ## Options parsing and setup +-# parse options +-OPTS=`getopt -o adwseoh --long agent,database,web,web-only,scheduler,scheduler-only,everything,overwrite,help -n 'fo-postinstall' -- "$@"` - eval set -- "$OPTS" +-if [ $? != 0 ]; then +- echo "ERROR: Bad option specified." +- OPTS="--help" +-fi +- +-eval set -- "$OPTS" ++# FIXME: joint options do not work (i.e. "-as" instead of "-a -s") --# if no options or just -o then do everything + # if no options or just -o then do everything -if [ "$OPTS" = " --" -o "$OPTS" = " -o --" ]; then -- EVERYTHING=1 --fi -+# FIXME: getopt is different in FreeBSD, port to bash builtin or native getopt -+EVERYTHING=1 ++if [ $# -eq 0 -o "$1" = "-o" ]; then + EVERYTHING=1 + fi - while true; do +-while true; do ++while [ $# -gt 0 ]; do case "$1" in + -a|--agent) AGENT=1; shift;; + -d|--database) DATABASE=1; shift;; +@@ -105,15 +98,10 @@ + echo "*** Creating user and group ***" + + # check for group +- if grep -q "^{$PROJECTGROUP}:" /etc/group; then ++ if pw groupshow {$PROJECTGROUP} 2>/dev/null 1>&2; then + echo "NOTE: group '{$PROJECTGROUP}' already exists, good." + else +- # use addgroup if it exists since it supports --system +- if [ -f /usr/sbin/addgroup -a ! -L /usr/sbin/addgroup ]; then +- addgroup --system {$PROJECTGROUP} +- else +- groupadd {$PROJECTGROUP} +- fi ++ pw groupadd {$PROJECTGROUP} -g 901 + if [ "$?" != "0" ] ; then + echo "ERROR: Unable to create group '{$PROJECTGROUP}'" + exit 1 +@@ -123,25 +111,18 @@ + fi + + # check for user +- if grep -q "^{$PROJECTUSER}:" /etc/passwd; then ++ if pw usershow {$PROJECTUSER} 2>/dev/null 1>&2; then + echo "NOTE: user '{$PROJECTUSER}' already exists, good." + USERSHELL=`grep "^{$PROJECTUSER}:" /etc/passwd |cut -d: -f 7` +- if [ "$USERSHELL" = "/bin/false" ]; then ++ if [ "$USERSHELL" = "/usr/sbin/nologin" ]; then + echo "ERROR: {$PROJECTUSER} shell must be a real shell" + exit 1 + fi + else + # ensure that the full parent path of the HOME exists first + mkdir -p $\{REPO%/*/*\} +- # use adduser if it exists since it supports --system, but +- # not if it's a symlink (probably to /usr/sbin/useradd) +- if [ -f /usr/sbin/adduser -a ! -L /usr/sbin/adduser ]; then +- adduser --gecos "{$PROJECT}" --ingroup {$PROJECTGROUP} --system \ +- --shell /bin/bash --home "$\{REPO%/*\}" {$PROJECTUSER} +- else +- useradd -c "{$PROJECT}" -g {$PROJECTGROUP} -m \ +- -s /bin/bash -d "$\{REPO%/*\}" {$PROJECTUSER} +- fi ++ pw useradd {$PROJECTUSER} -u 901 -g {$PROJECTGROUP} -h - \ ++ -s "/bin/bash" -d "$\{REPO%/*\}" -c "FOSSology user" + if [ "$?" != "0" ] ; then + echo "ERROR: Unable to create user '{$PROJECTUSER}'" + exit 1 +@@ -284,19 +265,12 @@ + echo "*** Setting up the web interface ***" + + # See if web server user exists, if so add to the group. +- # check for www-data (Debian, etc) +- grep -q "^www-data:" /etc/passwd +- if [ $? == 0 ] ; then +- echo "NOTE: Adding user www-data to group {$PROJECTGROUP}" +- # this is smart enough to not add multiple times so it's ok to repeat +- usermod -G {$PROJECTGROUP} -a www-data +- fi +- # check for apache (RHEL/CentOS, etc) +- grep -q "^apache:" /etc/passwd ++ # check for www (FreeBSD) ++ grep -q "^www:" /etc/passwd + if [ $? == 0 ] ; then +- echo "NOTE: Adding user apache to group {$PROJECTGROUP}" ++ echo "NOTE: Adding user www to group {$PROJECTGROUP}" + # this is smart enough to not add multiple times so it's ok to repeat +- usermod -G {$PROJECTGROUP} -a apache ++ pw groupmod {$PROJECTGROUP} -m www + fi + + fi # end of WEBONLY ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-db__dbcreate.in#2 (text+ko) ==== ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-scheduler__mkschedconf.c#2 (text+ko) ==== @@ -1,15 +1,6 @@ ---- ./scheduler/mkschedconf.c.orig 2008-10-07 19:22:46.000000000 +0000 -+++ ./scheduler/mkschedconf.c 2009-06-12 02:39:56.000000000 +0000 -@@ -81,7 +81,7 @@ - memset(Cmd,'\0',sizeof(Cmd)); - RepPath = RepGetRepPath(); - snprintf(Cmd,sizeof(Cmd)-1,Rcmd,"%s/engine-shell unpack '%s/ununpack -d %s/ununpack/%s -qRCQx'"); -- fprintf(Fout,Cmd,AGENTDIR,AGENTDIR,RepPath,"%{U}"); -+ fprintf(Fout,Cmd,AGENTDIR,AGENTDIR,RepPath,"%%{U}"); - fprintf(Fout,"\n"); - free(RepPath); - -@@ -180,7 +180,7 @@ +--- scheduler/mkschedconf.c.orig 2009-07-09 23:04:45.000000000 +0000 ++++ scheduler/mkschedconf.c 2009-07-14 01:45:35.000000000 +0000 +@@ -180,14 +180,14 @@ /** fosscp **/ fprintf(Fout,"agent=fosscp_agent %s| ",CmdHost); memset(Cmd,'\0',sizeof(Cmd)); @@ -18,3 +9,11 @@ fprintf(Fout,Cmd,AGENTDIR,BINDIR); fprintf(Fout,"\n"); + /** notify **/ + fprintf(Fout,"agent=fo_notify %s| ",CmdHost); + memset(Cmd,'\0',sizeof(Cmd)); +- snprintf(Cmd,sizeof(Cmd)-1,Rcmd,"%s/engine-shell fo_notify '%s/fo_notify %{*}'"); ++ snprintf(Cmd,sizeof(Cmd)-1,Rcmd,"%s/engine-shell fo_notify '%s/fo_notify %%{*}'"); + fprintf(Fout,Cmd,AGENTDIR,BINDIR); + fprintf(Fout,"\n"); + ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-scheduler__selftest.c#2 (text+ko) ==== ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/pkg-message.in#4 (text+ko) ==== @@ -41,6 +41,11 @@ # %%PREFIX%%/lib/fossology/fo-postinstall + IMPORTANT: if you have the web server running, you must restart it + because the "www" user has been added to the "fossy" group. Without + this you will get a "Permission denied" when accessing + "http://localhost/repo/". + 7. Enable at startup, add the following line to /etc/rc.conf: fossology_enable="YES" ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/pkg-plist#4 (text+ko) ==== @@ -1,5 +1,6 @@ bin/cp2foss bin/departition +bin/fo_notify bin/fossinit bin/fossjobs bin/fosslic @@ -38,6 +39,7 @@ lib/fossology/dbcheck lib/fossology/dbcreate lib/fossology/fo-postinstall +lib/fossology/fo_watchdog lib/fossology/fossology-scheduler lib/fossology/fossologyinit.sql lib/fossology/mkschedconf @@ -191,6 +193,8 @@ %%DATADIR%%/agents/licenses/CDDL/CDDL v1.0.meta %%DATADIR%%/agents/licenses/CPAL/CPAL v1.0 %%DATADIR%%/agents/licenses/CPAL/CPAL v1.0.meta +%%DATADIR%%/agents/licenses/CPL/Common Public License v0.5 +%%DATADIR%%/agents/licenses/CPL/Common Public License v0.5.meta %%DATADIR%%/agents/licenses/CPL/Common Public License v1.0 %%DATADIR%%/agents/licenses/CPL/Common Public License v1.0.meta %%DATADIR%%/agents/licenses/CPL/IBM/IBM_PL/IBM Public License v1.0 @@ -229,10 +233,12 @@ %%DATADIR%%/agents/licenses/Corporate/IBM/IBM JRE.meta %%DATADIR%%/agents/licenses/Corporate/IBM/IBM reciprocal %%DATADIR%%/agents/licenses/Corporate/IBM/IBM reciprocal.meta -%%DATADIR%%/agents/licenses/Corporate/Intel -%%DATADIR%%/agents/licenses/Corporate/Intel reference -%%DATADIR%%/agents/licenses/Corporate/Intel reference.meta -%%DATADIR%%/agents/licenses/Corporate/Intel.meta +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel reference +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel reference.meta +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel-BSD +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel-BSD.meta +%%DATADIR%%/agents/licenses/Corporate/Intel/Intel.meta %%DATADIR%%/agents/licenses/Corporate/Logica/Logica Open Source License v1.0 %%DATADIR%%/agents/licenses/Corporate/Logica/Logica Open Source License v1.0.meta %%DATADIR%%/agents/licenses/Corporate/Lucent/Lucent Public License v1.0 @@ -255,6 +261,8 @@ %%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft Reciprocal License.meta %%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft Reference License %%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft Reference License.meta +%%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft SDK EULA +%%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft SDK EULA.meta %%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft Shared Source License %%DATADIR%%/agents/licenses/Corporate/Microsoft/Microsoft Shared Source License.meta %%DATADIR%%/agents/licenses/Corporate/Motorola @@ -275,12 +283,12 @@ %%DATADIR%%/agents/licenses/Corporate/Nvidia/Nvidia Source Code.meta %%DATADIR%%/agents/licenses/Corporate/RSA/RSA-Security %%DATADIR%%/agents/licenses/Corporate/RSA/RSA-Security.meta -%%DATADIR%%/agents/licenses/Corporate/SGI/Free Software License B v1.0 -%%DATADIR%%/agents/licenses/Corporate/SGI/Free Software License B v1.0.meta -%%DATADIR%%/agents/licenses/Corporate/SGI/Free Software License B v1.1 -%%DATADIR%%/agents/licenses/Corporate/SGI/Free Software License B v1.1.meta %%DATADIR%%/agents/licenses/Corporate/SGI/SGI CID v1.0 %%DATADIR%%/agents/licenses/Corporate/SGI/SGI CID v1.0.meta +%%DATADIR%%/agents/licenses/Corporate/SGI/SGI FSL B v1.0 +%%DATADIR%%/agents/licenses/Corporate/SGI/SGI FSL B v1.0.meta +%%DATADIR%%/agents/licenses/Corporate/SGI/SGI FSL B v1.1 +%%DATADIR%%/agents/licenses/Corporate/SGI/SGI FSL B v1.1.meta %%DATADIR%%/agents/licenses/Corporate/SGI/SGI GLX v1.0 %%DATADIR%%/agents/licenses/Corporate/SGI/SGI GLX v1.0.meta %%DATADIR%%/agents/licenses/Corporate/Skype @@ -497,8 +505,6 @@ %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 Preamble %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 Preamble.meta %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference -%%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 1 -%%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 1.meta %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 2 %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 2.meta %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 3 @@ -516,6 +522,8 @@ %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 9 %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference 9.meta %%DATADIR%%/agents/licenses/GPL/v2/GPL v2 reference.meta +%%DATADIR%%/agents/licenses/GPL/v2/GPL v2+ reference 1 +%%DATADIR%%/agents/licenses/GPL/v2/GPL v2+ reference 1.meta %%DATADIR%%/agents/licenses/GPL/v2/GPL v2.meta %%DATADIR%%/agents/licenses/GPL/v2/McKornik Jr. Public License %%DATADIR%%/agents/licenses/GPL/v2/McKornik Jr. Public License.meta @@ -767,6 +775,8 @@ %%DATADIR%%/agents/licenses/RedHat/Red Hat EULA.meta %%DATADIR%%/agents/licenses/RedHat/Red Hat reference %%DATADIR%%/agents/licenses/RedHat/Red Hat reference.meta +%%DATADIR%%/agents/licenses/RedHat/eCos v1.1 +%%DATADIR%%/agents/licenses/RedHat/eCos v1.1.meta %%DATADIR%%/php/pathinclude.php %%DATADIR%%/www/common/common-active.php %%DATADIR%%/www/common/common-agents.php @@ -921,6 +931,7 @@ @dirrm %%DATADIR%%/agents/licenses/Corporate/Microsoft @dirrm %%DATADIR%%/agents/licenses/Corporate/Lucent @dirrm %%DATADIR%%/agents/licenses/Corporate/Logica +@dirrm %%DATADIR%%/agents/licenses/Corporate/Intel @dirrm %%DATADIR%%/agents/licenses/Corporate/IBM @dirrm %%DATADIR%%/agents/licenses/Corporate/Helix @dirrm %%DATADIR%%/agents/licenses/Corporate/HP @@ -951,6 +962,7 @@ @dirrm %%DATADIR%%/agents/licenses/AFL @dirrm %%DATADIR%%/agents/licenses @dirrm %%DATADIR%%/agents -@dirrm %%DATADIR%% +@unexec rmdir %D/%%DATADIR%% >/dev/null || echo "If you are permanently removing FOSSology, please manually remove the repository files in \"%D/%%DATADIR%%\"." | fmt %%PORTDOCS%%@dirrm %%DOCSDIR%% -@dirrm %%ETCDIR%% +@dirrm lib/fossology/agents +@dirrm lib/fossology From owner-p4-projects@FreeBSD.ORG Wed Jul 22 10:16:31 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 37D3B1065672; Wed, 22 Jul 2009 10:16:31 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBC1B106564A for ; Wed, 22 Jul 2009 10:16:30 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BFCA88FC08 for ; Wed, 22 Jul 2009 10:16:30 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MAGUxq006153 for ; Wed, 22 Jul 2009 10:16:30 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MAGUGf006151 for perforce@freebsd.org; Wed, 22 Jul 2009 10:16:30 GMT (envelope-from jona@FreeBSD.org) Date: Wed, 22 Jul 2009 10:16:30 GMT Message-Id: <200907221016.n6MAGUGf006151@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166400 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 10:16:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=166400 Change 166400 by jona@jona-trustedbsd-belle-vmware on 2009/07/22 10:15:54 Added patches for libfontconfig - there's still something to be fixed here, but I have seen it work... Affected files ... .. //depot/projects/trustedbsd/capabilities/qt-patches/x11-fonts/fontconfig/files/patch-bsd-capabilities.diff#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Wed Jul 22 12:30:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 79010106566C; Wed, 22 Jul 2009 12:30:59 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38B47106566B for ; Wed, 22 Jul 2009 12:30:59 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0BFB38FC16 for ; Wed, 22 Jul 2009 12:30:59 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MCUwYb017793 for ; Wed, 22 Jul 2009 12:30:58 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MCUwJg017791 for perforce@freebsd.org; Wed, 22 Jul 2009 12:30:58 GMT (envelope-from truncs@FreeBSD.org) Date: Wed, 22 Jul 2009 12:30:58 GMT Message-Id: <200907221230.n6MCUwJg017791@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 166404 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 12:31:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=166404 Change 166404 by truncs@aditya on 2009/07/22 12:30:09 1) style(9) fixes 2) remove unused macrosses Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#32 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#27 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#11 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_alloc.c#32 (text+ko) ==== @@ -59,7 +59,6 @@ int)); static daddr_t ext2_nodealloccg(struct inode *, int, daddr_t, int); static daddr_t ext2_mapsearch(struct m_ext2fs *, char *, daddr_t); -static void mark_buffer_dirty2(struct buf *bh); /* * Allocate a block in the file system. * @@ -179,10 +178,10 @@ struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; + struct cluster_save *buflist; + struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; int32_t *bap, *sbap, *ebap; - struct cluster_save *buflist; int32_t start_lbn, end_lbn, soff, eoff, newblk, blkno; - struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; int i, len, start_lvl, end_lvl, pref, ssize; vp = ap->a_vp; @@ -641,10 +640,10 @@ ext2_alloccg(struct inode *ip, int cg, daddr_t bpref, int size) { struct m_ext2fs *fs; + struct buf *bp; + int error, bno, start, end, loc; char *bbp; - struct buf *bp; /* XXX ondisk32 */ - int error, bno, start, end, loc; fs = ip->i_e2fs; if (fs->e2fs_gd[cg].ext2bgd_nbfree == 0) @@ -723,9 +722,9 @@ ext2_nodealloccg(struct inode *ip, int cg, daddr_t ipref, int mode) { struct m_ext2fs *fs; - char *ibp; struct buf *bp; int error, start, len, loc, map, i; + char *ibp; uprintf("1\n"); ipref--; /* to avoid a lot of (ipref -1) */ if (ipref == -1) ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#27 (text+ko) ==== @@ -57,7 +57,6 @@ #define MAXMNTLEN 512 #define EXT2_MAX_GROUP_LOADED 8 -#define buffer_head buf #define e2fs_cgload(old, new, size) memcpy((new), (old), (size)); #define e2fs_cgsave(old, new, size) memcpy((new), (old), (size)); /* ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/fs.h#11 (text+ko) ==== @@ -142,23 +142,3 @@ #define lock_super(devvp) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY) #define unlock_super(devvp) VOP_UNLOCK(devvp, 0) -/* - * Historically, ext2fs kept it's metadata buffers on the LOCKED queue. Now, - * we change the lock owner to kern so that we may use it from contexts other - * than the one that originally locked it. When we are finished with the - * buffer, we release it, writing it first if it was dirty. - */ -#define LCK_BUF(bp) { \ - (bp)->b_flags |= B_PERSISTENT; \ - BUF_KERNPROC(bp); \ -} - -#define ULCK_BUF(bp) { \ - long flags; \ - flags = (bp)->b_flags; \ - (bp)->b_flags &= ~(B_DIRTY | B_PERSISTENT); \ - if (flags & B_DIRTY) \ - bwrite(bp); \ - else \ - brelse(bp); \ -} From owner-p4-projects@FreeBSD.ORG Wed Jul 22 13:01:33 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E25571065670; Wed, 22 Jul 2009 13:01:32 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1E00106566B for ; Wed, 22 Jul 2009 13:01:32 +0000 (UTC) (envelope-from gk@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8E79F8FC18 for ; Wed, 22 Jul 2009 13:01:32 +0000 (UTC) (envelope-from gk@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MD1W6Q029997 for ; Wed, 22 Jul 2009 13:01:32 GMT (envelope-from gk@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MD1Wba029995 for perforce@freebsd.org; Wed, 22 Jul 2009 13:01:32 GMT (envelope-from gk@FreeBSD.org) Date: Wed, 22 Jul 2009 13:01:32 GMT Message-Id: <200907221301.n6MD1Wba029995@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gk@FreeBSD.org using -f From: Gleb Kurtsou To: Perforce Change Reviews Cc: Subject: PERFORCE change 166406 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 13:01:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=166406 Change 166406 by gk@gk_h1 on 2009/07/22 13:00:50 Add support for multiply keys per filesystem Replace sbin/mount_pefs with sbin/pefs (it also installs link to /sbin/mount_pefs) Configuration utility is capable of mounting/unmounting filesystems, adding/deleting keys Affected files ... .. //depot/projects/soc2009/gk_pefs/sbin/mount_pefs/Makefile#2 delete .. //depot/projects/soc2009/gk_pefs/sbin/mount_pefs/mount_pefs.c#2 delete .. //depot/projects/soc2009/gk_pefs/sbin/pefs/Makefile#1 add .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.c#1 add .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.h#1 add .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_key.c#1 add .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_mount.c#1 add .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs.h#7 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_crypto.c#4 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_subr.c#7 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vfsops.c#6 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vnops.c#7 edit Differences ... ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs.h#7 (text+ko) ==== @@ -38,29 +38,48 @@ */ #include +#include #include #include #include #include -#ifdef _KERNEL +#define PEFS_ALG_SALSA20 1 #define PEFS_TWEAK_SIZE 8 #define PEFS_KEY_BITS 256 #define PEFS_KEY_SIZE (PEFS_KEY_BITS / 8) +#define PEFS_KEYID_SIZE 8 #define PEFS_NAME_CSUM_SIZE 2 +struct pefs_xkey { + int pxk_index; + int pxk_alg; + char pxk_keyid[PEFS_KEYID_SIZE]; + char pxk_key[PEFS_KEY_SIZE]; +}; + +#define PEFS_GETKEY _IOWR('p', 0, struct pefs_xkey) +#define PEFS_ADDKEY _IOWR('p', 1, struct pefs_xkey) +#define PEFS_SETKEY _IOWR('p', 2, struct pefs_xkey) +#define PEFS_DELKEY _IOWR('p', 3, struct pefs_xkey) +#define PEFS_FLUSHKEYS _IO('p', 4) + +#ifdef _KERNEL + #define PEFS_NAME_NTOP_SIZE(a) (((a) * 4 + 2)/3) #define PEFS_NAME_PTON_SIZE(a) (((a) * 3)/4) -LIST_HEAD(pefs_key_head, pefs_key); +TAILQ_HEAD(pefs_key_head, pefs_key); struct pefs_key { volatile u_int pk_refcnt; - LIST_ENTRY(pefs_key) pk_entry; + int pk_alg; + TAILQ_ENTRY(pefs_key) pk_entry; struct mtx *pk_entry_lock; char pk_name[PEFS_KEY_SIZE]; char pk_data[PEFS_KEY_SIZE]; + char pk_keyid[PEFS_KEYID_SIZE]; }; struct pefs_tkey { @@ -79,7 +98,7 @@ }; struct pefs_mount { - struct mount *pm_vfs; + struct mount *pm_lowervfs; struct vnode *pm_rootvp; /* Reference to root pefs_node */ struct mtx pm_keys_lock; struct pefs_key_head pm_keys; @@ -95,21 +114,21 @@ struct uio pc_uio; }; -static inline struct pefs_mount* +static inline struct pefs_mount * VFS_TO_PEFS(struct mount *mp) { MPASS(mp != NULL && mp->mnt_data != NULL); return ((struct pefs_mount *)(mp->mnt_data)); } -static inline struct pefs_node* +static inline struct pefs_node * VP_TO_PN(struct vnode *vp) { MPASS(vp != NULL && vp->v_data != NULL); return ((struct pefs_node *)vp->v_data); } -static inline struct vnode* +static inline struct vnode * PN_TO_VP(struct pefs_node *pn) { MPASS(pn != NULL && pn->pn_vnode != NULL); @@ -120,7 +139,7 @@ struct vnode *pefs_checkvp(struct vnode *vp, char *fil, int lno); #endif -static inline struct vnode* +static inline struct vnode * PEFS_LOWERVP(struct vnode *vp) { struct vnode *lvp; @@ -146,15 +165,20 @@ int pefs_node_get(struct mount *mp, struct vnode *lvp, struct vnode *ldvp, struct vnode **vpp, struct ucred *cred, struct pefs_tkey *ptk); void pefs_node_free(struct pefs_node *xp); int pefs_node_lookup_name(struct vnode *lvp, struct vnode *ldvp, struct ucred *cred, char *encname, int *encname_len); -struct pefs_key* pefs_node_key(struct pefs_node *pn); +struct pefs_key * pefs_node_key(struct pefs_node *pn); -struct pefs_ctx *pefs_ctx_get(void); +struct pefs_ctx * pefs_ctx_get(void); void pefs_ctx_free(struct pefs_ctx *ctx); -struct pefs_key* pefs_key_get(char *passwd, int passwd_len); -struct pefs_key* pefs_key_ref(struct pefs_key *pk); +struct pefs_key * pefs_key_get(int alg, const char *key, const char *keyid); +struct pefs_key * pefs_key_ref(struct pefs_key *pk); void pefs_key_release(struct pefs_key *pk); +struct pefs_key * pefs_key_lookup(struct pefs_mount *pm, char *keyid); +int pefs_key_add(struct pefs_mount *pm, int index, struct pefs_key *pk); +void pefs_key_remove(struct pefs_mount *pm, struct pefs_key *pk); +int pefs_key_remove_all(struct pefs_mount *pm); + void pefs_data_encrypt(struct pefs_ctx *ctx, struct pefs_tkey *ptk, off_t offset, struct pefs_chunk *pc); void pefs_data_decrypt(struct pefs_ctx *ctx, struct pefs_tkey *ptk, off_t offset, struct pefs_chunk *pc); @@ -164,12 +188,12 @@ int pefs_name_ntop(u_char const *src, size_t srclength, char *target, size_t targsize); int pefs_name_pton(char const *src, size_t srclen, u_char *target, size_t targsize); -struct pefs_chunk* pefs_chunk_create(size_t size); +struct pefs_chunk * pefs_chunk_create(size_t size); void pefs_chunk_restore(struct pefs_chunk* pc); void pefs_chunk_free(struct pefs_chunk* pc); void* pefs_chunk_pullup(struct pefs_chunk *pc, size_t size); -struct uio* pefs_chunk_uio(struct pefs_chunk *pc, off_t uio_offset, enum uio_rw uio_rw); -struct uio* pefs_chunk_uio_range(struct pefs_chunk *pc, size_t skip, size_t size, off_t uio_offset, enum uio_rw uio_rw); +struct uio * pefs_chunk_uio(struct pefs_chunk *pc, off_t uio_offset, enum uio_rw uio_rw); +struct uio * pefs_chunk_uio_range(struct pefs_chunk *pc, size_t skip, size_t size, off_t uio_offset, enum uio_rw uio_rw); void* pefs_chunk_get(struct pefs_chunk *pc, size_t *size, long *_state); void pefs_chunk_zero(struct pefs_chunk *pc); int pefs_chunk_copy(struct pefs_chunk *pc, size_t skip, struct uio *uio); @@ -178,13 +202,13 @@ extern struct vop_vector pefs_vnodeops; -static inline struct pefs_key* +static inline struct pefs_key * pefs_rootkey(struct pefs_mount *pm) { struct pefs_key *pk; mtx_lock(&pm->pm_keys_lock); - pk = LIST_FIRST(&pm->pm_keys); + pk = TAILQ_FIRST(&pm->pm_keys); mtx_unlock(&pm->pm_keys_lock); return (pk); ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_crypto.c#4 (text+ko) ==== @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2009 Gleb Kurtsou. All rights reserved. + * Copyright (c) 2009 Gleb Kurtsou + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -44,16 +45,9 @@ 0x5c, 0x83, 0xcb, 0x96, 0x2f, 0xaf, 0x3b, 0xb5, }; -#define MAGIC_KEYGEN_ITERATIONS 32 +#define MAGIC_KEYGEN_ITERATIONS 16 -static const uint8_t magic_key_keygen[PEFS_KEY_SIZE] = { - 0xd2, 0x68, 0x7d, 0x52, 0xb7, 0xc1, 0xe0, 0xc7, - 0x26, 0xf1, 0x53, 0xaf, 0xa1, 0x46, 0x7a, 0xc9, - 0x3a, 0x37, 0xc6, 0xf6, 0x7d, 0xd3, 0xbe, 0xed, - 0xf4, 0x52, 0x24, 0x9e, 0x6c, 0x85, 0xd9, 0x5c, -}; - -static const uint8_t magic_tweak_keygen[PEFS_TWEAK_SIZE] = { +static const char magic_tweak_keygen[PEFS_TWEAK_SIZE] = { 0xc8, 0x27, 0xa3, 0x7e, 0xcf, 0x86, 0x3d, 0x0d, }; @@ -68,10 +62,10 @@ pefs_crypto_init(void) { pefs_ctx_zone = uma_zcreate("pefs_ctx", sizeof(struct pefs_ctx), - NULL, NULL, NULL, (uma_fini) bzero, + NULL, NULL, NULL, (uma_fini)bzero, UMA_ALIGN_PTR, 0); pefs_key_zone = uma_zcreate("pefs_key", sizeof(struct pefs_key), - NULL, NULL, NULL, (uma_fini) bzero, + NULL, NULL, NULL, (uma_fini)bzero, UMA_ALIGN_PTR, 0); } @@ -94,47 +88,50 @@ uma_zfree(pefs_ctx_zone, ctx); } +/* + * This is not a key derivation function in common sense! + * Key should be cryptographically strong. + */ static void -pefs_key_generate(struct pefs_ctx *ctx, uint8_t *key) +pefs_key_generate(struct pefs_ctx *ctx, char *key) { - uint8_t tweak[PEFS_TWEAK_SIZE]; + char tweak[PEFS_TWEAK_SIZE]; int i, j; memcpy(tweak, magic_tweak_keygen, PEFS_TWEAK_SIZE); - salsa20_keysetup(&ctx->pctx_salsa, magic_key_keygen, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, tweak, 0); - salsa20_crypt(&ctx->pctx_salsa, key, key, PEFS_KEY_SIZE); - for (i = 1; i < MAGIC_KEYGEN_ITERATIONS; i++) { - for (j = 0; j < PEFS_TWEAK_SIZE; j++) - tweak[j]++; salsa20_keysetup(&ctx->pctx_salsa, key, PEFS_KEY_BITS); salsa20_ivsetup(&ctx->pctx_salsa, tweak, i * 64); salsa20_crypt(&ctx->pctx_salsa, key, key, PEFS_KEY_SIZE); + for (j = 0; j < PEFS_TWEAK_SIZE; j++) + tweak[j]++; } } struct pefs_key * -pefs_key_get(char *passwd, int passwd_len) +pefs_key_get(int alg, const char *key, const char *keyid) { struct pefs_ctx *ctx; struct pefs_key *pk; - int i; + + switch (alg) { + case PEFS_ALG_SALSA20: + break; + default: + return (NULL); + } pk = uma_zalloc(pefs_key_zone, M_WAITOK | M_ZERO); + pk->pk_alg = alg; refcount_init(&pk->pk_refcnt, 1); - - if (passwd_len > PEFS_KEY_SIZE) - passwd_len = PEFS_KEY_SIZE; - memcpy(pk->pk_name, passwd, passwd_len); - for (i = passwd_len; i < PEFS_KEY_SIZE; i++) - pk->pk_name[i] = passwd[i % passwd_len]; + memcpy(pk->pk_keyid, keyid, PEFS_KEYID_SIZE); ctx = pefs_ctx_get(); + memcpy(pk->pk_data, key, PEFS_KEY_SIZE); + pefs_key_generate(ctx, pk->pk_data); + memcpy(pk->pk_name, pk->pk_data, PEFS_KEY_SIZE); pefs_key_generate(ctx, pk->pk_name); - memcpy(pk->pk_data, pk->pk_name, PEFS_KEY_SIZE); - pefs_key_generate(ctx, pk->pk_data); pefs_ctx_free(ctx); return (pk); @@ -152,8 +149,95 @@ { if (pk == NULL) return; - if (refcount_release(&pk->pk_refcnt)) + if (pk->pk_refcnt == 0) { + PEFSDEBUG("!!!! pefs_key_release: zero reference count\n"); + return; + } + if (refcount_release(&pk->pk_refcnt)) { + PEFSDEBUG("pefs_key_release: free pk=%p\n", pk); uma_zfree(pefs_key_zone, pk); + } +} + +struct pefs_key * +pefs_key_lookup(struct pefs_mount *pm, char *keyid) +{ + struct pefs_key *pk; + + mtx_assert(&pm->pm_keys_lock, MA_OWNED); + TAILQ_FOREACH(pk, &pm->pm_keys, pk_entry) { + if (memcmp(pk->pk_keyid, keyid, PEFS_KEYID_SIZE) == 0) { + return (pk); + } + } + + return (NULL); +} + +int +pefs_key_add(struct pefs_mount *pm, int index, struct pefs_key *pk) +{ + struct pefs_key *i, *pk_pos; + int pos; + + mtx_lock(&pm->pm_keys_lock); + if (index == 0 && !TAILQ_EMPTY(&pm->pm_keys)) { + mtx_unlock(&pm->pm_keys_lock); + return (EEXIST); + } + pk_pos = NULL; + pos = 0; + TAILQ_FOREACH(i, &pm->pm_keys, pk_entry) { + if (memcmp(pk->pk_keyid, i->pk_keyid, PEFS_KEYID_SIZE) == 0 || + memcmp(pk->pk_name, i->pk_name, PEFS_KEY_SIZE) == 0 || + memcmp(pk->pk_data, i->pk_data, PEFS_KEY_SIZE) == 0) { + mtx_unlock(&pm->pm_keys_lock); + return (EEXIST); + } + if (index == pos + 1) { + pk_pos = i; + } + } + pk->pk_entry_lock = &pm->pm_keys_lock; + if (TAILQ_EMPTY(&pm->pm_keys)) { + TAILQ_INSERT_HEAD(&pm->pm_keys, pk, pk_entry); + PEFSDEBUG("pefs_key_add: root key added: %p\n", pk); + } else if (pk_pos == NULL) { + TAILQ_INSERT_TAIL(&pm->pm_keys, pk, pk_entry); + PEFSDEBUG("pefs_key_add: tail key added: %p\n", pk); + } else { + TAILQ_INSERT_AFTER(&pm->pm_keys, pk_pos, pk, pk_entry); + PEFSDEBUG("pefs_key_add: key added at pos=%d: %p\n", pos, pk); + } + mtx_unlock(&pm->pm_keys_lock); + + return (0); +} + +void +pefs_key_remove(struct pefs_mount *pm, struct pefs_key *pk) +{ + mtx_assert(&pm->pm_keys_lock, MA_OWNED); + MPASS(pk->pk_entry_lock != NULL); + TAILQ_REMOVE(&pm->pm_keys, pk, pk_entry); + pk->pk_entry_lock = NULL; + PEFSDEBUG("pefs_key_remove: pk=%p\n", pk); + pefs_key_release(pk); +} + +int +pefs_key_remove_all(struct pefs_mount *pm) +{ + int n = 0; + + mtx_lock(&pm->pm_keys_lock); + while (!TAILQ_EMPTY(&pm->pm_keys)) { + pefs_key_remove(pm, TAILQ_FIRST(&pm->pm_keys)); + n++; + } + mtx_unlock(&pm->pm_keys_lock); + + return (n); } void @@ -277,14 +361,20 @@ int pefs_name_decrypt(struct pefs_ctx *ctx, struct pefs_key *pk, struct pefs_tkey *ptk, const char *enc, size_t enc_len, char *plain, size_t plain_size) { - u_short csum; + struct pefs_key *ki; + char *dec; int free_ctx = 0; - int r; + int r, ki_rev; if (pk == NULL) { PEFSDEBUG("!!!! %s: NULL pk\n", __func__); return (-1); } + + if (enc == plain) { + PEFSDEBUG("pefs_name_decrypt: enc == plain\n"); + return (-1); + } r = pefs_name_pton(enc, enc_len, plain, plain_size); if (r < 0 || r <= PEFS_TWEAK_SIZE + PEFS_NAME_CSUM_SIZE) { @@ -297,29 +387,55 @@ free_ctx = 1; } - salsa20_keysetup(&ctx->pctx_salsa, pk->pk_name, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); - salsa20_crypt(&ctx->pctx_salsa, plain, plain, r); + ki = pk; + ki_rev = 0; + if (plain_size >= r * 2) + dec = plain + r; + else + dec = plain; + do { + PEFSDEBUG("pefs_name_decrypt: check key %p\n", ki); + salsa20_keysetup(&ctx->pctx_salsa, ki->pk_name, PEFS_KEY_BITS); + salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); + salsa20_crypt(&ctx->pctx_salsa, plain, dec, r); + + if (pefs_name_checksum(dec, r) == 0) + break; + + if (plain == dec) { + /* Restore previous value. */ + salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); + salsa20_crypt(&ctx->pctx_salsa, dec, plain, r); + } + + if (!ki_rev) { + ki = TAILQ_NEXT(ki, pk_entry); + PEFSDEBUG("pefs_name_decrypt: next key %p\n", ki); + if (ki == NULL) { + ki_rev = 1; + ki = pk; + } + } + if (ki_rev) { + ki = TAILQ_PREV(ki, pefs_key_head, pk_entry); + PEFSDEBUG("pefs_name_decrypt: prev key %p\n", ki); + } + } while (ki != NULL); if (free_ctx) pefs_ctx_free(ctx); - csum = pefs_name_checksum(plain, r); - if (csum != 0) { - PEFSDEBUG("%s: invalid csum = %d\n", __func__, csum); + if (ki == NULL) return (-1); - } if (ptk) { - ptk->ptk_key = pk; - memcpy(plain, ptk->ptk_tweak, PEFS_TWEAK_SIZE); + ptk->ptk_key = ki; + memcpy(ptk->ptk_tweak, dec, PEFS_TWEAK_SIZE); } r -= PEFS_TWEAK_SIZE + PEFS_NAME_CSUM_SIZE; - memcpy(plain, plain + PEFS_TWEAK_SIZE, r); - - if (r < plain_size) - plain[r] = '\0'; + memcpy(plain, dec + PEFS_TWEAK_SIZE, r); + plain[r] = '\0'; PEFSDEBUG("pefs_name_decrypt: %d; %.*s => %.*s\n", r, enc_len, enc, r < 0 ? 0 : r, plain); ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_subr.c#7 (text+ko) ==== @@ -182,6 +182,7 @@ PEFSDEBUG("pefs_insmntque_dtr: free node %p\n", pn); vp->v_data = NULL; vp->v_vnlock = &vp->v_lock; + PEFSDEBUG("pefs_insmntque_dtr: pk=%p\n", pn->pn_tkey.ptk_key); pefs_key_release(pn->pn_tkey.ptk_key); uma_zfree(pefs_node_zone, pn); vp->v_op = &dead_vnodeops; @@ -321,6 +322,9 @@ if (xp->pn_tkey.ptk_key != NULL) xp->pn_flags = PN_HASKEY; } + if (xp->pn_tkey.ptk_key != NULL) { + PEFSDEBUG("pefs_node_get: node has key: pk_refcnt=%d\n", xp->pn_tkey.ptk_key->pk_refcnt); + } error = getnewvnode("pefs", mp, &pefs_vnodeops, &vp); if (error) { ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vfsops.c#6 (text+ko) ==== @@ -133,20 +133,12 @@ M_PEFSMNT, M_WAITOK | M_ZERO); /* XXX */ mtx_init(&xmp->pm_keys_lock, "pefs_mount lock", NULL, MTX_DEF); - LIST_INIT(&xmp->pm_keys); - -#if 0 - // FIXME - struct pefs_key *pk; - pk = pefs_key_get("a", 1); - pk->pk_entry_lock = &xmp->pm_keys_lock; - LIST_INSERT_HEAD(&xmp->pm_keys, pk, pk_entry); -#endif + TAILQ_INIT(&xmp->pm_keys); /* * Save reference to underlying FS */ - xmp->pm_vfs = lowerrootvp->v_mount; + xmp->pm_lowervfs = lowerrootvp->v_mount; /* * Save reference. Each mount also holds @@ -219,15 +211,7 @@ */ pm = VFS_TO_PEFS(mp); mp->mnt_data = 0; - mtx_lock(&pm->pm_keys_lock); - while (!LIST_EMPTY(&pm->pm_keys)) { - struct pefs_key *pk = LIST_FIRST(&pm->pm_keys); - - LIST_REMOVE(pk, pk_entry); - pk->pk_entry_lock = NULL; - pefs_key_release(pk); - } - mtx_unlock(&pm->pm_keys_lock); + pefs_key_remove_all(pm); mtx_destroy(&pm->pm_keys_lock); free(pm, M_PEFSMNT); return 0; @@ -248,10 +232,6 @@ vp = VFS_TO_PEFS(mp)->pm_rootvp; VREF(vp); -#ifdef PEFSXXX_DEBUG - if (VOP_ISLOCKED(vp)) - panic("root vnode is locked.\n"); -#endif vn_lock(vp, flags | LK_RETRY); *vpp = vp; return 0; @@ -260,7 +240,7 @@ static int pefs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg) { - return VFS_QUOTACTL(VFS_TO_PEFS(mp)->pm_vfs, cmd, uid, arg); + return VFS_QUOTACTL(VFS_TO_PEFS(mp)->pm_lowervfs, cmd, uid, arg); } static int @@ -275,7 +255,7 @@ bzero(&mstat, sizeof(mstat)); - error = VFS_STATFS(VFS_TO_PEFS(mp)->pm_vfs, &mstat); + error = VFS_STATFS(VFS_TO_PEFS(mp)->pm_lowervfs, &mstat); if (error) return (error); @@ -305,7 +285,7 @@ pefs_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) { int error; - error = VFS_VGET(VFS_TO_PEFS(mp)->pm_vfs, ino, flags, vpp); + error = VFS_VGET(VFS_TO_PEFS(mp)->pm_lowervfs, ino, flags, vpp); if (error) return (error); @@ -317,7 +297,7 @@ { int error; - error = VFS_FHTOVP(VFS_TO_PEFS(mp)->pm_vfs, fidp, vpp); + error = VFS_FHTOVP(VFS_TO_PEFS(mp)->pm_lowervfs, fidp, vpp); if (error) return (error); @@ -333,7 +313,7 @@ static int pefs_extattrctl(struct mount *mp, int cmd, struct vnode *filename_vp, int namespace, const char *attrname) { - return VFS_EXTATTRCTL(VFS_TO_PEFS(mp)->pm_vfs, cmd, filename_vp, + return VFS_EXTATTRCTL(VFS_TO_PEFS(mp)->pm_lowervfs, cmd, filename_vp, namespace, attrname); } ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vnops.c#7 (text+ko) ==== @@ -131,12 +131,6 @@ pec->pec_cn.cn_consume = 0; // XXX?? PEFSDEBUG("%s: cn_flags=%lu\n", __func__, cnp->cn_flags); - /* - printf("%s: ENC cn_nameiop=%lx, cn_pnbuf=%s; cn_nameptr=%.*s; cn_consume=%d, cn_namelen=%d\n", - __func__, cnp->cn_nameiop, cnp->cn_pnbuf, (int) cnp->cn_namelen, cnp->cn_nameptr, - (int) cnp->cn_consume, (int) cnp->cn_namelen); - */ - return (0); } @@ -300,6 +294,49 @@ } /* + * Recycle vnodes using key pk. + * If pk is NULL recycle all vnodes with PN_HASKEY flag set. + */ +static int +pefs_flushkey(struct mount *mp, struct pefs_key *pk) +{ + struct vnode *vp, *mvp; + struct pefs_node *pn; + int error; + + PEFSDEBUG("pefs_flushkey: pk=%p\n", pk); + MNT_ILOCK(mp); +loop: + MNT_VNODE_FOREACH(vp, mp, mvp) { + if (vp->v_type != VREG && vp->v_type != VDIR) + continue; + VI_LOCK(vp); + pn = VP_TO_PN(vp); + if ((pn->pn_flags & PN_HASKEY) && + (pk == NULL || pn->pn_tkey.ptk_key == pk)) { + vholdl(vp); + MNT_IUNLOCK(mp); + error = vn_lock(vp, LK_INTERLOCK | LK_EXCLUSIVE); + if (error) { + vdrop(vp); + MNT_ILOCK(mp); + MNT_VNODE_FOREACH_ABORT_ILOCKED(mp, mvp); + goto loop; + } + PEFSDEBUG("pefs_flushkey: pk=%p, vp=%p\n", pk, vp); + vgone(vp); + VOP_UNLOCK(vp, 0); + vdrop(vp); + MNT_ILOCK(mp); + } else { + VI_UNLOCK(vp); + } + } + MNT_IUNLOCK(mp); + return (0); +} + +/* * This is the 10-Apr-92 bypass routine. * This version has been optimized for speed, throwing away some * safety checks. It should still always work, but it's not as @@ -887,18 +924,14 @@ static int pefs_inactive(struct vop_inactive_args *ap) { - /* Do not vrecycle vnode */ -#if 0 struct vnode *vp = ap->a_vp; struct thread *td = ap->a_td; + struct pefs_node *pn = VP_TO_PN(vp); - PEFSDEBUG("pefs_inactive: recycle vnode: vp=%p\n", vp); - /* - * If this is the last reference, then free up the vnode - * so as not to tie up the lower vnodes. - */ - vrecycle(vp, td); -#endif + if ((pn->pn_flags & PN_HASKEY) && pn->pn_tkey.ptk_key->pk_entry_lock == NULL) { + PEFSDEBUG("pefs_inactive: recycle vnode: vp=%p\n", vp); + vrecycle(vp, td); + } return (0); } @@ -910,8 +943,8 @@ pefs_reclaim(struct vop_reclaim_args *ap) { struct vnode *vp = ap->a_vp; - struct pefs_node *xp = VP_TO_PN(vp); - struct vnode *lowervp = xp->pn_lowervp; + struct pefs_node *pn = VP_TO_PN(vp); + struct vnode *lowervp = pn->pn_lowervp; PEFSDEBUG("pefs_reclaim: vp=%p\n", vp); @@ -919,7 +952,7 @@ cache_purge(vp); if (lowervp) - pefs_node_free(xp); + pefs_node_free(pn); /* * Use the interlock to protect the clearing of v_data to * prevent faults in pefs_lock(). @@ -941,8 +974,9 @@ pefs_print(struct vop_print_args *ap) { struct vnode *vp = ap->a_vp; + struct pefs_node *pn = VP_TO_PN(vp); - printf("\tvp=%p, lowervp=%p\n", vp, PEFS_LOWERVP(vp)); + printf("\tvp=%p, lowervp=%p, flags=%04d\n", vp, pn->pn_lowervp, pn->pn_flags); return (0); } @@ -950,14 +984,14 @@ static int pefs_getwritemount(struct vop_getwritemount_args *ap) { - struct pefs_node *xp; + struct pefs_node *pn; struct vnode *lowervp; struct vnode *vp; vp = ap->a_vp; VI_LOCK(vp); - xp = VP_TO_PN(vp); - if (xp && (lowervp = xp->pn_lowervp)) { + pn = VP_TO_PN(vp); + if (pn && (lowervp = pn->pn_lowervp)) { VI_LOCK_FLAGS(lowervp, MTX_DUPOK); VI_UNLOCK(vp); vholdl(lowervp); @@ -1043,13 +1077,13 @@ pn_key = pefs_node_key(pn); buf = malloc(MAXNAMLEN + 1, M_PEFSBUF, M_WAITOK); - printf("%s: size = %d\n", __func__, o_resid - puio->uio_resid); + PEFSDEBUG("%s: size = %d\n", __func__, o_resid - puio->uio_resid); pefs_chunk_shrink(pc, o_resid - puio->uio_resid); while (1) { mem = pefs_chunk_get(pc, &size, &arg); if (mem == NULL) break; - printf("%s: convert mem=%p; size=%d\n", __func__, mem, size); + PEFSDEBUG("%s: convert mem=%p; size=%d\n", __func__, mem, size); pefs_readdir_decrypt(pn_key, pn->pn_flags, mem, size, buf, MAXNAMLEN + 1); } pefs_chunk_copy(pc, 0, uio); @@ -1276,13 +1310,6 @@ if (!(pn->pn_flags & PN_HASKEY)) return (VOP_READLINK(lvp, uio, ap->a_cred)); - /* - printf("%s: uio_offset=%ju, uio_resid=%u, uio_segflg:sysspace=%d, uio_rw=%x, ioveccnt=%d; iov_len[0]=%u\n", - __func__, - (intmax_t) uio->uio_offset, uio->uio_resid, - uio->uio_segflg == UIO_SYSSPACE, uio->uio_rw, uio->uio_iovcnt, - uio->uio_iov[0].iov_len); - */ o_offset = uio->uio_offset; o_resid = uio->uio_resid; pc = pefs_chunk_create(o_resid); @@ -1434,6 +1461,95 @@ return (error); } +static int +pefs_ioctl(struct vop_ioctl_args *ap) +{ + struct vnode *vp = ap->a_vp; + struct pefs_mount *pm = VFS_TO_PEFS(vp->v_mount); + struct pefs_xkey *xk = ap->a_data; + struct pefs_key *pk; + int error, i; + + vn_lock(pm->pm_rootvp, LK_SHARED | LK_RETRY); + error = VOP_ACCESS(pm->pm_rootvp, VWRITE, ap->a_cred, ap->a_td); + VOP_UNLOCK(pm->pm_rootvp, 0); + if (error != 0) + return (error); + + /* + * Recycle all unused vnodes after adding/deleting keys to cleanup + * caches. + */ + switch (ap->a_command) { + case PEFS_GETKEY: + PEFSDEBUG("pefs_ioctl: get key: pm=%p, pxk_index=%d\n", pm, xk->pxk_index); + mtx_lock(&pm->pm_keys_lock); + i = 0; + TAILQ_FOREACH(pk, &pm->pm_keys, pk_entry) { + if (i++ == xk->pxk_index) { + memcpy(xk->pxk_keyid, pk->pk_keyid, PEFS_KEYID_SIZE); + xk->pxk_alg = pk->pk_alg; + break; + } + } + mtx_unlock(&pm->pm_keys_lock); + if (pk == NULL) + error = ENOENT; + break; + case PEFS_SETKEY: + mtx_lock(&pm->pm_keys_lock); + pk = pefs_key_lookup(pm, xk->pxk_keyid); + mtx_unlock(&pm->pm_keys_lock); + if (pk != NULL) + error = ENOTSUP; // FIXME + else + error = ENOENT; + PEFSDEBUG("pefs_ioctl: set key\n"); + break; + case PEFS_ADDKEY: + PEFSDEBUG("pefs_ioctl: add key\n"); + pk = pefs_key_get(xk->pxk_alg, xk->pxk_key, xk->pxk_keyid); + if (pk == NULL) { + error = ENOENT; + break; + } + error = pefs_key_add(pm, xk->pxk_index, pk); + if (error == 0) + vflush(vp->v_mount, 0, 0, ap->a_td); + else + pefs_key_release(pk); + break; + case PEFS_DELKEY: + PEFSDEBUG("pefs_ioctl: del key\n"); + mtx_lock(&pm->pm_keys_lock); + pk = pefs_key_lookup(pm, xk->pxk_keyid); + if (pk != NULL) { + pefs_key_ref(pk); + pefs_key_remove(pm, pk); + mtx_unlock(&pm->pm_keys_lock); + vflush(vp->v_mount, 0, 0, ap->a_td); + pefs_flushkey(vp->v_mount, pk); + pefs_key_release(pk); + } else { + mtx_unlock(&pm->pm_keys_lock); + error = ENOENT; + } + break; + case PEFS_FLUSHKEYS: + PEFSDEBUG("pefs_ioctl: flush keys\n"); + if (pefs_key_remove_all(pm)) { + vflush(vp->v_mount, 0, 0, ap->a_td); + pefs_flushkey(vp->v_mount, NULL); + } + break; + default: + error = ENOTTY; + break; + }; + + return (error); +} + /* * Global vfs data structures */ @@ -1473,4 +1589,6 @@ .vop_getpages = vop_stdgetpages, .vop_putpages = vop_stdputpages, .vop_fsync = vop_stdfsync, + /* */ + .vop_ioctl = pefs_ioctl, }; From owner-p4-projects@FreeBSD.ORG Wed Jul 22 19:09:15 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C84DF1065670; Wed, 22 Jul 2009 19:09:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 872A2106566B for ; Wed, 22 Jul 2009 19:09:14 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 756768FC0A for ; Wed, 22 Jul 2009 19:09:14 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MJ9E8H078855 for ; Wed, 22 Jul 2009 19:09:14 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MJ9EcR078853 for perforce@freebsd.org; Wed, 22 Jul 2009 19:09:14 GMT (envelope-from pgj@FreeBSD.org) Date: Wed, 22 Jul 2009 19:09:14 GMT Message-Id: <200907221909.n6MJ9EcR078853@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166414 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 19:09:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=166414 Change 166414 by pgj@beehive on 2009/07/22 19:08:50 IFC Affected files ... .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#30 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#28 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/yzlin.key#1 branch .. //depot/projects/docproj_hu/www/en/developers.sgml#30 integrate .. //depot/projects/docproj_hu/www/hu/share/sgml/press.xml#18 integrate .. //depot/projects/docproj_hu/www/share/sgml/news.xml#64 integrate Differences ... ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#30 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -736,6 +736,11 @@ &pgpkey.clive; + + &a.yzlin; + &pgpkey.yzlin; + + &a.linimon; &pgpkey.linimon; ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#28 (text+ko) ==== @@ -1,5 +1,5 @@ - + @@ -317,6 +317,7 @@ + ==== //depot/projects/docproj_hu/www/en/developers.sgml#30 (text+ko) ==== @@ -6,7 +6,7 @@ us to update author names, or the representation of those names (such as adding email addresses), by just editing a single file. -$FreeBSD: www/en/developers.sgml,v 1.228 2009/06/08 16:03:29 np Exp $ +$FreeBSD: www/en/developers.sgml,v 1.229 2009/07/20 15:41:19 yzlin Exp $ --> @@ -588,6 +588,7 @@ + ==== //depot/projects/docproj_hu/www/hu/share/sgml/press.xml#18 (text+ko) ==== @@ -11,7 +11,7 @@ - $FreeBSD: www/hu/share/sgml/press.xml,v 1.7 2009/06/26 18:13:26 pgj Exp $ + $FreeBSD: www/hu/share/sgml/press.xml,v 1.8 2009/07/20 16:00:23 pgj Exp $ ==== //depot/projects/docproj_hu/www/share/sgml/news.xml#64 (text+ko) ==== @@ -25,7 +25,7 @@ - $FreeBSD: www/share/sgml/news.xml,v 1.264 2009/07/18 15:53:06 danger Exp $ + $FreeBSD: www/share/sgml/news.xml,v 1.265 2009/07/20 15:44:53 yzlin Exp $ @@ -36,6 +36,14 @@ 7 + 20 + +

New committer: Yi-Jheng + Lin (ports)

+
+
+ + 18 From owner-p4-projects@FreeBSD.ORG Wed Jul 22 19:21:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 47C48106567D; Wed, 22 Jul 2009 19:21:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00D4B106567A for ; Wed, 22 Jul 2009 19:21:28 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E38BA8FC27 for ; Wed, 22 Jul 2009 19:21:27 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MJLRw0079803 for ; Wed, 22 Jul 2009 19:21:27 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MJLRtL079801 for perforce@freebsd.org; Wed, 22 Jul 2009 19:21:27 GMT (envelope-from pgj@FreeBSD.org) Date: Wed, 22 Jul 2009 19:21:27 GMT Message-Id: <200907221921.n6MJLRtL079801@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166415 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 19:21:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=166415 Change 166415 by pgj@beehive on 2009/07/22 19:21:07 MFen (www): 1.264 -> 1.265 hu/share/sgml/news.xml Affected files ... .. //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#42 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#42 (text+ko) ==== @@ -5,7 +5,7 @@ @@ -22,6 +22,15 @@ 7 + 20 + + +

Új tag: Yi-Jheng + Lin (ports)

+
+
+ + 18 From owner-p4-projects@FreeBSD.ORG Wed Jul 22 20:12:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 534E11065670; Wed, 22 Jul 2009 20:12:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE796106564A for ; Wed, 22 Jul 2009 20:12:23 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DACB98FC14 for ; Wed, 22 Jul 2009 20:12:23 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MKCNH3084392 for ; Wed, 22 Jul 2009 20:12:23 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MKCNNu084390 for perforce@freebsd.org; Wed, 22 Jul 2009 20:12:23 GMT (envelope-from hselasky@FreeBSD.org) Date: Wed, 22 Jul 2009 20:12:23 GMT Message-Id: <200907222012.n6MKCNNu084390@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 166416 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 20:12:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=166416 Change 166416 by hselasky@hselasky_laptop001 on 2009/07/22 20:11:51 IFC @ 166413 Affected files ... .. //depot/projects/usb/src/lib/libusb/Makefile#6 integrate .. //depot/projects/usb/src/lib/libusbhid/Makefile#5 integrate .. //depot/projects/usb/src/sys/amd64/amd64/initcpu.c#6 integrate .. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#26 integrate .. //depot/projects/usb/src/sys/amd64/include/cpufunc.h#6 integrate .. //depot/projects/usb/src/sys/amd64/include/md_var.h#9 integrate .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#19 integrate .. //depot/projects/usb/src/sys/arm/arm/cpufunc.c#10 integrate .. //depot/projects/usb/src/sys/arm/arm/pmap.c#18 integrate .. //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#10 integrate .. //depot/projects/usb/src/sys/arm/conf/AVILA#17 integrate .. //depot/projects/usb/src/sys/arm/conf/CAMBRIA#8 integrate .. //depot/projects/usb/src/sys/bsm/audit.h#12 integrate .. //depot/projects/usb/src/sys/bsm/audit_kevents.h#14 integrate .. //depot/projects/usb/src/sys/cam/ata/ata_da.c#2 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#12 integrate .. //depot/projects/usb/src/sys/conf/files#74 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-all.c#16 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/if_ath.c#30 integrate .. //depot/projects/usb/src/sys/dev/ath/if_athvar.h#22 integrate .. //depot/projects/usb/src/sys/dev/ciss/ciss.c#16 integrate .. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis.c#31 integrate .. //depot/projects/usb/src/sys/dev/mxge/if_mxge.c#15 integrate .. //depot/projects/usb/src/sys/dev/pci/pci.c#25 integrate .. //depot/projects/usb/src/sys/dev/siis/siis.c#1 branch .. //depot/projects/usb/src/sys/dev/siis/siis.h#1 branch .. //depot/projects/usb/src/sys/fs/nfs/nfsport.h#7 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clbio.c#7 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clrpcops.c#4 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clstate.c#7 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clvfsops.c#6 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clvnops.c#9 integrate .. //depot/projects/usb/src/sys/geom/vinum/geom_vinum.c#7 integrate .. //depot/projects/usb/src/sys/i386/i386/pmap.c#21 integrate .. //depot/projects/usb/src/sys/i386/xen/pmap.c#10 integrate .. //depot/projects/usb/src/sys/kern/init_main.c#15 integrate .. //depot/projects/usb/src/sys/kern/kern_exit.c#22 integrate .. //depot/projects/usb/src/sys/kern/kern_fork.c#19 integrate .. //depot/projects/usb/src/sys/kern/kern_jail.c#25 integrate .. //depot/projects/usb/src/sys/kern/kern_linker.c#19 integrate .. //depot/projects/usb/src/sys/kern/kern_prot.c#18 integrate .. //depot/projects/usb/src/sys/kern/kern_sysctl.c#18 integrate .. //depot/projects/usb/src/sys/kern/kern_vimage.c#11 integrate .. //depot/projects/usb/src/sys/kern/link_elf_obj.c#16 integrate .. //depot/projects/usb/src/sys/kern/uipc_socket.c#24 integrate .. //depot/projects/usb/src/sys/kern/vfs_bio.c#25 integrate .. //depot/projects/usb/src/sys/modules/Makefile#40 integrate .. //depot/projects/usb/src/sys/modules/siis/Makefile#1 branch .. //depot/projects/usb/src/sys/modules/wlan/Makefile#12 integrate .. //depot/projects/usb/src/sys/net/flowtable.c#6 integrate .. //depot/projects/usb/src/sys/net/flowtable.h#6 integrate .. //depot/projects/usb/src/sys/net/if.c#35 integrate .. //depot/projects/usb/src/sys/net/if_clone.c#7 integrate .. //depot/projects/usb/src/sys/net/if_ethersubr.c#21 integrate .. //depot/projects/usb/src/sys/net/if_gif.c#16 integrate .. //depot/projects/usb/src/sys/net/if_gif.h#10 integrate .. //depot/projects/usb/src/sys/net/if_loop.c#22 integrate .. //depot/projects/usb/src/sys/net/if_var.h#25 integrate .. //depot/projects/usb/src/sys/net/raw_cb.h#6 integrate .. //depot/projects/usb/src/sys/net/route.c#22 integrate .. //depot/projects/usb/src/sys/net/vnet.h#14 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.c#8 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.h#10 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_freebsd.c#20 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_input.c#19 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_input.h#4 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ioctl.h#15 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_output.c#26 integrate .. //depot/projects/usb/src/sys/netgraph/ng_base.c#19 integrate .. //depot/projects/usb/src/sys/netgraph/ng_eiface.c#13 integrate .. //depot/projects/usb/src/sys/netgraph/ng_gif.c#8 integrate .. //depot/projects/usb/src/sys/netgraph/ng_iface.c#16 integrate .. //depot/projects/usb/src/sys/netinet/icmp6.h#7 integrate .. //depot/projects/usb/src/sys/netinet/icmp_var.h#6 integrate .. //depot/projects/usb/src/sys/netinet/if_ether.c#25 integrate .. //depot/projects/usb/src/sys/netinet/igmp.c#21 integrate .. //depot/projects/usb/src/sys/netinet/in.c#31 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.c#30 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.h#23 integrate .. //depot/projects/usb/src/sys/netinet/in_rmx.c#20 integrate .. //depot/projects/usb/src/sys/netinet/in_var.h#16 integrate .. //depot/projects/usb/src/sys/netinet/ip_divert.c#22 integrate .. //depot/projects/usb/src/sys/netinet/ip_fastfwd.c#12 integrate .. //depot/projects/usb/src/sys/netinet/ip_fw.h#18 integrate .. //depot/projects/usb/src/sys/netinet/ip_icmp.c#18 integrate .. //depot/projects/usb/src/sys/netinet/ip_input.c#29 integrate .. //depot/projects/usb/src/sys/netinet/ip_ipsec.c#16 integrate .. //depot/projects/usb/src/sys/netinet/ip_var.h#13 integrate .. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw2.c#5 integrate .. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_nat.c#4 integrate .. //depot/projects/usb/src/sys/netinet/raw_ip.c#27 integrate .. //depot/projects/usb/src/sys/netinet/tcp_hostcache.c#15 integrate .. //depot/projects/usb/src/sys/netinet/tcp_reass.c#11 integrate .. //depot/projects/usb/src/sys/netinet/tcp_sack.c#11 integrate .. //depot/projects/usb/src/sys/netinet/tcp_subr.c#27 integrate .. //depot/projects/usb/src/sys/netinet/tcp_syncache.c#24 integrate .. //depot/projects/usb/src/sys/netinet/tcp_timer.c#17 integrate .. //depot/projects/usb/src/sys/netinet/tcp_timewait.c#15 integrate .. //depot/projects/usb/src/sys/netinet/tcp_var.h#21 integrate .. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#25 integrate .. //depot/projects/usb/src/sys/netinet/udp_var.h#11 integrate .. //depot/projects/usb/src/sys/netinet6/frag6.c#17 integrate .. //depot/projects/usb/src/sys/netinet6/icmp6.c#24 integrate .. //depot/projects/usb/src/sys/netinet6/in6_ifattach.c#27 integrate .. //depot/projects/usb/src/sys/netinet6/in6_mcast.c#6 integrate .. //depot/projects/usb/src/sys/netinet6/in6_proto.c#17 integrate .. //depot/projects/usb/src/sys/netinet6/in6_rmx.c#19 integrate .. //depot/projects/usb/src/sys/netinet6/in6_src.c#20 integrate .. //depot/projects/usb/src/sys/netinet6/in6_var.h#13 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_input.c#27 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_ipsec.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_mroute.c#20 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_var.h#16 integrate .. //depot/projects/usb/src/sys/netinet6/mld6.c#20 integrate .. //depot/projects/usb/src/sys/netinet6/nd6.c#23 integrate .. //depot/projects/usb/src/sys/netinet6/nd6.h#9 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_nbr.c#18 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#21 integrate .. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#24 integrate .. //depot/projects/usb/src/sys/netinet6/raw_ip6.h#5 integrate .. //depot/projects/usb/src/sys/netinet6/scope6.c#14 integrate .. //depot/projects/usb/src/sys/netinet6/tcp6_var.h#5 integrate .. //depot/projects/usb/src/sys/netipsec/ah_var.h#3 integrate .. //depot/projects/usb/src/sys/netipsec/esp_var.h#3 integrate .. //depot/projects/usb/src/sys/netipsec/ipcomp_var.h#3 integrate .. //depot/projects/usb/src/sys/netipsec/ipip_var.h#4 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.c#21 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.h#15 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec6.h#9 integrate .. //depot/projects/usb/src/sys/netipsec/key.c#23 integrate .. //depot/projects/usb/src/sys/netipsec/key_debug.h#4 integrate .. //depot/projects/usb/src/sys/netipsec/keysock.c#13 integrate .. //depot/projects/usb/src/sys/netipsec/keysock.h#4 integrate .. //depot/projects/usb/src/sys/netipsec/xform_esp.c#10 integrate .. //depot/projects/usb/src/sys/netipsec/xform_ipcomp.c#9 integrate .. //depot/projects/usb/src/sys/netipsec/xform_ipip.c#15 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#28 integrate .. //depot/projects/usb/src/sys/powerpc/mpc85xx/lbc.h#3 integrate .. //depot/projects/usb/src/sys/security/audit/audit_bsm_errno.c#4 integrate .. //depot/projects/usb/src/sys/security/audit/audit_bsm_token.c#14 integrate .. //depot/projects/usb/src/sys/sparc64/include/param.h#6 integrate .. //depot/projects/usb/src/sys/sys/kernel.h#15 integrate .. //depot/projects/usb/src/sys/sys/param.h#41 integrate .. //depot/projects/usb/src/sys/sys/sockio.h#6 integrate .. //depot/projects/usb/src/sys/sys/ucred.h#8 integrate .. //depot/projects/usb/src/sys/sys/vimage.h#18 integrate .. //depot/projects/usb/src/sys/vm/device_pager.c#10 integrate .. //depot/projects/usb/src/sys/vm/vm_page.c#18 integrate .. //depot/projects/usb/src/sys/xen/evtchn/evtchn.c#8 integrate Differences ... ==== //depot/projects/usb/src/lib/libusb/Makefile#6 (text+ko) ==== @@ -1,11 +1,11 @@ # -# $FreeBSD: src/lib/libusb/Makefile,v 1.6 2009/06/23 01:00:26 thompsa Exp $ +# $FreeBSD: src/lib/libusb/Makefile,v 1.7 2009/07/19 17:25:24 kensmith Exp $ # # Makefile for the FreeBSD specific LibUSB 2.0 # LIB= usb -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 SHLIB_MINOR= 0 SRCS= libusb20.c SRCS+= libusb20_desc.c ==== //depot/projects/usb/src/lib/libusbhid/Makefile#5 (text+ko) ==== @@ -1,10 +1,10 @@ # $NetBSD: Makefile,v 1.5 1999/07/23 09:44:38 mrg Exp $ -# $FreeBSD: src/lib/libusbhid/Makefile,v 1.12 2009/02/02 00:49:39 alfred Exp $ +# $FreeBSD: src/lib/libusbhid/Makefile,v 1.13 2009/07/19 17:25:24 kensmith Exp $ LIB= usbhid MAN= usbhid.3 -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 MLINKS= usbhid.3 libusbhid.3 usbhid.3 hid_get_report_desc.3 \ usbhid.3 hid_dispose_report_desc.3 \ ==== //depot/projects/usb/src/sys/amd64/amd64/initcpu.c#6 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.53 2009/01/12 19:17:35 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.54 2009/07/22 14:32:38 kib Exp $"); #include "opt_cpu.h" @@ -65,6 +65,7 @@ u_int cpu_vendor_id; /* CPU vendor ID */ u_int cpu_fxsr; /* SSE enabled */ u_int cpu_mxcsr_mask; /* Valid bits in mxcsr */ +u_int cpu_clflush_line_size = 32; SYSCTL_UINT(_hw, OID_AUTO, via_feature_rng, CTLFLAG_RD, &via_feature_rng, 0, "VIA C3/C7 RNG feature available in CPU"); @@ -156,4 +157,12 @@ AMD64_CPU_FAMILY(cpu_id) == 0x6 && AMD64_CPU_MODEL(cpu_id) >= 0xf) init_via(); + + /* + * CPUID with %eax = 1, %ebx returns + * Bits 15-8: CLFLUSH line size + * (Value * 8 = cache line size in bytes) + */ + if ((cpu_feature & CPUID_CLFSH) != 0) + cpu_clflush_line_size = ((cpu_procinfo >> 8) & 0xff) * 8; } ==== //depot/projects/usb/src/sys/amd64/amd64/pmap.c#26 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.663 2009/07/12 23:31:20 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.666 2009/07/22 14:32:38 kib Exp $"); /* * Manages physical address maps. @@ -231,6 +231,7 @@ vm_page_t m, vm_prot_t prot, vm_page_t mpte); static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte); static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); +static void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); @@ -752,21 +753,6 @@ /* The PAT bit is different for PTE's and PDE's. */ pat_flag = is_pde ? PG_PDE_PAT : PG_PTE_PAT; - /* If we don't support PAT, map extended modes to older ones. */ - if (!(cpu_feature & CPUID_PAT)) { - switch (mode) { - case PAT_UNCACHEABLE: - case PAT_WRITE_THROUGH: - case PAT_WRITE_BACK: - break; - case PAT_UNCACHED: - case PAT_WRITE_COMBINING: - case PAT_WRITE_PROTECTED: - mode = PAT_UNCACHEABLE; - break; - } - } - /* Map the caching mode to a PAT index. */ switch (mode) { case PAT_UNCACHEABLE: @@ -936,6 +922,40 @@ } #endif /* !SMP */ +static void +pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva) +{ + + KASSERT((sva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: sva not page-aligned")); + KASSERT((eva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: eva not page-aligned")); + + if (cpu_feature & CPUID_SS) + ; /* If "Self Snoop" is supported, do nothing. */ + else if (cpu_feature & CPUID_CLFSH) { + + /* + * Otherwise, do per-cache line flush. Use the mfence + * instruction to insure that previous stores are + * included in the write-back. The processor + * propagates flush to other processors in the cache + * coherence domain. + */ + mfence(); + for (; eva < sva; eva += cpu_clflush_line_size) + clflush(eva); + mfence(); + } else { + + /* + * No targeted cache flush methods are supported by CPU, + * globally invalidate cache as a last resort. + */ + pmap_invalidate_cache(); + } +} + /* * Are we current address space or kernel? */ @@ -4271,7 +4291,8 @@ void * pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, int mode) { - vm_offset_t va, tmpva, offset; + vm_offset_t va, offset; + vm_size_t tmpsize; /* * If the specified range of physical addresses fits within the direct @@ -4288,14 +4309,10 @@ if (!va) panic("pmap_mapdev: Couldn't alloc kernel virtual memory"); pa = trunc_page(pa); - for (tmpva = va; size > 0; ) { - pmap_kenter_attr(tmpva, pa, mode); - size -= PAGE_SIZE; - tmpva += PAGE_SIZE; - pa += PAGE_SIZE; - } - pmap_invalidate_range(kernel_pmap, va, tmpva); - pmap_invalidate_cache(); + for (tmpsize = 0; tmpsize < size; tmpsize += PAGE_SIZE) + pmap_kenter_attr(va + tmpsize, pa + tmpsize, mode); + pmap_invalidate_range(kernel_pmap, va, va + tmpsize); + pmap_invalidate_cache_range(va, va + tmpsize); return ((void *)(va + offset)); } @@ -4394,9 +4411,12 @@ m->md.pat_mode = ma; /* - * Update the direct mapping and flush the cache. + * If "m" is a normal page, update its direct mapping. This update + * can be relied upon to perform any cache operations that are + * required for data coherence. */ - if (pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, + if ((m->flags & PG_FICTITIOUS) == 0 && + pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, m->md.pat_mode)) panic("memory attribute change on the direct map failed"); } @@ -4634,7 +4654,7 @@ */ if (changed) { pmap_invalidate_range(kernel_pmap, base, tmpva); - pmap_invalidate_cache(); + pmap_invalidate_cache_range(base, tmpva); } return (error); } ==== //depot/projects/usb/src/sys/amd64/include/cpufunc.h#6 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.153 2009/04/11 14:01:01 ed Exp $ + * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.154 2009/07/22 14:32:38 kib Exp $ */ /* @@ -100,6 +100,13 @@ } static __inline void +clflush(u_long addr) +{ + + __asm __volatile("clflush %0" : : "m" (*(char *)addr)); +} + +static __inline void disable_intr(void) { __asm __volatile("cli" : : : "memory"); @@ -267,6 +274,13 @@ } static __inline void +mfence(void) +{ + + __asm__ __volatile("mfence" : : : "memory"); +} + +static __inline void ia32_pause(void) { __asm __volatile("pause"); ==== //depot/projects/usb/src/sys/amd64/include/md_var.h#9 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.85 2009/04/01 13:09:26 kib Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.86 2009/07/22 14:32:38 kib Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -47,6 +47,7 @@ extern u_int amd_pminfo; extern u_int via_feature_rng; extern u_int via_feature_xcrypt; +extern u_int cpu_clflush_line_size; extern u_int cpu_fxsr; extern u_int cpu_high; extern u_int cpu_id; ==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#19 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.47 2009/04/23 20:24:19 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.48 2009/07/20 07:53:07 raj Exp $"); /* * ARM bus dma support routines @@ -630,10 +630,6 @@ ((vm_offset_t)*vaddr & PAGE_MASK)); newmap->origbuffer = *vaddr; newmap->allocbuffer = tmpaddr; - cpu_idcache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); - cpu_l2cache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); *vaddr = tmpaddr; } else newmap->origbuffer = newmap->allocbuffer = NULL; ==== //depot/projects/usb/src/sys/arm/arm/cpufunc.c#10 (text+ko) ==== @@ -45,7 +45,7 @@ * Created : 30/01/97 */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.26 2009/05/05 12:57:16 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.27 2009/07/21 08:29:19 raj Exp $"); #include #include @@ -265,7 +265,7 @@ arm9_dcache_wbinv_all, /* dcache_wbinv_all */ arm9_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ arm9_dcache_wbinv_range, /* dcache_inv_range */ + arm9_dcache_inv_range, /* dcache_inv_range */ arm9_dcache_wb_range, /* dcache_wb_range */ arm9_idcache_wbinv_all, /* idcache_wbinv_all */ @@ -327,7 +327,7 @@ armv5_ec_dcache_wbinv_all, /* dcache_wbinv_all */ armv5_ec_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ armv5_ec_dcache_wbinv_range, /* dcache_inv_range */ + armv5_ec_dcache_inv_range, /* dcache_inv_range */ armv5_ec_dcache_wb_range, /* dcache_wb_range */ armv5_ec_idcache_wbinv_all, /* idcache_wbinv_all */ ==== //depot/projects/usb/src/sys/arm/arm/pmap.c#18 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.111 2009/06/24 21:03:59 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.112 2009/07/20 07:53:07 raj Exp $"); #include #include #include @@ -2984,6 +2984,7 @@ pmap_free_pv_entry(pve); PMAP_UNLOCK(pmap_kernel()); vm_page_unlock_queues(); + va = va & ~PAGE_MASK; cpu_dcache_wbinv_range(va, PAGE_SIZE); cpu_l2cache_wbinv_range(va, PAGE_SIZE); cpu_tlb_flushD_SE(va); ==== //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#10 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.39 2009/06/24 21:00:13 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.40 2009/07/20 07:53:07 raj Exp $"); #include #include @@ -426,10 +426,15 @@ vm_offset_t tomap = arm_nocache_startaddr + i * PAGE_SIZE; void *ret = (void *)tomap; vm_paddr_t physaddr = vtophys((vm_offset_t)addr); + vm_offset_t vaddr = (vm_offset_t) addr; + vaddr = vaddr & ~PAGE_MASK; for (; tomap < (vm_offset_t)ret + size; tomap += PAGE_SIZE, - physaddr += PAGE_SIZE, i++) { + vaddr += PAGE_SIZE, physaddr += PAGE_SIZE, i++) { + cpu_idcache_wbinv_range(vaddr, PAGE_SIZE); + cpu_l2cache_wbinv_range(vaddr, PAGE_SIZE); pmap_kenter_nocache(tomap, physaddr); + cpu_tlb_flushID_SE(vaddr); arm_nocache_allocated[i / BITS_PER_INT] |= 1 << (i % BITS_PER_INT); } ==== //depot/projects/usb/src/sys/arm/conf/AVILA#17 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/AVILA,v 1.32 2009/05/27 16:16:56 thompsa Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA,v 1.33 2009/07/17 18:35:45 rpaulo Exp $ ident AVILA @@ -105,6 +105,7 @@ device wlan # 802.11 support options IEEE80211_DEBUG options IEEE80211_SUPPORT_TDMA +options IEEE80211_SUPPORT_MESH device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support ==== //depot/projects/usb/src/sys/arm/conf/CAMBRIA#8 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.11 2009/05/10 00:00:25 kuriyama Exp $ +# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.12 2009/07/17 18:35:45 rpaulo Exp $ ident CAMBRIA @@ -108,6 +108,7 @@ device wlan # 802.11 support options IEEE80211_DEBUG options IEEE80211_SUPPORT_TDMA +options IEEE80211_SUPPORT_MESH device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support ==== //depot/projects/usb/src/sys/bsm/audit.h#12 (text) ==== @@ -26,8 +26,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * P4: //depot/projects/trustedbsd/openbsm/sys/bsm/audit.h#9 - * $FreeBSD: src/sys/bsm/audit.h,v 1.16 2009/04/19 14:53:17 rwatson Exp $ + * P4: //depot/projects/trustedbsd/openbsm/sys/bsm/audit.h#10 + * $FreeBSD: src/sys/bsm/audit.h,v 1.17 2009/07/17 14:02:20 rwatson Exp $ */ #ifndef _BSM_AUDIT_H @@ -173,6 +173,7 @@ typedef u_int16_t au_event_t; typedef u_int16_t au_emod_t; typedef u_int32_t au_class_t; +typedef u_int64_t au_asflgs_t __attribute__ ((aligned (8))); struct au_tid { dev_t port; @@ -206,7 +207,7 @@ au_mask_t ai_mask; /* Audit masks. */ au_tid_addr_t ai_termid; /* Terminal ID. */ au_asid_t ai_asid; /* Audit session ID. */ - u_int64_t ai_flags; /* Audit session flags. */ + au_asflgs_t ai_flags; /* Audit session flags. */ }; typedef struct auditinfo_addr auditinfo_addr_t; @@ -225,7 +226,7 @@ au_mask_t ap_mask; /* Audit masks. */ au_tid_addr_t ap_termid; /* Terminal ID. */ au_asid_t ap_asid; /* Audit session ID. */ - u_int64_t ap_flags; /* Audit session flags. */ + au_asflgs_t ap_flags; /* Audit session flags. */ }; typedef struct auditpinfo_addr auditpinfo_addr_t; ==== //depot/projects/usb/src/sys/bsm/audit_kevents.h#14 (text) ==== @@ -26,8 +26,8 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * P4: //depot/projects/trustedbsd/openbsm/sys/bsm/audit_kevents.h#6 - * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.21 2009/07/08 15:23:18 trasz Exp $ + * P4: //depot/projects/trustedbsd/openbsm/sys/bsm/audit_kevents.h#7 + * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.22 2009/07/17 14:02:20 rwatson Exp $ */ #ifndef _BSM_AUDIT_KEVENTS_H_ ==== //depot/projects/usb/src/sys/cam/ata/ata_da.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.1 2009/07/10 08:18:08 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.2 2009/07/17 21:48:08 mav Exp $"); #include @@ -275,7 +275,6 @@ if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) { ccb = cam_periph_getccb(periph, /*priority*/1); - ccb->ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ccb->ataio, 1, adadone, @@ -289,7 +288,9 @@ ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE48, 0, 0, 0); else ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0); - xpt_polled_action(ccb); + cam_periph_runccb(ccb, /*error_routine*/NULL, /*cam_flags*/0, + /*sense_flags*/SF_RETRY_UA, + softc->disk->d_devstat); if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) xpt_print(periph->path, "Synchronize cache failed\n"); ==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 (text+ko) ==== @@ -2360,6 +2360,15 @@ is_attr = ((zp->z_phys->zp_flags & ZFS_XATTR) && (ZTOV(zp)->v_type == VDIR)); +#ifdef __FreeBSD__ + /* + * In FreeBSD, we don't care about permissions of individual ADS. + * Note that not checking them is not just an optimization - without + * this shortcut, EA operations may bogusly fail with EACCES. + */ + if (zp->z_phys->zp_flags & ZFS_XATTR) + return (0); +#else /* * If attribute then validate against base file */ @@ -2385,6 +2394,7 @@ mode |= ACE_READ_NAMED_ATTRS; } } +#endif if ((error = zfs_zaccess_common(check_zp, mode, &working_mode, &check_privs, skipaclchk, cr)) == 0) { ==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 (text+ko) ==== @@ -831,8 +831,14 @@ *xvpp = NULL; + /* + * In FreeBSD, access checking for creating an EA is being done + * in zfs_setextattr(), + */ +#ifndef __FreeBSD__ if (error = zfs_zaccess(zp, ACE_WRITE_NAMED_ATTRS, 0, B_FALSE, cr)) return (error); +#endif tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_bonus(tx, zp->z_id); @@ -906,12 +912,14 @@ ASSERT(zp->z_phys->zp_xattr == 0); -#ifdef TODO if (!(flags & CREATE_XATTR_DIR)) { zfs_dirent_unlock(dl); +#ifdef __FreeBSD__ + return (ENOATTR); +#else return (ENOENT); +#endif } -#endif if (zfsvfs->z_vfs->vfs_flag & VFS_RDONLY) { zfs_dirent_unlock(dl); ==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#12 (text+ko) ==== @@ -4502,6 +4502,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4523,6 +4528,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4564,6 +4571,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4584,6 +4596,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4623,6 +4637,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4631,7 +4650,7 @@ ZFS_ENTER(zfsvfs); error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, - LOOKUP_XATTR); + LOOKUP_XATTR | CREATE_XATTR_DIR); if (error != 0) { ZFS_EXIT(zfsvfs); return (error); @@ -4690,6 +4709,11 @@ vnode_t *xvp = NULL, *vp; int done, error, eof, pos; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, "", attrprefix, sizeof(attrprefix)); if (error != 0) @@ -4698,9 +4722,18 @@ ZFS_ENTER(zfsvfs); + if (sizep != NULL) + *sizep = 0; + error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, LOOKUP_XATTR); if (error != 0) { + /* + * ENOATTR means that the EA directory does not yet exist, + * i.e. there are no extended attributes there. + */ + if (error == ENOATTR) + error = 0; ZFS_EXIT(zfsvfs); return (error); } @@ -4722,9 +4755,6 @@ auio.uio_rw = UIO_READ; auio.uio_offset = 0; - if (sizep != NULL) - *sizep = 0; - do { u_char nlen; ==== //depot/projects/usb/src/sys/conf/files#74 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1453 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1455 2009/07/21 12:32:46 mav Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1391,6 +1391,7 @@ dev/si/si_eisa.c optional si eisa dev/si/si_isa.c optional si isa dev/si/si_pci.c optional si pci +dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci inet dev/smbus/smb.c optional smb @@ -1627,6 +1628,7 @@ dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_ural.c optional ural +dev/usb/wlan/if_urtw.c optional urtw dev/usb/wlan/if_zyd.c optional zyd # # USB serial and parallel port drivers ==== //depot/projects/usb/src/sys/dev/ata/ata-all.c#16 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.305 2009/05/20 21:31:47 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.306 2009/07/16 19:48:39 mav Exp $"); #include "opt_ata.h" #include @@ -472,6 +472,7 @@ ata_device_ioctl(device_t dev, u_long cmd, caddr_t data) { struct ata_device *atadev = device_get_softc(dev); + struct ata_channel *ch = device_get_softc(device_get_parent(dev)); struct ata_ioc_request *ioc_request = (struct ata_ioc_request *)data; struct ata_params *params = (struct ata_params *)data; int *mode = (int *)data; @@ -481,6 +482,10 @@ switch (cmd) { case IOCATAREQUEST: + if (ioc_request->count > + (ch->dma.max_iosize ? ch->dma.max_iosize : DFLTPHYS)) { + return (EFBIG); + } if (!(buf = malloc(ioc_request->count, M_ATA, M_NOWAIT))) { return ENOMEM; } ==== //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#3 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.2 2009/06/27 20:06:56 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.3 2009/07/21 19:23:34 sam Exp $ */ #include "opt_ah.h" @@ -164,7 +164,7 @@ if (phybits & (AR_PHY_ERR_OFDM_TIMING|AR_PHY_ERR_CCK_TIMING)) bits |= HAL_RX_FILTER_PHYERR; if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport && - (OS_REG_READ(ah, AR_MISC_MODE) & AR_MISC_MODE_BSSID_MATCH_FORCE)) + (AH5212(ah)->ah_miscMode & AR_MISC_MODE_BSSID_MATCH_FORCE)) bits |= HAL_RX_FILTER_BSSID; return bits; } @@ -175,6 +175,7 @@ void ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits) { + struct ath_hal_5212 *ahp = AH5212(ah); uint32_t phybits; OS_REG_WRITE(ah, AR_RX_FILTER, @@ -194,12 +195,11 @@ OS_REG_READ(ah, AR_RXCFG) &~ AR_RXCFG_ZLFDMA); } if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport) { - uint32_t miscbits = OS_REG_READ(ah, AR_MISC_MODE); if (bits & HAL_RX_FILTER_BSSID) - miscbits |= AR_MISC_MODE_BSSID_MATCH_FORCE; + ahp->ah_miscMode |= AR_MISC_MODE_BSSID_MATCH_FORCE; else - miscbits &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; - OS_REG_WRITE(ah, AR_MISC_MODE, miscbits); + ahp->ah_miscMode &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; + OS_REG_WRITE(ah, AR_MISC_MODE, ahp->ah_miscMode); } } ==== //depot/projects/usb/src/sys/dev/ath/if_ath.c#30 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.261 2009/07/11 16:02:06 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.262 2009/07/21 19:01:04 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -1023,6 +1023,8 @@ sc->sc_nvaps++; if (opmode == IEEE80211_M_STA) sc->sc_nstavaps++; + if (opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps++; } switch (ic_opmode) { case IEEE80211_M_IBSS: @@ -1137,6 +1139,8 @@ vap->iv_opmode == IEEE80211_M_MBSS) { reclaim_address(sc, vap->iv_myaddr); ath_hal_setbssidmask(ah, sc->sc_hwbssidmask); + if (vap->iv_opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps--; } if (vap->iv_opmode != IEEE80211_M_WDS) sc->sc_nvaps--; @@ -2381,7 +2385,7 @@ if (ic->ic_opmode == IEEE80211_M_HOSTAP && IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) rfilt |= HAL_RX_FILTER_BEACON; - if (ic->ic_opmode == IEEE80211_M_MBSS) { + if (sc->sc_nmeshvaps) { rfilt |= HAL_RX_FILTER_BEACON; if (sc->sc_hasbmatch) rfilt |= HAL_RX_FILTER_BSSID; ==== //depot/projects/usb/src/sys/dev/ath/if_athvar.h#22 (text+ko) ==== @@ -26,7 +26,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.89 2009/07/11 15:02:45 rpaulo Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.90 2009/07/21 19:01:04 sam Exp $ */ /* @@ -203,6 +203,7 @@ int sc_debug; int sc_nvaps; /* # vaps */ int sc_nstavaps; /* # station vaps */ + int sc_nmeshvaps; /* # mbss vaps */ u_int8_t sc_hwbssidmask[IEEE80211_ADDR_LEN]; u_int8_t sc_nbssid0; /* # vap's using base mac */ uint32_t sc_bssidmask; /* bssid mask */ ==== //depot/projects/usb/src/sys/dev/ciss/ciss.c#16 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.96 2009/07/10 08:18:08 scottl Exp $ + * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.97 2009/07/20 03:59:00 scottl Exp $ */ /* @@ -2687,7 +2687,7 @@ if (cr->cr_flags & CISS_REQ_DATAOUT) bus_dmamap_sync(sc->ciss_buffer_dmat, cr->cr_datamap, BUS_DMASYNC_PREWRITE); - if (nseg == 1) + if (nseg == 0) >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Jul 22 22:43:09 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3590D1065672; Wed, 22 Jul 2009 22:43:09 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E85E01065674 for ; Wed, 22 Jul 2009 22:43:08 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D44A28FC21 for ; Wed, 22 Jul 2009 22:43:08 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6MMh8a0007640 for ; Wed, 22 Jul 2009 22:43:08 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6MMh80k007638 for perforce@freebsd.org; Wed, 22 Jul 2009 22:43:08 GMT (envelope-from pgj@FreeBSD.org) Date: Wed, 22 Jul 2009 22:43:08 GMT Message-Id: <200907222243.n6MMh80k007638@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166424 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2009 22:43:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=166424 Change 166424 by pgj@petymeg-current on 2009/07/22 22:42:09 Modify netstat(1) to use libnetstat(3) for interface statistics, and it also includes some further simplifications in the original code. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#8 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/if.c#3 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#15 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#8 (text+ko) ==== @@ -119,7 +119,7 @@ void hostpr(u_long, u_long); void impstats(u_long, u_long); -void intpr(int, u_long, void (*)(char *)); +void intpr(int, void *, void (*)(char *)); void pr_rthdr(int); void pr_family(int); ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/if.c#3 (text+ko) ==== @@ -1,6 +1,8 @@ /*- * Copyright (c) 1983, 1988, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. + * Copyright (c) 2009 Gabor Pali + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -62,7 +64,9 @@ #include #include +#include #include +#include #include #include #include @@ -75,13 +79,9 @@ #define YES 1 #define NO 0 -static void sidewaysintpr(int, u_long); +static void sidewaysintpr(int, void *); static void catchalarm(int); -#ifdef INET6 -static char ntop_buf[INET6_ADDRSTRLEN]; /* for inet_ntop() */ -#endif - /* * Dump pfsync statistics structure. */ @@ -175,50 +175,53 @@ * Print a description of the network interfaces. */ void -intpr(int interval1, u_long ifnetaddr, void (*pfunc)(char *)) +intpr(int interval1, void *kvm_handle, void (*pfunc)(char *)) { - struct ifnet ifnet; - struct ifnethead ifnethead; - union { - struct ifaddr ifa; - struct in_ifaddr in; -#ifdef INET6 - struct in6_ifaddr in6; -#endif - struct ipx_ifaddr ipx; - } ifaddr; - u_long ifaddraddr; - u_long ifaddrfound; - u_long ifnetfound; - u_long opackets; - u_long ipackets; - u_long obytes; - u_long ibytes; - u_long omcasts; - u_long imcasts; - u_long oerrors; - u_long ierrors; - u_long collisions; - short timer; - int drops; - struct sockaddr *sa = NULL; - char name[IFNAMSIZ]; - short network_layer; - short link_layer; + int it_flags; + kvm_t *kvm; + + struct interface_type_list *itlp; + struct interface_type_iterator *itip; + + const struct face_type *fin, *fout; + const struct interface_type *itp; + const struct intfaddr_type *iatp; + + char if_name[16]; + int error, i, network_layer, link_layer; - if (ifnetaddr == 0) { - printf("ifnet: symbol not defined\n"); + if (kvm_handle == NULL) return; - } + if (interval1) { - sidewaysintpr(interval1, ifnetaddr); + sidewaysintpr(interval1, kvm_handle); return; } - if (kread(ifnetaddr, (char *)&ifnethead, sizeof ifnethead) != 0) + + kvm = (kvm_t *)kvm_handle; + it_flags = 0; + it_flags |= NETSTAT_INTERFACE_ALL; + it_flags |= NETSTAT_INTERFACE_KVM; + + itlp = netstat_itl_alloc(); + if (itlp == NULL) { + warn("netstat_itl_alloc()"); return; - ifnetaddr = (u_long)TAILQ_FIRST(&ifnethead); - if (kread(ifnetaddr, (char *)&ifnet, sizeof ifnet) != 0) - return; + } + + if (netstat_interface(interface, af, itlp, it_flags, kvm) < 0) { + error = netstat_itl_geterror(itlp); + if (error == NETSTAT_ERROR_KVM) { + warnx("netstat_interface: %s", kvm_geterr(kvm)); + } else + warnx("netstat_interface: %s", netstat_strerror(error)); + goto out; + } + + if (netstat_iti_alloc(itlp, &itip) < 0) { + warn("netstat_iti_alloc()"); + goto out; + } if (!pfunc) { if (Wflag) @@ -228,10 +231,10 @@ printf(" %5.5s %-13.13s %-17.17s %8.8s %5.5s", "Mtu", "Network", "Address", "Ipkts", "Ierrs"); if (bflag) - printf(" %10.10s","Ibytes"); + printf(" %10.10s", "Ibytes"); printf(" %8.8s %5.5s", "Opkts", "Oerrs"); if (bflag) - printf(" %10.10s","Obytes"); + printf(" %10.10s", "Obytes"); printf(" %5s", "Coll"); if (tflag) printf(" %s", "Time"); @@ -239,278 +242,102 @@ printf(" %s", "Drop"); putchar('\n'); } - ifaddraddr = 0; - while (ifnetaddr || ifaddraddr) { - struct sockaddr_in *sockin; -#ifdef INET6 - struct sockaddr_in6 *sockin6; -#endif - char *cp; - int n, m; - network_layer = 0; - link_layer = 0; + for (itp = netstat_iti_first(itip); itp != NULL; + itp = netstat_iti_next(itip)) { + strlcpy(if_name, netstat_it_get_name(itp), sizeof(if_name)); + if (pfunc) { + pfunc(if_name); + continue; + } - if (ifaddraddr == 0) { - ifnetfound = ifnetaddr; - if (kread(ifnetaddr, (char *)&ifnet, sizeof ifnet) != 0) - return; - strlcpy(name, ifnet.if_xname, sizeof(name)); - ifnetaddr = (u_long)TAILQ_NEXT(&ifnet, if_link); - if (interface != 0 && strcmp(name, interface) != 0) - continue; - cp = index(name, '\0'); + for (i = 0; i < netstat_it_get_addrcnt(itp); i++) { + iatp = netstat_it_get_address(itp, i); + + network_layer = + (netstat_iat_get_layer(iatp) == layer_Network); + link_layer = + (netstat_iat_get_layer(iatp) == layer_Link); - if (pfunc) { - (*pfunc)(name); - continue; + if ((netstat_it_get_flags(itp) & NETSTAT_IF_UP) == 0) { + strcat(if_name, "*"); } - - if ((ifnet.if_flags&IFF_UP) == 0) - *cp++ = '*'; - *cp = '\0'; - ifaddraddr = (u_long)TAILQ_FIRST(&ifnet.if_addrhead); + printf(Wflag ? "%-7.7s" : "%-5.5s", if_name); + printf(" %5ju ", netstat_it_get_mtu(itp)); + printf("%-13.13s ", + netstat_iat_get_network(iatp, numeric_addr)); + printf("%-17.17s ", + netstat_iat_get_address(iatp, numeric_addr)); + fin = netstat_it_get_in(itp); + fout = netstat_it_get_out(itp); + show_stat("lu", 8, + network_layer ? + netstat_iat_get_ipackets(iatp) : + netstat_ft_get_packets(fin), + network_layer|link_layer); + show_stat("lu", 5, netstat_ft_get_errors(fin), + link_layer); + if (bflag) + show_stat("lu", 10, + network_layer ? + netstat_iat_get_ibytes(iatp) : + netstat_ft_get_bytes(fin), + network_layer|link_layer); + show_stat("lu", 8, + network_layer ? + netstat_iat_get_opackets(iatp) : + netstat_ft_get_packets(fout), + network_layer|link_layer); + show_stat("lu", 5, netstat_ft_get_errors(fout), + link_layer); + if (bflag) + show_stat("lu", 10, + network_layer ? + netstat_iat_get_obytes(iatp) : + netstat_ft_get_bytes(fout), + network_layer|link_layer); + show_stat("NRSlu", 5, netstat_it_get_collisions(itp), + link_layer); + if (tflag) + show_stat("LSd", 4, netstat_it_get_timer(itp), + link_layer); + if (dflag) + show_stat("LSd", 4, netstat_it_get_drops(itp), + link_layer); + putchar('\n'); } - ifaddrfound = ifaddraddr; - /* - * Get the interface stats. These may get - * overriden below on a per-interface basis. - */ - opackets = ifnet.if_opackets; - ipackets = ifnet.if_ipackets; - obytes = ifnet.if_obytes; - ibytes = ifnet.if_ibytes; - omcasts = ifnet.if_omcasts; - imcasts = ifnet.if_imcasts; - oerrors = ifnet.if_oerrors; - ierrors = ifnet.if_ierrors; - collisions = ifnet.if_collisions; - timer = ifnet.if_timer; - drops = ifnet.if_snd.ifq_drops; + if (!aflag) + continue; - if (ifaddraddr == 0) { - if (Wflag) - printf("%-7.7s", name); - else - printf("%-5.5s", name); - printf(" %5lu ", ifnet.if_mtu); - printf("%-13.13s ", "none"); - printf("%-17.17s ", "none"); - } else { - if (kread(ifaddraddr, (char *)&ifaddr, sizeof ifaddr) - != 0) { - ifaddraddr = 0; - continue; - } -#define CP(x) ((char *)(x)) - cp = (CP(ifaddr.ifa.ifa_addr) - CP(ifaddraddr)) + - CP(&ifaddr); - sa = (struct sockaddr *)cp; - if (af != AF_UNSPEC && sa->sa_family != af) { - ifaddraddr = - (u_long)TAILQ_NEXT(&ifaddr.ifa, ifa_link); - continue; - } - if (Wflag) - printf("%-7.7s", name); - else - printf("%-5.5s", name); - printf(" %5lu ", ifnet.if_mtu); - switch (sa->sa_family) { - case AF_UNSPEC: - printf("%-13.13s ", "none"); - printf("%-15.15s ", "none"); - break; - case AF_INET: - sockin = (struct sockaddr_in *)sa; -#ifdef notdef - /* can't use inet_makeaddr because kernel - * keeps nets unshifted. - */ - in = inet_makeaddr(ifaddr.in.ia_subnet, - INADDR_ANY); - printf("%-13.13s ", netname(in.s_addr, - ifaddr.in.ia_subnetmask)); -#else - printf("%-13.13s ", - netname(htonl(ifaddr.in.ia_subnet), - ifaddr.in.ia_subnetmask)); -#endif - printf("%-17.17s ", - routename(sockin->sin_addr.s_addr)); + for (i = 0; i < netstat_it_get_mcast_addrcnt(itp); i++) { + iatp = netstat_it_get_mcast_address(itp, i); - network_layer = 1; - break; -#ifdef INET6 - case AF_INET6: - sockin6 = (struct sockaddr_in6 *)sa; - printf("%-13.13s ", - netname6(&ifaddr.in6.ia_addr, - &ifaddr.in6.ia_prefixmask.sin6_addr)); - printf("%-17.17s ", - inet_ntop(AF_INET6, - &sockin6->sin6_addr, - ntop_buf, sizeof(ntop_buf))); - - network_layer = 1; - break; -#endif /*INET6*/ - case AF_IPX: - { - struct sockaddr_ipx *sipx = - (struct sockaddr_ipx *)sa; - u_long net; - char netnum[10]; - - *(union ipx_net *) &net = sipx->sipx_addr.x_net; - sprintf(netnum, "%lx", (u_long)ntohl(net)); - printf("ipx:%-8s ", netnum); -/* printf("ipx:%-8s ", netname(net, 0L)); */ - printf("%-17s ", - ipx_phost((struct sockaddr *)sipx)); - } - - network_layer = 1; - break; - - case AF_APPLETALK: - printf("atalk:%-12.12s ",atalk_print(sa,0x10) ); - printf("%-11.11s ",atalk_print(sa,0x0b) ); - break; - case AF_LINK: - { - struct sockaddr_dl *sdl = - (struct sockaddr_dl *)sa; - char linknum[10]; - cp = (char *)LLADDR(sdl); - n = sdl->sdl_alen; - sprintf(linknum, "", sdl->sdl_index); - m = printf("%-13.13s ", linknum); - } - goto hexprint; - default: - m = printf("(%d)", sa->sa_family); - for (cp = sa->sa_len + (char *)sa; - --cp > sa->sa_data && (*cp == 0);) {} - n = cp - sa->sa_data + 1; - cp = sa->sa_data; - hexprint: - while (--n >= 0) - m += printf("%02x%c", *cp++ & 0xff, - n > 0 ? ':' : ' '); - m = 32 - m; - while (m-- > 0) - putchar(' '); - - link_layer = 1; - break; + if (netstat_iat_get_family(iatp) == PF_INET6) { + printf("%*s %-19.19s(refs: %d)", + Wflag ? 27 : 25, "", + netstat_iat_get_address(iatp, numeric_addr), + netstat_iat_get_refcount(iatp)); + } else { + printf("%*s %-17.17s", Wflag ? 27 : 25, "", + netstat_iat_get_address(iatp, numeric_addr)); } - /* - * Fixup the statistics for interfaces that - * update stats for their network addresses - */ - if (network_layer) { - opackets = ifaddr.in.ia_ifa.if_opackets; - ipackets = ifaddr.in.ia_ifa.if_ipackets; - obytes = ifaddr.in.ia_ifa.if_obytes; - ibytes = ifaddr.in.ia_ifa.if_ibytes; + if (netstat_iat_get_family(iatp) == PF_LINK) { + printf(" %8ju", netstat_ft_get_mcasts(fin)); + printf("%*s", bflag ? 17 : 6, ""); + printf(" %8ju", netstat_ft_get_mcasts(fout)); } - ifaddraddr = (u_long)TAILQ_NEXT(&ifaddr.ifa, ifa_link); + putchar('\n'); } - - show_stat("lu", 8, ipackets, link_layer|network_layer); - show_stat("lu", 5, ierrors, link_layer); - if (bflag) - show_stat("lu", 10, ibytes, link_layer|network_layer); - - show_stat("lu", 8, opackets, link_layer|network_layer); - show_stat("lu", 5, oerrors, link_layer); - if (bflag) - show_stat("lu", 10, obytes, link_layer|network_layer); - - show_stat("NRSlu", 5, collisions, link_layer); - if (tflag) - show_stat("LSd", 4, timer, link_layer); - if (dflag) - show_stat("LSd", 4, drops, link_layer); - putchar('\n'); - - if (aflag && ifaddrfound) { - /* - * Print family's multicast addresses - */ - struct ifmultiaddr *multiaddr; - struct ifmultiaddr ifma; - union { - struct sockaddr sa; - struct sockaddr_in in; -#ifdef INET6 - struct sockaddr_in6 in6; -#endif /* INET6 */ - struct sockaddr_dl dl; - } msa; - const char *fmt; - - TAILQ_FOREACH(multiaddr, &ifnet.if_multiaddrs, ifma_link) { - if (kread((u_long)multiaddr, (char *)&ifma, - sizeof ifma) != 0) - break; - multiaddr = &ifma; - if (kread((u_long)ifma.ifma_addr, (char *)&msa, - sizeof msa) != 0) - break; - if (msa.sa.sa_family != sa->sa_family) - continue; - - fmt = 0; - switch (msa.sa.sa_family) { - case AF_INET: - fmt = routename(msa.in.sin_addr.s_addr); - break; -#ifdef INET6 - case AF_INET6: - printf("%*s %-19.19s(refs: %d)\n", - Wflag ? 27 : 25, "", - inet_ntop(AF_INET6, - &msa.in6.sin6_addr, - ntop_buf, - sizeof(ntop_buf)), - ifma.ifma_refcount); - break; -#endif /* INET6 */ - case AF_LINK: - switch (msa.dl.sdl_type) { - case IFT_ETHER: - case IFT_FDDI: - fmt = ether_ntoa( - (struct ether_addr *) - LLADDR(&msa.dl)); - break; - } - break; - } - if (fmt) { - printf("%*s %-17.17s", - Wflag ? 27 : 25, "", fmt); - if (msa.sa.sa_family == AF_LINK) { - printf(" %8lu", imcasts); - printf("%*s", - bflag ? 17 : 6, ""); - printf(" %8lu", omcasts); - } - putchar('\n'); - } - } - } } +out: + netstat_itl_free(itlp); + netstat_iti_free(itip); } struct iftot { - SLIST_ENTRY(iftot) chain; - char ift_name[IFNAMSIZ]; /* interface name */ u_long ift_ip; /* input packets */ u_long ift_ie; /* input errors */ u_long ift_op; /* output packets */ @@ -528,64 +355,32 @@ * Repeat display every interval1 seconds, showing statistics * collected over that interval. Assumes that interval1 is non-zero. * First line printed at top of screen is always cumulative. - * XXX - should be rewritten to use ifmib(4). */ static void -sidewaysintpr(int interval1, u_long off) +sidewaysintpr(int interval1, void *kvm_handle) { - struct ifnet ifnet; - u_long firstifnet; - struct ifnethead ifnethead; + kvm_t *kvm; + int it_flags; + struct itimerval interval_it; - struct iftot *iftot, *ip, *ipn, *total, *sum, *interesting; - int line; + struct iftot total, sum; + int line, error; int oldmask, first; - u_long interesting_off; + char ift_name[IFNAMSIZ]; - if (kread(off, (char *)&ifnethead, sizeof ifnethead) != 0) - return; - firstifnet = (u_long)TAILQ_FIRST(&ifnethead); + struct interface_type_list *itlp; + struct interface_type_iterator *itip; - if ((iftot = malloc(sizeof(struct iftot))) == NULL) { - printf("malloc failed\n"); - exit(1); - } - memset(iftot, 0, sizeof(struct iftot)); + const struct face_type *fin, *fout; + const struct interface_type *itp; - interesting = NULL; - interesting_off = 0; - for (off = firstifnet, ip = iftot; off;) { - char name[IFNAMSIZ]; + if (kvm_handle == NULL) + return; - if (kread(off, (char *)&ifnet, sizeof ifnet) != 0) - break; - strlcpy(name, ifnet.if_xname, sizeof(name)); - if (interface && strcmp(name, interface) == 0) { - interesting = ip; - interesting_off = off; - } - snprintf(ip->ift_name, sizeof(ip->ift_name), "(%s)", name);; - if ((ipn = malloc(sizeof(struct iftot))) == NULL) { - printf("malloc failed\n"); - exit(1); - } - memset(ipn, 0, sizeof(struct iftot)); - SLIST_NEXT(ip, chain) = ipn; - ip = ipn; - off = (u_long)TAILQ_NEXT(&ifnet, if_link); - } - if (interface && interesting == NULL) - errx(1, "%s: unknown interface", interface); - if ((total = malloc(sizeof(struct iftot))) == NULL) { - printf("malloc failed\n"); - exit(1); - } - memset(total, 0, sizeof(struct iftot)); - if ((sum = malloc(sizeof(struct iftot))) == NULL) { - printf("malloc failed\n"); - exit(1); - } - memset(sum, 0, sizeof(struct iftot)); + it_flags = 0; + it_flags |= NETSTAT_INTERFACE_KVM; + it_flags |= NETSTAT_INTERFACE_ALL; + kvm = (kvm_t *)kvm_handle; (void)signal(SIGALRM, catchalarm); signalled = NO; @@ -594,9 +389,31 @@ interval_it.it_value = interval_it.it_interval; setitimer(ITIMER_REAL, &interval_it, NULL); first = 1; + + itlp = netstat_itl_alloc(); + if (itlp == NULL) { + warn("netstat_itl_alloc()"); + return; + } + if (netstat_interface(interface, PF_UNSPEC, itlp, it_flags, kvm) < 0) { + error = netstat_itl_geterror(itlp); + if (error == NETSTAT_ERROR_KVM) { + warnx("netstat_interface: %s", kvm_geterr(kvm)); + } else + warnx("netstat_interface: %s", netstat_strerror(error)); + netstat_itl_free(itlp); + return; + } + if (interface != NULL && netstat_itl_length(itlp) == 0) { + netstat_itl_free(itlp); + errx(1, "%s: unknown interface", interface); + } + + if (interface != NULL) + sprintf(ift_name, "(%s)", interface); banner: printf("%17s %14s %16s", "input", - interesting ? interesting->ift_name : "(Total)", "output"); + interface ? ift_name : "(Total)", "output"); putchar('\n'); printf("%10s %5s %10s %10s %5s %10s %5s", "packets", "errs", "bytes", "packets", "errs", "bytes", "colls"); @@ -606,73 +423,53 @@ fflush(stdout); line = 0; loop: - if (interesting != NULL) { - ip = interesting; - if (kread(interesting_off, (char *)&ifnet, sizeof ifnet) != 0) { - printf("???\n"); - exit(1); - }; - if (!first) { - show_stat("lu", 10, ifnet.if_ipackets - ip->ift_ip, 1); - show_stat("lu", 5, ifnet.if_ierrors - ip->ift_ie, 1); - show_stat("lu", 10, ifnet.if_ibytes - ip->ift_ib, 1); - show_stat("lu", 10, ifnet.if_opackets - ip->ift_op, 1); - show_stat("lu", 5, ifnet.if_oerrors - ip->ift_oe, 1); - show_stat("lu", 10, ifnet.if_obytes - ip->ift_ob, 1); - show_stat("NRSlu", 5, - ifnet.if_collisions - ip->ift_co, 1); - if (dflag) - show_stat("LSu", 5, - ifnet.if_snd.ifq_drops - ip->ift_dr, 1); - } - ip->ift_ip = ifnet.if_ipackets; - ip->ift_ie = ifnet.if_ierrors; - ip->ift_ib = ifnet.if_ibytes; - ip->ift_op = ifnet.if_opackets; - ip->ift_oe = ifnet.if_oerrors; - ip->ift_ob = ifnet.if_obytes; - ip->ift_co = ifnet.if_collisions; - ip->ift_dr = ifnet.if_snd.ifq_drops; - } else { - sum->ift_ip = 0; - sum->ift_ie = 0; - sum->ift_ib = 0; - sum->ift_op = 0; - sum->ift_oe = 0; - sum->ift_ob = 0; - sum->ift_co = 0; - sum->ift_dr = 0; - for (off = firstifnet, ip = iftot; - off && SLIST_NEXT(ip, chain) != NULL; - ip = SLIST_NEXT(ip, chain)) { - if (kread(off, (char *)&ifnet, sizeof ifnet) != 0) { - off = 0; - continue; - } - sum->ift_ip += ifnet.if_ipackets; - sum->ift_ie += ifnet.if_ierrors; - sum->ift_ib += ifnet.if_ibytes; - sum->ift_op += ifnet.if_opackets; - sum->ift_oe += ifnet.if_oerrors; - sum->ift_ob += ifnet.if_obytes; - sum->ift_co += ifnet.if_collisions; - sum->ift_dr += ifnet.if_snd.ifq_drops; - off = (u_long)TAILQ_NEXT(&ifnet, if_link); - } - if (!first) { - show_stat("lu", 10, sum->ift_ip - total->ift_ip, 1); - show_stat("lu", 5, sum->ift_ie - total->ift_ie, 1); - show_stat("lu", 10, sum->ift_ib - total->ift_ib, 1); - show_stat("lu", 10, sum->ift_op - total->ift_op, 1); - show_stat("lu", 5, sum->ift_oe - total->ift_oe, 1); - show_stat("lu", 10, sum->ift_ob - total->ift_ob, 1); - show_stat("NRSlu", 5, sum->ift_co - total->ift_co, 1); - if (dflag) - show_stat("LSu", 5, - sum->ift_dr - total->ift_dr, 1); - } - *total = *sum; + itlp = netstat_itl_alloc(); + if (itlp == NULL) { + warn("netstat_itl_alloc()"); + return; + } + if (netstat_interface(interface, PF_UNSPEC, itlp, it_flags, kvm) < 0) { + error = netstat_itl_geterror(itlp); + if (error == NETSTAT_ERROR_KVM) { + warnx("netstat_interface: %s", kvm_geterr(kvm)); + } else + warnx("netstat_interface: %s", netstat_strerror(error)); + netstat_itl_free(itlp); + return; + } + if (netstat_iti_alloc(itlp, &itip) < 0) { + warn("netstat_iti_alloc()"); + netstat_itl_free(itlp); + return; + } + bzero(&sum, sizeof(struct iftot)); + for (itp = netstat_iti_first(itip); itp != NULL; + itp = netstat_iti_next(itip)) { + fin = netstat_it_get_in(itp); + fout = netstat_it_get_out(itp); + sum.ift_ip += netstat_ft_get_packets(fin); + sum.ift_ie += netstat_ft_get_errors(fin); + sum.ift_ib += netstat_ft_get_bytes(fin); + sum.ift_op += netstat_ft_get_packets(fout); + sum.ift_oe += netstat_ft_get_errors(fout); + sum.ift_ob += netstat_ft_get_bytes(fout); + sum.ift_co += netstat_it_get_collisions(itp); + sum.ift_dr += netstat_it_get_drops(itp); + } + if (!first) { + show_stat("lu", 10, sum.ift_ip - total.ift_ip, 1); + show_stat("lu", 5, sum.ift_ie - total.ift_ie, 1); + show_stat("lu", 10, sum.ift_ib - total.ift_ib, 1); + show_stat("lu", 10, sum.ift_op - total.ift_op, 1); + show_stat("lu", 5, sum.ift_oe - total.ift_oe, 1); + show_stat("lu", 10, sum.ift_ob - total.ift_ob, 1); + show_stat("NRSlu", 5, sum.ift_co - total.ift_co, 1); + if (dflag) + show_stat("LSu", 5, + sum.ift_dr - total.ift_dr, 1); } + total = sum; + netstat_itl_free(itlp); if (!first) putchar('\n'); fflush(stdout); ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#15 (text+ko) ==== @@ -77,77 +77,75 @@ static struct nlist nl[] = { -#define N_IFNET 0 - { .n_name = "_ifnet" }, -#define N_RTSTAT 1 +#define N_RTSTAT 0 { .n_name = "_rtstat" }, -#define N_RTREE 2 +#define N_RTREE 1 { .n_name = "_rt_tables"}, -#define N_MRTSTAT 3 +#define N_MRTSTAT 2 { .n_name = "_mrtstat" }, -#define N_MFCHASHTBL 4 +#define N_MFCHASHTBL 3 { .n_name = "_mfchashtbl" }, -#define N_VIFTABLE 5 +#define N_VIFTABLE 4 { .n_name = "_viftable" }, -#define N_IPX 6 +#define N_IPX 5 { .n_name = "_ipxpcb_list"}, -#define N_IPXSTAT 7 +#define N_IPXSTAT 6 { .n_name = "_ipxstat"}, -#define N_SPXSTAT 8 +#define N_SPXSTAT 7 { .n_name = "_spx_istat"}, -#define N_DDPSTAT 9 +#define N_DDPSTAT 8 { .n_name = "_ddpstat"}, -#define N_DDPCB 10 +#define N_DDPCB 9 { .n_name = "_ddpcb"}, -#define N_NGSOCKS 11 +#define N_NGSOCKS 10 { .n_name = "_ngsocklist"}, -#define N_IP6STAT 12 +#define N_IP6STAT 11 { .n_name = "_ip6stat" }, -#define N_ICMP6STAT 13 +#define N_ICMP6STAT 12 { .n_name = "_icmp6stat" }, -#define N_IPSECSTAT 14 +#define N_IPSECSTAT 13 { .n_name = "_ipsec4stat" }, -#define N_IPSEC6STAT 15 +#define N_IPSEC6STAT 14 { .n_name = "_ipsec6stat" }, -#define N_PIM6STAT 16 +#define N_PIM6STAT 15 { .n_name = "_pim6stat" }, -#define N_MRT6STAT 17 +#define N_MRT6STAT 16 { .n_name = "_mrt6stat" }, -#define N_MF6CTABLE 18 +#define N_MF6CTABLE 17 { .n_name = "_mf6ctable" }, -#define N_MIF6TABLE 19 +#define N_MIF6TABLE 18 { .n_name = "_mif6table" }, -#define N_PFKEYSTAT 20 +#define N_PFKEYSTAT 19 { .n_name = "_pfkeystat" }, -#define N_RTTRASH 21 +#define N_RTTRASH 20 { .n_name = "_rttrash" }, -#define N_CARPSTAT 22 +#define N_CARPSTAT 21 { .n_name = "_carpstats" }, -#define N_PFSYNCSTAT 23 +#define N_PFSYNCSTAT 22 { .n_name = "_pfsyncstats" }, -#define N_AHSTAT 24 +#define N_AHSTAT 23 { .n_name = "_ahstat" }, -#define N_ESPSTAT 25 +#define N_ESPSTAT 24 { .n_name = "_espstat" }, -#define N_IPCOMPSTAT 26 +#define N_IPCOMPSTAT 25 { .n_name = "_ipcompstat" }, -#define N_TCPSTAT 27 +#define N_TCPSTAT 26 { .n_name = "_tcpstat" }, -#define N_UDPSTAT 28 +#define N_UDPSTAT 27 { .n_name = "_udpstat" }, -#define N_IPSTAT 29 +#define N_IPSTAT 28 { .n_name = "_ipstat" }, -#define N_ICMPSTAT 30 +#define N_ICMPSTAT 29 { .n_name = "_icmpstat" }, -#define N_IGMPSTAT 31 +#define N_IGMPSTAT 30 { .n_name = "_igmpstat" }, -#define N_PIMSTAT 32 +#define N_PIMSTAT 31 { .n_name = "_pimstat" }, -#define N_RIP6STAT 33 +#define N_RIP6STAT 32 { .n_name = "_rip6stat" }, -#define N_SCTPSTAT 34 +#define N_SCTPSTAT 33 { .n_name = "_sctpstat" }, -#define N_MFCTABLESIZE 35 +#define N_MFCTABLESIZE 34 { .n_name = "_mfctablesize" }, { .n_name = NULL }, }; @@ -501,7 +499,7 @@ #endif if (iflag && !sflag) { kread(0, NULL, 0); - intpr(interval, nl[N_IFNET].n_value, NULL); + intpr(interval, kvmd, NULL); exit(0); } if (rflag) { @@ -640,8 +638,7 @@ if (sflag) { if (iflag) { if (tp->pr_istats) - intpr(interval, nl[N_IFNET].n_value, - tp->pr_istats); + intpr(interval, kvmd, tp->pr_istats); else if (pflag) printf("%s: no per-interface stats routine\n", tp->pr_name); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 03:22:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2CCCD1065673; Thu, 23 Jul 2009 03:22:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D58A5106566B for ; Thu, 23 Jul 2009 03:22:13 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8E73F8FC1F for ; Thu, 23 Jul 2009 03:22:13 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N3MDqJ042711 for ; Thu, 23 Jul 2009 03:22:13 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N3MD0a042709 for perforce@freebsd.org; Thu, 23 Jul 2009 03:22:13 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 03:22:13 GMT Message-Id: <200907230322.n6N3MD0a042709@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166427 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 03:22:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=166427 Change 166427 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 03:21:47 Test that cap_new(capability) wraps the original file properly Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/regression/security/cap_test/cap_test_capabilities.c#4 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/regression/security/cap_test/cap_test_capabilities.c#4 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/tools/regression/security/cap_test/cap_test_capabilities.c#3 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/tools/regression/security/cap_test/cap_test_capabilities.c#4 $"); #include #include @@ -57,8 +57,8 @@ { struct stat sb; struct statfs sf; - int fd_cap; - ssize_t ssize; + int fd_cap, fd_capcap; + ssize_t ssize, ssize2; off_t off; void *p; char ch; @@ -68,6 +68,11 @@ if (fd_cap < 0) err(-1, "cap_new"); + fd_capcap = cap_new(fd_cap, rights); + if ((fd_capcap < 0) || (fd_capcap == fd_cap)) + err(-1, "cap_new: fd_capcap = %i, fd_cap = %i", + fd_capcap, fd_cap); + ssize = read(fd_cap, &ch, sizeof(ch)); if ((rights & (CAP_READ | CAP_SEEK)) == (CAP_READ | CAP_SEEK)) { if (ssize < 0) @@ -82,6 +87,11 @@ } ssize = pread(fd_cap, &ch, sizeof(ch), 0); + ssize2 = pread(fd_cap, &ch, sizeof(ch), 0); + if(ssize != ssize2) + err(-1, "pread(fd_capcap) != pread(fd_cap) (%i != %i)", + ssize2, ssize); + if (rights & CAP_READ) { if (ssize < 0) warnx("rights 0x%llx pread failed error %d", rights, From owner-p4-projects@FreeBSD.ORG Thu Jul 23 05:12:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4C04C106567D; Thu, 23 Jul 2009 05:12:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFC21106567A for ; Thu, 23 Jul 2009 05:12:13 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DE5588FC25 for ; Thu, 23 Jul 2009 05:12:13 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N5CDRH062651 for ; Thu, 23 Jul 2009 05:12:13 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N5CDZP062649 for perforce@freebsd.org; Thu, 23 Jul 2009 05:12:13 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 05:12:13 GMT Message-Id: <200907230512.n6N5CDZP062649@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166428 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 05:12:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=166428 Change 166428 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 05:11:18 Let fo_ioctl() unwrap capabilities if required Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/sys/file.h#13 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/sys/file.h#13 (text+ko) ==== @@ -44,6 +44,10 @@ #include #include +#ifdef CAPABILITIES +#include +#endif /* CAPABILITIES */ + struct stat; struct thread; struct uio; @@ -272,8 +276,20 @@ struct ucred *active_cred; struct thread *td; { + struct file *p = fp; + +#ifdef CAPABILITIES + int error; + + if (fp->f_type == DTYPE_CAPABILITY) + { + error = cap_fextract(fp, CAP_IOCTL, &p); + if (error) + return error; + } +#endif /* CAPABILITIES */ - return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td)); + return ((*p->f_ops->fo_ioctl)(p, com, data, active_cred, td)); } static __inline int From owner-p4-projects@FreeBSD.ORG Thu Jul 23 05:25:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 08AF3106566B; Thu, 23 Jul 2009 05:25:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A85C71065679 for ; Thu, 23 Jul 2009 05:25:28 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 75E588FC2A for ; Thu, 23 Jul 2009 05:25:28 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N5PSI2063621 for ; Thu, 23 Jul 2009 05:25:28 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N5PS2O063619 for perforce@freebsd.org; Thu, 23 Jul 2009 05:25:28 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 05:25:28 GMT Message-Id: <200907230525.n6N5PS2O063619@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166429 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 05:25:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=166429 Change 166429 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 05:25:12 Patch for libxcb Affected files ... .. //depot/projects/trustedbsd/capabilities/qt-patches/x11/libxcb/files/patch-bsd-capabilities.diff#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Thu Jul 23 05:37:42 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 85EE01065672; Thu, 23 Jul 2009 05:37:42 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4570E106566B for ; Thu, 23 Jul 2009 05:37:42 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 28E9D8FC0A for ; Thu, 23 Jul 2009 05:37:42 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N5bfAH064486 for ; Thu, 23 Jul 2009 05:37:41 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N5bfaM064484 for perforce@freebsd.org; Thu, 23 Jul 2009 05:37:41 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 05:37:41 GMT Message-Id: <200907230537.n6N5bfaM064484@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166430 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 05:37:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=166430 Change 166430 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 05:36:50 mmap() can fail and return MAP_FAILED, not just NULL\! Affected files ... .. //depot/projects/trustedbsd/capabilities/qt-patches/x11-fonts/fontconfig/files/patch-bsd-capabilities.diff#2 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/qt-patches/x11-fonts/fontconfig/files/patch-bsd-capabilities.diff#2 (text+ko) ==== @@ -1,6 +1,6 @@ diff -ruN src/Makefile.am src/Makefile.am --- src/Makefile.am 2008-05-04 04:19:42.000000000 +0100 -+++ src/Makefile.am 2009-07-12 21:00:06.000000000 +0100 ++++ src/Makefile.am 2009-07-12 21:14:51.000000000 +0100 @@ -75,7 +75,8 @@ $(EXPAT_CFLAGS) \ $(WARN_CFLAGS) \ @@ -13,7 +13,7 @@ diff -ruN src/Makefile.in src/Makefile.in --- src/Makefile.in 2008-06-01 03:31:00.000000000 +0100 -+++ src/Makefile.in 2009-07-12 21:00:06.000000000 +0100 ++++ src/Makefile.in 2009-07-12 21:14:51.000000000 +0100 @@ -95,7 +95,7 @@ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) @@ -35,7 +35,7 @@ noinst_HEADERS = fcint.h fcftint.h fcdeprecate.h diff -ruN src/fccache.c src/fccache.c --- src/fccache.c 2007-11-14 00:36:41.000000000 +0000 -+++ src/fccache.c 2009-07-12 21:08:46.000000000 +0100 ++++ src/fccache.c 2009-07-23 06:30:10.000000000 +0100 @@ -37,6 +37,10 @@ # include #endif @@ -75,6 +75,15 @@ if (FcStat ((char *) dir, &dir_stat) < 0) return FcFalse; +@@ -568,7 +586,7 @@ + } + #endif + } +- if (!cache) ++ if (!cache || (cache == MAP_FAILED)) + { + cache = malloc (fd_stat->st_size); + if (!cache) @@ -893,6 +911,12 @@ if (!FcAtomicLock (atomic)) goto bail3; @@ -90,7 +99,7 @@ goto bail4; diff -ruN src/fccfg.c src/fccfg.c --- src/fccfg.c 2008-05-25 00:14:15.000000000 +0100 -+++ src/fccfg.c 2009-07-12 21:08:41.000000000 +0100 ++++ src/fccfg.c 2009-07-12 21:14:51.000000000 +0100 @@ -36,6 +36,10 @@ #define R_OK 4 #endif @@ -119,7 +128,7 @@ diff -ruN src/fcdir.c src/fcdir.c --- src/fcdir.c 2007-10-16 05:55:59.000000000 +0100 -+++ src/fcdir.c 2009-07-12 21:07:26.000000000 +0100 ++++ src/fcdir.c 2009-07-23 06:31:35.000000000 +0100 @@ -22,6 +22,10 @@ * PERFORMANCE OF THIS SOFTWARE. */ @@ -131,7 +140,7 @@ #include "fcint.h" #include -@@ -30,8 +34,17 @@ +@@ -30,6 +34,14 @@ { struct stat statb; @@ -145,20 +154,11 @@ +#endif if (stat ((const char *) file, &statb) != 0) return FcFalse; -+ return S_ISDIR(statb.st_mode); - } - -@@ -161,10 +174,14 @@ - strcpy ((char *) file, (char *) dir); - strcat ((char *) file, "/"); - base = file + strlen ((char *) file); -- -+ +@@ -165,6 +177,10 @@ if (FcDebug () & FC_DBG_SCAN) printf ("\tScanning dir %s\n", dir); -- -+ + +#ifdef BSD_CAPABILITIES + if(ld_insandbox()) d = ua_opendir((char *) dir); + else @@ -168,7 +168,7 @@ { diff -ruN src/fcxml.c src/fcxml.c --- src/fcxml.c 2008-05-25 01:12:34.000000000 +0100 -+++ src/fcxml.c 2009-07-12 21:10:42.000000000 +0100 ++++ src/fcxml.c 2009-07-12 21:14:51.000000000 +0100 @@ -52,6 +52,10 @@ #endif /* ENABLE_LIBXML2 */ From owner-p4-projects@FreeBSD.ORG Thu Jul 23 06:53:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 802001065670; Thu, 23 Jul 2009 06:53:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C708106566C for ; Thu, 23 Jul 2009 06:53:04 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 28F068FC15 for ; Thu, 23 Jul 2009 06:53:04 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N6r4hK070815 for ; Thu, 23 Jul 2009 06:53:04 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N6r48k070813 for perforce@freebsd.org; Thu, 23 Jul 2009 06:53:04 GMT (envelope-from dforsyth@FreeBSD.org) Date: Thu, 23 Jul 2009 06:53:04 GMT Message-Id: <200907230653.n6N6r48k070813@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 166431 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 06:53:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=166431 Change 166431 by dforsyth@squirrel on 2009/07/23 06:52:15 Fix build, start parse rewrite (soon to be moved). Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/Makefile#13 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#38 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_command.c#1 add .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_command.h#1 add .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#29 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#25 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/Makefile#5 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/Makefile#13 (text+ko) ==== @@ -2,7 +2,7 @@ INCS= pkg.h WARNS= 6 SRCS= pkg_db.c pkg_db_hierdb.c pkg.c pkg_util.c pkg_file.c \ - pkg_depend.c pkg_conflict.c pkg_plist.c + pkg_depend.c pkg_conflict.c pkg_command.c pkg_plist.c NO_MAN= yes .include ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#38 (text+ko) ==== @@ -82,7 +82,7 @@ p->dirty = 0; /* Until plist allocation is done properly, we can't free this in * here. */ - pkg_plist_reset(p->pl); + pkg_plist_delete(p->pl); p->pl = NULL; } @@ -199,13 +199,19 @@ return (p->description); } -/* Retrieve the contents text for this package. */ +/* Retrieve the contents text for this package. Dumps in plist in current + * FreeBSD format. */ const char * pkg_contents(struct pkg *p) { if (p == NULL) arg_rage_quit(__func__, "Not a valid package.", RAGE_AT_CLIENT); + + if (pkg_plist_parsed(p->pl) && pkg_plist_dirty(p->pl)) { + free(p->contents); + p->contents = pkg_plist_dump_to_text(p->pl); + } return (p->contents); } @@ -307,8 +313,21 @@ int pkg_clone(struct pkg *psrc, struct pkg *pdest) { - /* Write this. */ - return 0; + int status; + + if (psrc == NULL) + arg_rage_quit(__func__, "Not a valid package (src).", + RAGE_AT_CLIENT); + if (pdest == NULL) + arg_rage_quit(__func__, "Not a valid package (dest).", + RAGE_AT_CLIENT); + + status = PKG_OK; + status |= pkg_set_ident(pdest, pkg_ident(psrc)); + + /* Write the rest of this. Need array dup'ing functions. */ + + return (status); } /* Retrieve a list of file in this package. Return a list of strings ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.c#29 (text+ko) ==== @@ -9,6 +9,7 @@ #include #include "pkg_util.h" +#include "pkg_command.h" #include "pkg_conflict.h" #include "pkg_depend.h" #include "pkg_file.h" @@ -19,7 +20,9 @@ /* TODO: Create plist setter functions for building packages. */ struct parse_state { - enum plist_elem last_elem; + int ignore_next_file; + int last_elem; + int last_line; struct pkg_conflict *last_conflict; struct pkg_depend *last_depend; struct pkg_file *last_file; @@ -35,7 +38,13 @@ if (st == NULL) return; + st->ignore_next_file = 0; st->last_elem = PLIST_UNKNOWN; + st->last_line = PLIST_UNKNOWN; + st->last_conflict = NULL; + st->last_depend = NULL; + st->last_file = NULL; + st->cwd = NULL; st->owner = NULL; st->group = NULL; st->mode = NULL; @@ -97,6 +106,24 @@ return (pl->parsed); } +int +pkg_plist_dirty(struct pkg_plist *pl) +{ + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + + return (pl->dirty); +} + +char * +pkg_plist_dump_to_text(struct pkg_plist *pl) +{ + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + + return (NULL); +} + void pkg_plist_reset(struct pkg_plist *pl) { @@ -379,6 +406,253 @@ return (s); } +#if 0 +int __pkg_plist_parse_line(struct pkg_plist *pl, char *line, + struct parse_state *st) +{ + int status; + size_t line_len; + char *command; + char *argument; + char *buff; + char *sep; + + struct pkg_conflict *pc; + struct pkg_depend *pd; + struct pkg_command *pe; + struct pkg_file *pf; + + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + if (line == NULL) + arg_rage_quit(__func__, "Null line argument.", RAGE_AT_LIBPKG); + if (st == NULL) + arg_rage_quit(__func__, "Not a valid parse state.", + RAGE_AT_LIBPKG); + + status = OK; + + line_len = strlen(line); + if (line_len == 0) + return (status); + + if (line[0] == '@') { + /* Command. */ + sep = strchr(line, ' '); + if (sep == NULL) + sep = strchr(line, '\0'); + *sep = '\0'; + command = line + 1; + argument = sep + 1; + if (strcmp(command, PLIST_CMD_CWD) == 0 || + strcmp(command, PLIST_CMD_CD) == 0) { + if (line_len - 1 <= strlen(PLIST_CMD_CWD)) + st->cwd = NULL; + else + st->cwd = argument; + st->last_elem = PLIST_CWD; + } else if (strcmp(command, PLIST_CMD_SRCDIR) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_SRCDIR)) { + /* For now, just spit errors into stderr. */ + fprintf(stderr, "pkg_plist: Bad line \"%s\". Needs \ + argument\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else if (pl->srcdir != NULL) { + fprintf(stderr, "pkg_plist: SRCDIR is already set in this \ + plist (\"%s\").\n", pl->srcdir); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pl->srcdir = argument; + st->last_line = PLIST_SRCDIR; + } + } else if (strcmp(command, PLIST_CMD_EXEC) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_EXEC)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty exec \ + command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pe = pkg_command_new(); + if (pe == NULL) { + fprintf(stderr, "pkg_plist: Couldn't allocate."); + status |= NOT_OK; + status |= MEMORY_ERR; + return (status); + } + status |= pkg_command_set_type(pe, PLIST_EXEC); + status |= pkg_command_set_argument(pe, argument); + st->last_line = PLIST_EXEC; + status |= pkg_plist_add_install(pl, pe); + /* Check status and free is there's a mem err? */ + } + } else if (strcmp(command, PLIST_CMD_UNEXEC) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_UNEXEC)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty unexec \ + command.\n", line); + status |= NOT_OK; + } else { + pe = pkg_command_new(); + if (pe == NULL) { + fprintf(stderr, "pkg_plist: Couldn't allocate."); + status |= NOT_OK; + status |= MEMORY_ERR; + return (status); + } + status |= pkg_command_set_type(pe, PLIST_UNEXEC); + status |= pkg_command_set_argument(pe, argument); + st->last_line = PLIST_EXEC; + status |= pkg_plist_add_deinstall(pl, pe); + } + } else if (strcmp(command, PLIST_CMD_MODE) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_MODE)) /* reset. */ + st->mode = NULL; + else + st->mode = argument; + } else if (strcmp(command, PLIST_CMD_OPTION) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_OPTION)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty option \ + command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + if (strcmp(argument, PLIST_OPTION_EXTRACT_IN_PLACE) == 0) + pl->extract_in_place = 1; + else if (strcmp(argument, PLIST_OPTION_PRESERVE) == 0) + pl->preserve = 1; + else if (strcmp(argument, PLIST_OPTION_COMPLETE) == 0) + pl->complete = 1; + else { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Illegal \ + option.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } + } + } else if (strcmp(command, PLIST_CMD_OWNER) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_OPTION)) + st->owner = NULL; + else + st->owner = argument; + } else if (strcmp(command, PLIST_CMD_GROUP) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_GROUP)) + st->group = NULL; + else + st->group = argument; + } else if (strcmp(command, PLIST_CMD_COMMENT) == 0) { + /* Comment block. */ + } else if (strcmp(command, PLIST_CMD_NOINST) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_NOINST)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty \ + noinst command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + sep = strchr(argument, ' '); + if (sep == NULL || strlen(sep + 1) == 0) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Bad \ + noinst command.", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + *sep = '\0'; + /* Not really sure what to do here. Ask Tim. */ + } + } + } else if (strcmp(command, PLIST_CMD_IGNORE) == 0) { + st->ignore_next_file = 1; + } else if (strcmp(command, PLIST_CMD_IGNORE_INST) == 0) { + /* ... */ + } else if (strcmp(command, PLIST_CMD_NAME) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_NAME)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty name \ + command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pl->name = argument; + st->last_line = PLIST_NAME; + } + } else if (strcmp(command, PLIST_CMD_DIRRM) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_DIRRM)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty dirrm \ + command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pe = pkg_command_new(); + if (pe == NULL) { + fprintf(stderr, "pkg_plist: Couldn't allocate.\n"); + status |= NOT_OK; + status |= MEMORY_ERR; + return (status); + } + status |= pkg_command_set_type(pe, PLIST_DIRRM); + status |= pkg_command_set_argument(pe, argument); + st->last_line = PLIST_DIRRM; + } + } else if (strcmp(command, PLIST_CMD_DIRRMTRY) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_DIRRMTRY)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty \ + dirrmtry command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pe = pkg_command_new(); + if (pe == NULL) { + fprintf(stderr, "pkg_plist: Couldn't allocate.\n"); + status |= NOT_OK; + status |= MEMORY_ERR; + return (status); + } + status |= pkg_command_set_type(pe, PLIST_UNEXEC); + status |= pkg_command_set_argument(pe, argument); + st->last_line = PLIST_UNEXEC; + } + } else if (strcmp(command, PLIST_CMD_MTREE) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_MTREE)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty mtree \ + command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else if (pl->mtree_file != NULL) { + fprintf(stderr, "pkg_plist: Mtree file already \ + specified.\n"); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pl->mtree_file = argument; + st->last_line = PLIST_MTREE; + } + } else if (strcmp(command, PLIST_CMD_DISPLAY) == 0) { + if (line_len - 1 == strlen(PLIST_CMD_DISPLAY)) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Empty \ + display command.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else if (pl->display_file != NULL) { + fprintf(stderr, "pkg_plist: Bad line \"%s\". Display file \ + already specified.\n", line); + status |= NOT_OK; + st->last_line = PLIST_BAD_LINE; + } else { + pl->display_file = argument; + st->last_line = PLIST_DISPLAY; + } + } + } else { + /* File. */ + pf = pkg_file_new(); + } + + /* line_len checks are ineffective against whitespace? Fix. */ + /* Create an error function, give line number of bad line. */ + + return (status); +} +#endif + const char * pkg_plist_name(struct pkg_plist *pl) { @@ -624,14 +898,29 @@ } int -pkg_plist_add_install(struct pkg_plist *pl, const char *cmd) +pkg_plist_add_install(struct pkg_plist *pl, struct pkg_command *pe) { if (pl == NULL) arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); - if (cmd == NULL) + if (pe == NULL) arg_rage_quit(__func__, "Not a valid install command.", RAGE_AT_LIBPKG); + return (OK); +} + +int +pkg_plist_add_deinstall(struct pkg_plist *pl, struct pkg_command *pe) +{ + if (pl == NULL) + arg_rage_quit(__func__, "Not a valid plist.", RAGE_AT_LIBPKG); + if (pe == NULL) + arg_rage_quit(__func__, "Not a valid deinstall command.", + RAGE_AT_LIBPKG); + + return (OK); +} + int pkg_plist_set_name(struct pkg_plist *pl, const char *name) { ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_plist.h#25 (text+ko) ==== @@ -18,13 +18,13 @@ PLIST_IGNORE_INST, PLIST_NAME, PLIST_DIRRM, - PLIST_DIRRMTRY, PLIST_MTREE, PLIST_DISPLAY, PLIST_PKGDEP, PLIST_CONFLICTS, PLIST_FILE, - PLIST_UNKNOWN + PLIST_UNKNOWN, + PLIST_BAD_LINE }; /* Plist commands. */ @@ -100,6 +100,7 @@ char **pkg_deinstall_list; short parsed; + short dirty; }; struct pkg_plist *pkg_plist_new(void); @@ -107,7 +108,10 @@ void pkg_plist_reset(struct pkg_plist *pl); int pkg_plist_parsed(struct pkg_plist *pl); +int pkg_plist_dirty(struct pkg_plist *pl); +char *pkg_plist_dump_to_text(struct pkg_plist *pl); + int pkg_plist_parse_contents_from_text(struct pkg_plist *pl, const char *text); int pkg_plist_parse_line(struct pkg_plist *pl, char *line, @@ -150,4 +154,8 @@ int pkg_plist_remove_conflict(struct pkg_plist *pl, const char *name); const char *const *pkg_plist_conflicts(struct pkg_plist *pl); +/* pkg_command */ +int pkg_plist_add_install(struct pkg_plist *pl, struct pkg_command *pe); +int pkg_plist_add_deinstall(struct pkg_plist *pl, struct pkg_command *pe); + #endif ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/Makefile#5 (text+ko) ==== @@ -1,7 +1,7 @@ PROG= pkg_info SRCS= main.c WARNS?= 6 -CFLAGS+= -I../libpkg +CFLAGS+= -I${.CURDIR}/../libpkg LDADD= -L../libpkg -lpkg NO_MAN= true From owner-p4-projects@FreeBSD.ORG Thu Jul 23 07:51:08 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DF6061065676; Thu, 23 Jul 2009 07:51:07 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F25A106564A for ; Thu, 23 Jul 2009 07:51:07 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8D4D08FC15 for ; Thu, 23 Jul 2009 07:51:07 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6N7p71o076154 for ; Thu, 23 Jul 2009 07:51:07 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6N7p71b076152 for perforce@freebsd.org; Thu, 23 Jul 2009 07:51:07 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 23 Jul 2009 07:51:07 GMT Message-Id: <200907230751.n6N7p71b076152@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 166432 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 07:51:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=166432 Change 166432 by hselasky@hselasky_laptop001 on 2009/07/23 07:50:54 USB input: - fix bad class quirk for UMS driver. - patch by Bryan Venteicher Affected files ... .. //depot/projects/usb/src/sys/dev/usb/input/ums.c#20 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/input/ums.c#20 (text+ko) ==== @@ -535,6 +535,9 @@ * it has two addional buttons and a tilt wheel. */ if (usb_test_quirk(uaa, UQ_MS_BAD_CLASS)) { + + sc->sc_iid = 0; + info = &sc->sc_info[0]; info->sc_flags = (UMS_FLAG_X_AXIS | UMS_FLAG_Y_AXIS | @@ -544,11 +547,17 @@ isize = 5; /* 1st byte of descriptor report contains garbage */ info->sc_loc_x.pos = 16; + info->sc_loc_x.size = 8; info->sc_loc_y.pos = 24; + info->sc_loc_y.size = 8; info->sc_loc_z.pos = 32; + info->sc_loc_z.size = 8; info->sc_loc_btn[0].pos = 8; + info->sc_loc_btn[0].size = 1; info->sc_loc_btn[1].pos = 9; + info->sc_loc_btn[1].size = 1; info->sc_loc_btn[2].pos = 10; + info->sc_loc_btn[2].size = 1; /* Announce device */ device_printf(dev, "3 buttons and [XYZ] " From owner-p4-projects@FreeBSD.ORG Thu Jul 23 13:56:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C6B9E106568C; Thu, 23 Jul 2009 13:56:47 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83F9C1065680 for ; Thu, 23 Jul 2009 13:56:47 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6ADB58FC2F for ; Thu, 23 Jul 2009 13:56:47 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NDulf0028369 for ; Thu, 23 Jul 2009 13:56:47 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NDukpX028367 for perforce@freebsd.org; Thu, 23 Jul 2009 13:56:46 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 13:56:46 GMT Message-Id: <200907231356.n6NDukpX028367@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166441 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 13:56:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=166441 Change 166441 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 13:56:30 Added ua_stat(), ua_access(), ua_opendir() and ua_unmarshall_bytes() Affected files ... .. //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.c#9 edit .. //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.h#11 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.c#9 (text+ko) ==== @@ -37,6 +37,7 @@ #include +#include #include #include #include @@ -139,6 +140,64 @@ +int ua_access(const char *path, int mode) +{ + if(angel < 0) angel = ua_find(); + if(angel < 0) return -1; + + struct ua_datum *data[3]; + data[0] = ua_marshall_int(UA_CHECK_ACCESS); + data[1] = ua_marshall_string(path, strlen(path)); + data[2] = ua_marshall_int(mode); + + for(int i = 0; i < 3; i++) if(ua_send(angel, data[i], NULL, 0) < 0) return -1; + + free(data[0]); + free(data[1]); + free(data[2]); + + + + // retrieve the file descriptor(s) + struct ua_datum *d = ua_recv(angel, NULL, NULL); + if(!d) return -1; + + int response; + if(ua_unmarshall_int(d, &response) < 0) return -1; + + return response; +} + + + +int ua_stat(const char *path, struct stat *s) +{ + if(angel < 0) angel = ua_find(); + if(angel < 0) return -1; + + struct ua_datum *data[2]; + data[0] = ua_marshall_int(UA_STAT); + data[1] = ua_marshall_string(path, strlen(path)); + + for(int i = 0; i < 2; i++) + if(ua_send(angel, data[i], NULL, 0) < 0) + return -1; + + free(data[0]); + free(data[1]); + + + + struct ua_datum *d = ua_recv(angel, NULL, NULL); + if(!d) return -1; + + unsigned int len = sizeof(struct stat); + if(ua_unmarshall_bytes(d, (char*) s, &len) < 0) return -1; + + return 0; +} + + int ua_open(const char *path, int flags) { cap_rights_t rights = CAP_SEEK | CAP_FSYNC; @@ -158,8 +217,6 @@ if(angel < 0) angel = ua_find(); if(angel < 0) return -1; - printf("ua_ropen('%s', %i, %016llx)\n", path, flags, rights); - struct ua_datum *data[4]; data[0] = ua_marshall_int(UA_OPEN_PATH); data[1] = ua_marshall_string(path, strlen(path)); @@ -256,7 +313,16 @@ } +DIR* ua_opendir(const char *filename) +{ + int fd = ua_open(filename, O_RDONLY | O_DIRECTORY); + if(fd < 0) return NULL; + + return fdopendir(fd); +} + + int ua_send(int sock, datum *d, int32_t fds[], int32_t fdlen) { // the datum is the I/O vector @@ -434,6 +500,16 @@ int ua_unmarshall_string(const datum *d, char *value, unsigned int *len) { + (*len)--; + ua_unmarshall_bytes(d, value, len); + value[*len] = '\0'; + + return d->length; +} + + +int ua_unmarshall_bytes(const datum *d, char *value, unsigned int *len) +{ if(d == NULL) { errno = EINVAL; @@ -448,7 +524,7 @@ return -1; } } - else if(d->length >= *len) + else if(d->length > *len) { errno = EOVERFLOW; return -1; @@ -456,7 +532,6 @@ *len = d->length; memcpy(value, ((const char*) d) + sizeof(datum), d->length); - value[*len] = '\0'; return d->length; } ==== //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.h#11 (text+ko) ==== @@ -35,6 +35,9 @@ #define _LIBUSERANGEL_H_ #include +#include + +#include #include #include @@ -53,6 +56,12 @@ /** Set the user angel */ void ua_set(int fd); +/** Check access rights via the User Angel */ +int ua_access(const char *access, int mode); + +/** Check file status via the User Angel */ +int ua_stat(const char *path, struct stat *s); + /** Open a file via the User Angel */ int ua_open(const char *path, int flags); @@ -62,6 +71,9 @@ /** Open a file stream via the User Angel */ FILE* ua_fopen(const char *path, const char *mode); +/** Open a directory via the User Angel */ +DIR* ua_opendir(const char *filename); + /* Low-level API */ @@ -69,7 +81,10 @@ enum ua_request_t { UA_NO_OP = 0, /* do nothing (useful for debugging) */ + UA_CHECK_ACCESS, /* access() substitute */ + UA_STAT, /* stat() substitute */ UA_OPEN_PATH, /* open() substitute */ + UA_OPEN_DIR, /* opendir() substitute */ UA_LOAD_LIBRARY, /* load a shared library */ UA_POWERBOX /* ask the user for file descriptor(s) */ }; @@ -114,6 +129,7 @@ /* Unmarshalling functions; return the number of bytes unmarshalled (or -1) */ int ua_unmarshall_int(const struct ua_datum *d, int32_t *value); +int ua_unmarshall_bytes(const struct ua_datum *d, char *value, unsigned int *len); int ua_unmarshall_string(const struct ua_datum *d, char *value, unsigned int *len); int ua_unmarshall_error(const struct ua_datum *d, int *errnum, char *msg, int *msglen); int ua_unmarshall_powerbox(const struct ua_datum *d, struct ua_powerbox_options *options); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 13:58:50 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E13F11065731; Thu, 23 Jul 2009 13:58:49 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 964D410656CD for ; Thu, 23 Jul 2009 13:58:49 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8369E8FC17 for ; Thu, 23 Jul 2009 13:58:49 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NDwnDw028485 for ; Thu, 23 Jul 2009 13:58:49 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NDwnpv028483 for perforce@freebsd.org; Thu, 23 Jul 2009 13:58:49 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 13:58:49 GMT Message-Id: <200907231358.n6NDwnpv028483@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166442 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 13:58:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=166442 Change 166442 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 13:58:10 Better flags -> rights translation Affected files ... .. //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.c#10 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/lib/libuserangel/libuserangel.c#10 (text+ko) ==== @@ -198,20 +198,22 @@ } + int ua_open(const char *path, int flags) { - cap_rights_t rights = CAP_SEEK | CAP_FSYNC; + cap_rights_t rights = CAP_FSTAT | CAP_SEEK | CAP_FSYNC; if(flags & O_WRONLY) rights |= CAP_WRITE | CAP_FTRUNCATE; else if(flags & O_RDWR) rights |= CAP_READ | CAP_WRITE | CAP_FTRUNCATE; else rights |= CAP_READ; - if(flags & O_EXEC) rights |= CAP_FSTAT | CAP_FEXECVE; + if(flags & O_DIRECTORY) rights |= CAP_FSTATFS | CAP_FEXECVE; return ua_ropen(path, flags, rights); } + int ua_ropen(const char *path, int flags, cap_rights_t rights) { if(angel < 0) angel = ua_find(); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 13:59:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 306CF1065672; Thu, 23 Jul 2009 13:59:51 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB7341065670 for ; Thu, 23 Jul 2009 13:59:50 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B8EED8FC12 for ; Thu, 23 Jul 2009 13:59:50 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NDxowg028548 for ; Thu, 23 Jul 2009 13:59:50 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NDxoU1028546 for perforce@freebsd.org; Thu, 23 Jul 2009 13:59:50 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 13:59:50 GMT Message-Id: <200907231359.n6NDxoU1028546@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166443 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 13:59:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=166443 Change 166443 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 13:59:40 Handle ua_access() and ua_stat() requests in the user_angel Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/user_angel/server.c#16 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/user_angel/server.c#16 (text+ko) ==== @@ -33,6 +33,7 @@ #include #include +#include #include #include @@ -80,6 +81,8 @@ void accept_client(int fd_server); int service_client(struct client*); int handle_request(struct client*, enum ua_request_t); +int handle_stat_request(struct client *client, struct ua_datum *d); +int handle_check_access(struct client *client, struct ua_datum *d); int handle_path_request(struct client*, struct ua_datum*); int handle_powerbox_request(struct client*, struct ua_datum*); void client_error(struct client*, const char *message, int errnum, @@ -207,9 +210,9 @@ for(struct client *c = clients; ; c = c->next) if(c->next == NULL) { - c->next = client; client->prev = c; client->next = NULL; + c->next = client; break; } @@ -246,21 +249,27 @@ if(FD_ISSET(fd_server, &selected)) { + printf("server socket selected\n"); /* TODO: tmp */ accept_client(fd_server); FD_CLR(fd_server, &selected); ready--; } - for(struct client *c = clients; c && ready; c = c->next) + for(struct client *c = clients; c && ready; ) if(FD_ISSET(c->socket, &selected)) { int sock = c->socket; + struct client *next = c->next; + service_client(c); FD_CLR(sock, &selected); ready--; + + c = next; } + else c = c->next; } @@ -327,12 +336,23 @@ int retval; switch(req) { + case UA_CHECK_ACCESS: + printf("%20s", "UA_CHECK_ACCESS"); + retval = handle_check_access(client, datum); + break; + + case UA_STAT: + printf("%20s", "UA_STAT"); + retval = handle_stat_request(client, datum); + break; + case UA_OPEN_PATH: + printf("%20s", "UA_OPEN_PATH"); retval = handle_path_request(client, datum); break; case UA_POWERBOX: - puts("UA_POWERBOX"); + printf("%20s", "UA_POWERBOX"); retval = handle_powerbox_request(client, datum); break; @@ -346,14 +366,65 @@ } +int handle_check_access(struct client *client, struct ua_datum *d) +{ + char path[256] = ""; + unsigned int pathlen = 256; + + int sock = client->socket; + + if(ua_unmarshall_string(d, path, &pathlen) < 0) return -1; + + printf(": %s\n", path); + + int32_t mode; + if(ua_unmarshall_int(ua_recv(sock, NULL, NULL), &mode) < 0) return -1; + + + int retval = access(path, mode); + d = ua_marshall_int(retval); + if(!d) return -1; + + if(ua_send(sock, d, NULL, 0) < 0) return -1; + free(d); + + + return 0; +} + + +int handle_stat_request(struct client *client, struct ua_datum *d) +{ + char path[256] = ""; + unsigned int pathlen = 256; + + int sock = client->socket; + + if(ua_unmarshall_string(d, path, &pathlen) < 0) return -1; + printf(": %s\n", path); + + struct stat s; + if(stat(path, &s)) return 1; + + + d = ua_marshall_string((char*) &s, sizeof(s)); + if(!d) return -1; + + if(ua_send(sock, d, NULL, 0) < 0) return -1; + free(d); + + + return 0; +} + + + int handle_path_request(struct client *client, struct ua_datum *d) { // unsigned int fdlen = 0; char path[256] = ""; unsigned int pathlen = 256; - printf("UA_OPEN_PATH"); - int sock = client->socket; // struct ua_datum *d = ua_recv(sock, NULL, &fdlen); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:08:00 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1C77610656AC; Thu, 23 Jul 2009 14:08:00 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC30810656A5 for ; Thu, 23 Jul 2009 14:07:59 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B9B328FC1A for ; Thu, 23 Jul 2009 14:07:59 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NE7x3x030127 for ; Thu, 23 Jul 2009 14:07:59 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NE7xfV030125 for perforce@freebsd.org; Thu, 23 Jul 2009 14:07:59 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:07:59 GMT Message-Id: <200907231407.n6NE7xfV030125@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166444 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:08:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=166444 Change 166444 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:07:50 Stub of a policy implementation Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/user_angel/policy.c#2 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/user_angel/policy.c#2 (text+ko) ==== @@ -46,15 +46,39 @@ #include #include +#include + #include "policy.h" +#include "server.h" /* TODO: tmp */ int default_policy(struct client* client, enum ua_request_t req, struct ua_datum* d) { -// fprintf(stderr, "\n\nUnhandled policy request type %i\n\n", req); + switch(req) + { + case UA_NO_OP: return 1; + + case UA_CHECK_ACCESS: + case UA_STAT: + case UA_OPEN_PATH: + { + unsigned int len = d->length + 1; + char path[len]; + + if(ua_unmarshall_string(d, path, &len) < 0) + return -1; + } + + return 1; + + case UA_LOAD_LIBRARY: + case UA_POWERBOX: - return 0; // the default is to reject all requests + default: + fprintf(stderr, "Unhandled policy request type %i\n", req); + return 0; + } } From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:10:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 83D601065672; Thu, 23 Jul 2009 14:10:02 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43AE3106566B for ; Thu, 23 Jul 2009 14:10:02 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 170F98FC13 for ; Thu, 23 Jul 2009 14:10:02 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEA1hA030293 for ; Thu, 23 Jul 2009 14:10:01 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEA1Gi030291 for perforce@freebsd.org; Thu, 23 Jul 2009 14:10:01 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:10:01 GMT Message-Id: <200907231410.n6NEA1Gi030291@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166445 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:10:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=166445 Change 166445 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:09:15 Use Qt-standard way of adding debug flags Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.pro#3 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.pro#3 (text+ko) ==== @@ -1,11 +1,11 @@ TEMPLATE = app +CONFIG += qt debug + TARGET = DEPENDPATH += . INCLUDEPATH += . LIBS += -lcapability -luserangel -lsbuf -QMAKE_CFLAGS += -g -ggdb -QMAKE_CXXFLAGS += -g -ggdb QMAKE_LFLAGS += -rdynamic # Input From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:11:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9FCA3106566C; Thu, 23 Jul 2009 14:11:03 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5F623106564A for ; Thu, 23 Jul 2009 14:11:03 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4D11F8FC0A for ; Thu, 23 Jul 2009 14:11:03 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEB3pv030454 for ; Thu, 23 Jul 2009 14:11:03 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEB3v5030452 for perforce@freebsd.org; Thu, 23 Jul 2009 14:11:03 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:11:03 GMT Message-Id: <200907231411.n6NEB3v5030452@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166446 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:11:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=166446 Change 166446 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:10:50 sandbox_qt works\! Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#3 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#3 (text+ko) ==== @@ -95,12 +95,13 @@ for(int i = 0; libdirs[i]; i++) { sprintf(path, "%s/%s", libdirs[i], name); - lib.lcl_fd = ua_ropen(path, O_RDONLY, rights); +// lib.lcl_fd = ua_ropen(path, O_RDONLY, rights); // TODO: this is a kludge because mmap() fails in the child proc lib.lcl_fd = open(path, O_RDONLY); if(lib.lcl_fd >= 0) return lib; - printf("errno: %i\n", errno); + if(errno != ENOENT) + err(EX_NOINPUT, "Error opening library %s", path); } err(-1, "Error opening %s with rights 0x%016llx\n", name, rights); @@ -161,9 +162,13 @@ find_library("librpcsvc.so.4"), find_library("libexpat.so.6"), + //fontconfig + find_library("libxml2.so.5"), + find_library("libfreetype.so.9"), + { NULL, NULL, -1 } }; -// sleep(120); + int libcount = 0; while(libs[libcount].lcl_fd >= 0) libcount++; @@ -240,6 +245,14 @@ } cout << "host:\t\tSent Xauth data to sandbox" << endl; + printf("======================================\n"); + printf("\n"); + printf("\n"); + printf("\n"); + printf("\n"); + printf("======================================\n"); + fflush(stdout); + sleep(1); QMessageBox::information(NULL, "Host", "This is on the host"); return 0; @@ -254,7 +267,6 @@ printf("sandbox:\tIn sandbox: %i\n", ld_insandbox()); fflush(stdout); - struct lc_host *lchpp; if(lcs_get(&lchpp) < 0) err(EX_IOERR, "Error getting lc_host"); @@ -353,7 +365,7 @@ printf("sandbox:\tset DISPLAY to %s\n", getenv("DISPLAY")); fflush(stdout); - raw_x_tests(); +// raw_x_tests(); printf("sandbox:\tCreating QApplication...\n"); fflush(stdout); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:12:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 171F51065676; Thu, 23 Jul 2009 14:12:05 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E716106566B for ; Thu, 23 Jul 2009 14:12:04 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 82C438FC26 for ; Thu, 23 Jul 2009 14:12:04 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEC4fP030526 for ; Thu, 23 Jul 2009 14:12:04 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEC43P030524 for perforce@freebsd.org; Thu, 23 Jul 2009 14:12:04 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:12:04 GMT Message-Id: <200907231412.n6NEC43P030524@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166447 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:12:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=166447 Change 166447 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:11:52 Removed raw_x_tests() Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#4 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#4 (text+ko) ==== @@ -259,9 +259,6 @@ } -void raw_x_tests(); - - extern "C" int cap_main(int argc, char *argv[]) { printf("sandbox:\tIn sandbox: %i\n", ld_insandbox()); @@ -365,8 +362,6 @@ printf("sandbox:\tset DISPLAY to %s\n", getenv("DISPLAY")); fflush(stdout); -// raw_x_tests(); - printf("sandbox:\tCreating QApplication...\n"); fflush(stdout); QApplication app(argc, argv); @@ -416,77 +411,6 @@ -void raw_x_tests() -{ - printf("sandbox:\traw_x_tests()\n"); - fflush(stdout); - - xcb_connection_t *c; - xcb_screen_t *s; - xcb_window_t w; - xcb_gcontext_t g; - xcb_generic_event_t *e; - uint32_t mask; - uint32_t values[2]; - int done = 0; - xcb_rectangle_t r = { 20, 20, 60, 60 }; - - /* open connection with the server */ - int screenp; - printf("sandbox:\tConnecting...\n"); - fflush(stdout); - c = xcb_connect_to_display_with_auth_info(NULL, NULL/*xauth*/, &screenp); - printf("sandbox:\tConnection: %x\n", (unsigned int) c); - fflush(stdout); - if (xcb_connection_has_error(c)) { - printf("Cannot open display\n"); - fflush(stdout); - return; - } - /* get the first screen */ - s = xcb_setup_roots_iterator( xcb_get_setup(c) ).data; - - /* create black graphics context */ - g = xcb_generate_id(c); - w = s->root; - mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES; - values[0] = s->black_pixel; - values[1] = 0; - xcb_create_gc(c, g, w, mask, values); - - /* create window */ - w = xcb_generate_id(c); - mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK; - values[0] = s->white_pixel; - values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_KEY_PRESS; - xcb_create_window(c, s->root_depth, w, s->root, - 10, 10, 100, 100, 1, - XCB_WINDOW_CLASS_INPUT_OUTPUT, s->root_visual, - mask, values); - - /* map (show) the window */ - xcb_map_window(c, w); - - xcb_flush(c); - - /* event loop */ - while (!done && (e = xcb_wait_for_event(c))) { - switch (e->response_type & ~0x80) { - case XCB_EXPOSE: /* draw or redraw the window */ - xcb_poly_fill_rectangle(c, w, g, 1, &r); - xcb_flush(c); - break; - case XCB_KEY_PRESS: /* exit on key press */ - done = 1; - break; - } - free(e); - } - /* close connection to server */ - xcb_disconnect(c); -} - - int connect_to_X(int *Xfd, xcb_auth_info_t *auth) { char *host; From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:24:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9A471106566C; Thu, 23 Jul 2009 14:24:18 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F45A106564A for ; Thu, 23 Jul 2009 14:24:18 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3CA468FC18 for ; Thu, 23 Jul 2009 14:24:18 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEOHmL031388 for ; Thu, 23 Jul 2009 14:24:17 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEOHRG031386 for perforce@freebsd.org; Thu, 23 Jul 2009 14:24:17 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:24:17 GMT Message-Id: <200907231424.n6NEOHRG031386@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166448 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:24:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=166448 Change 166448 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:24:02 Re-ordered in-sandbox tests Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#5 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#5 (text+ko) ==== @@ -264,6 +264,8 @@ printf("sandbox:\tIn sandbox: %i\n", ld_insandbox()); fflush(stdout); + + // get a file descriptor for our host struct lc_host *lchpp; if(lcs_get(&lchpp) < 0) err(EX_IOERR, "Error getting lc_host"); @@ -273,6 +275,8 @@ fflush(stdout); + + // find the User Angel int32_t angel = -1; uint32_t angellen = 1; struct ua_datum *d = ua_recv(host, &angel, &angellen); @@ -293,7 +297,7 @@ - // first test X stuff (inc. starting the QApplication) + // receive X file descriptor, Xauth data int32_t Xfd = -1; uint32_t Xfdlen = 1; d = ua_recv(host, &Xfd, &Xfdlen); @@ -313,6 +317,13 @@ printf("sandbox:\tX at FD %i\n", Xfd); fflush(stdout); + char display[20]; + sprintf(display, "fd://cap:%i", Xfd); + setenv("DISPLAY", display, 1); + printf("sandbox:\tset DISPLAY to %s\n", getenv("DISPLAY")); + fflush(stdout); + + d = ua_recv(host, NULL, 0); if(!d) { @@ -345,34 +356,23 @@ printf("\n"); fflush(stdout); - xcb_auth_info_t xauthinfo; xauthinfo.namelen = xauthnamelen; xauthinfo.name = xauthname; xauthinfo.datalen = xauthdatalen; xauthinfo.data = xauthdata; - xcb_auth_cache(&xauthinfo); - char display[20]; - sprintf(display, "fd://cap:%i", Xfd); - setenv("DISPLAY", display, 1); - printf("sandbox:\tset DISPLAY to %s\n", getenv("DISPLAY")); - fflush(stdout); + // start QApplication printf("sandbox:\tCreating QApplication...\n"); fflush(stdout); QApplication app(argc, argv); - printf("sandbox:\tQApplication started, displaying message box...\n"); - fflush(stdout); - QMessageBox::information(NULL, "Sandbox", "This is sandboxed"); - printf("sandbox:\tMessage box closed\n"); - fflush(stdout); + printf("sandbox:\tQApplication started.\n"); - // now test file opening int fd = ua_open("/etc/passwd", O_RDONLY); if(fd < 0) err(EX_IOERR, "Error opening passwd via angel"); @@ -405,6 +405,16 @@ printf("Filename: %s\n", group.fileName().toStdString().c_str()); printf("Data: %s\n", group.readLine().data()); fflush(stdout); + + + + printf("sandbox:\tDisplaying message box...\n"); + fflush(stdout); + QMessageBox::information(NULL, "Sandbox", "This is sandboxed"); + printf("sandbox:\tMessage box closed\n"); + fflush(stdout); + + return 0; } From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:31:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 54C55106566C; Thu, 23 Jul 2009 14:31:26 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 149EB106564A for ; Thu, 23 Jul 2009 14:31:26 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 026698FC08 for ; Thu, 23 Jul 2009 14:31:26 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEVPhF031893 for ; Thu, 23 Jul 2009 14:31:25 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEVP8d031891 for perforce@freebsd.org; Thu, 23 Jul 2009 14:31:25 GMT (envelope-from jona@FreeBSD.org) Date: Thu, 23 Jul 2009 14:31:25 GMT Message-Id: <200907231431.n6NEVP8d031891@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166450 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:31:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=166450 Change 166450 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 14:30:50 Removed a spurious printf() Affected files ... .. //depot/projects/trustedbsd/capabilities/qt-patches/x11/libxcb/files/patch-bsd-capabilities.diff#2 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/qt-patches/x11/libxcb/files/patch-bsd-capabilities.diff#2 (text+ko) ==== @@ -25,7 +25,7 @@ enum auth_protos { #ifdef HASXDMAUTH AUTH_XA1, -@@ -87,6 +90,28 @@ +@@ -87,6 +90,26 @@ return 1; } @@ -45,8 +45,6 @@ + memcpy(new_data->data, authinfo->data, new_data->datalen + 1); + + auth_cached = new_data; -+ printf("cached auth info at 0x%08x\n", auth_cached); -+ fflush(stdout); /* TODO: TMP */ + return 0; +} + @@ -54,7 +52,7 @@ #define SIN6_ADDR(s) (&((struct sockaddr_in6 *)s)->sin6_addr) static Xauth *get_authptr(struct sockaddr *sockname, unsigned int socknamelen, -@@ -269,7 +294,16 @@ +@@ -269,7 +292,16 @@ authptr = get_authptr(sockname, socknamelen, display); if (authptr == 0) From owner-p4-projects@FreeBSD.ORG Thu Jul 23 14:34:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C0B241065673; Thu, 23 Jul 2009 14:34:29 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EEC51065670 for ; Thu, 23 Jul 2009 14:34:29 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6CA988FC1A for ; Thu, 23 Jul 2009 14:34:29 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NEYTSM032108 for ; Thu, 23 Jul 2009 14:34:29 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NEYTsm032106 for perforce@freebsd.org; Thu, 23 Jul 2009 14:34:29 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 14:34:29 GMT Message-Id: <200907231434.n6NEYTsm032106@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166451 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 14:34:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=166451 Change 166451 by andre@andre_t61 on 2009/07/23 14:34:26 Bring back tcp reassembly timers lost in the last integrate/resolve. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_timer.c#10 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_timer.c#10 (text+ko) ==== @@ -597,6 +597,46 @@ } void +tcp_timer_reass(void *xtp) +{ + struct tcpcb *tp = xtp; + struct inpcb *inp; + CURVNET_SET(tp->t_vnet); + + INP_INFO_RLOCK(&V_tcbinfo); + inp = tp->t_inpcb; + /* + * XXXRW: While this assert is in fact correct, bugs in the tcpcb + * tear-down mean we need it as a work-around for races between + * timers and tcp_discardcb(). + * + * KASSERT(inp != NULL, ("tcp_timer_reass: inp == NULL")); + */ + if (inp == NULL) { + tcp_timer_race++; + INP_INFO_RUNLOCK(&V_tcbinfo); + CURVNET_RESTORE(); + return; + } + INP_WLOCK(inp); + INP_INFO_RUNLOCK(&V_tcbinfo); + if ((inp->inp_vflag & INP_DROPPED) || callout_pending(&tp->t_timers->tt_reass) + || !callout_active(&tp->t_timers->tt_reass)) { + INP_WUNLOCK(inp); + CURVNET_RESTORE(); + return; + } + callout_deactivate(&tp->t_timers->tt_reass); + + TCPSTAT_INC(tcps_reass_flush); + tcp_reass_flush(tp); + tp->t_flags |= TF_ACKNOW; + (void) tcp_output(tp); + INP_WUNLOCK(inp); + CURVNET_RESTORE(); +} + +void tcp_timer_activate(struct tcpcb *tp, int timer_type, u_int delta) { struct callout *t_callout; @@ -623,6 +663,10 @@ t_callout = &tp->t_timers->tt_2msl; f_callout = tcp_timer_2msl; break; + case TT_REASS: + t_callout = &tp->t_timers->tt_reass; + f_callout = tcp_timer_reass; + break; default: panic("bad timer_type"); } @@ -654,6 +698,8 @@ case TT_2MSL: t_callout = &tp->t_timers->tt_2msl; break; + case TT_REASS: + t_callout = &tp->t_timers->tt_reass; default: panic("bad timer_type"); } From owner-p4-projects@FreeBSD.ORG Thu Jul 23 15:07:06 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C0E5F1065670; Thu, 23 Jul 2009 15:07:05 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 734F21065678 for ; Thu, 23 Jul 2009 15:07:05 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5FBB38FC1D for ; Thu, 23 Jul 2009 15:07:05 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NF75H2035513 for ; Thu, 23 Jul 2009 15:07:05 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NF74vk035511 for perforce@freebsd.org; Thu, 23 Jul 2009 15:07:04 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 15:07:04 GMT Message-Id: <200907231507.n6NF74vk035511@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166452 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 15:07:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=166452 Change 166452 by andre@andre_t61 on 2009/07/23 15:06:21 Simplify m_trimhead(). In tcp_reass_verity() differentiate rcv_nxt check. Ignore rcv_reass_size, it's not tracked at the moment. Simplify and fix SACK tracking. Swap some KASSERT arguments for clarity. Simplify and fix the block pre-merge logic. Correctly set reassembly queue timeout. Separate block trimming into its own function tcp_reass_trim. Fix tcp_reass_merge to deal with all situations and edge-cases. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#39 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#39 (text+ko) ==== @@ -139,13 +139,10 @@ static struct mbuf * m_trimhead(struct mbuf *m) { - struct mbuf *n; + + while (m != NULL && m->m_len == 0) + m = m_free(m); - while (m->m_len == 0) { - n = m; - m = m->m_next; - m_free(n); - } return (m); } @@ -197,7 +194,7 @@ #ifdef INVARIANTS static int -tcp_reass_verify(struct tcpcb *tp) +tcp_reass_verify(struct tcpcb *tp, int prepost) { int i = 0, size = 0, total = 0; struct mbuf *m; @@ -206,8 +203,8 @@ RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), ("%s: trb_seqs >= trb_seqe", __func__)); - KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt), - ("%s: rcv_nxt >= trb_seqs", __func__)); + KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt) || + prepost, ("%s: rcv_nxt >= trb_seqs", __func__)); KASSERT(trb->trb_m != NULL, ("%s: trb_m == NULL", __func__)); KASSERT(trb->trb_mt != NULL, @@ -222,8 +219,8 @@ total += size; i++; } - KASSERT(tp->rcv_reass_size == total, - ("%s: total not correct", __func__)); + //KASSERT(tp->rcv_reass_size == total, + // ("%s: total not correct", __func__)); LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { i--; @@ -244,7 +241,6 @@ LIST_REMOVE(trb, trb_sack); if (trb->trb_m != NULL) m_freem(trb->trb_m); - tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); tp->rcv_reass_blocks--; uma_zfree(tcp_reass_zone, trb); } @@ -255,13 +251,13 @@ struct tcp_reass_block *trb, *trbn; INP_WLOCK_ASSERT(tp->t_inpcb); - KASSERT(tcp_reass_verify(tp), + KASSERT(tcp_reass_verify(tp, 0), ("%s: reassembly queue inconsistent", __func__)); RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { tcp_reass_free(tp, trb); } - KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); + //KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); } static __inline void @@ -269,8 +265,7 @@ { if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { - if (!LIST_EMPTY(&tp->rcv_reass_sack)) - LIST_REMOVE(trb, trb_sack); + LIST_REMOVE(trb, trb_sack); LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); } } @@ -325,11 +320,11 @@ if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) goto done; - KASSERT(SEQ_LT(tp->rcv_nxt, th_seq), + KASSERT(SEQ_GEQ(th_seq, tp->rcv_nxt), ("%s: sequence number below rcv_nxt", __func__)); KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), ("%s: got missing segment but queue is empty", __func__)); - KASSERT(tcp_reass_verify(tp), + KASSERT(tcp_reass_verify(tp, 0), ("%s: reassembly queue already inconsistent", __func__)); /* @@ -392,7 +387,7 @@ */ m_demote(m, 1); m = m_trimhead(m); - if (tcp_reass_spacetime) + if (tcp_reass_spacetime && m->m_next != NULL) m = m_collapse(m, M_DONTWAIT, 1024); KASSERT(m != NULL, ("%s: m is NULL after collapse", __func__)); @@ -408,7 +403,8 @@ * insert a new reassembly block. */ if ((trb = RB_FIND(tcp_ra, &tp->rcv_reass, &trbs)) != NULL) { - /* Within an already known block. */ + + /* Within an already received block. */ if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { tcp_reass_sacktrack(tp, trb); @@ -416,33 +412,25 @@ tp->rcv_reass_dsack.end = trbs.trb_seqe; goto done; } - tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - /* Extends the end, common case. */ - if (SEQ_GT(trbs.trb_seqe, trb->trb_seqe)) { - (void)tcp_reass_merge(trb, &trbs); - tcp_reass_sacktrack(tp, trb); + /* Merge in the new segment. */ + (void)tcp_reass_merge(trb, &trbs); + tcp_reass_sacktrack(tp, trb); - /* Merge in next blocks if there is overlap. */ - while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } + /* Merge in previous block(s) if there is overlap. */ + while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && + SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { + trbn = tcp_reass_merge(trb, trbn); + tcp_reass_free(tp, trbn); } - /* Extends the start. */ - if (SEQ_LT(trbs.trb_seqs, trb->trb_seqs)) { - (void)tcp_reass_merge(trb, &trbs); - tcp_reass_sacktrack(tp, trb); + /* Merge in next block(s) if there is overlap. */ + while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && + SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { + trbn = tcp_reass_merge(trb, trbn); + tcp_reass_free(tp, trbn); + } - /* Merge in previous blocks if there is overlap. */ - while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } - } } else if (tp->rcv_nxt == th_seq) { trb = &trbs; } else if ((trb = (struct tcp_reass_block *)uma_zalloc(tcp_reass_zone, (M_NOWAIT|M_ZERO))) != NULL) { @@ -452,14 +440,13 @@ trb->trb_mt = trbs.trb_mt; trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, trb); KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); - tcp_reass_sacktrack(tp, trb); - tp->rcv_reass_size += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); tp->rcv_reass_blocks++; } else { /* Memory allocation failure. */ goto done; } - KASSERT(tcp_reass_verify(tp), + KASSERT(tcp_reass_verify(tp, 1), ("%s: reassembly queue went inconsistent", __func__)); if (trb->trb_seqs == tp->rcv_nxt) @@ -500,8 +487,7 @@ * deactivate it. */ if (tcp_reass_timeout && !RB_EMPTY(&tp->rcv_reass)) - tcp_timer_activate(tp, TT_REASS, - tp->t_rxtcur * tcp_reass_timeout); + tcp_timer_activate(tp, TT_REASS, tcp_reass_timeout); else tcp_timer_activate(tp, TT_REASS, 0); @@ -515,8 +501,27 @@ } /* + * Trim a block. + * Positive value is from head, negative from tail. + */ +static void +tcp_reass_trim(struct tcp_reass_block *trb, int i) +{ + + m_adj(trb->trb_m, i); + + if (i < 0) { + trb->trb_mt = m_last(trb->trb_m); + trb->trb_seqe -= i; + } else { + trb->trb_m = m_trimhead(trb->trb_m); + trb->trb_seqs += i; + } +} + +/* * Merge one or more consecutive blocks together. - * Always merge trbn into trb! + * NB: trbn is always merged into trb! */ static struct tcp_reass_block * tcp_reass_merge(struct tcp_reass_block *trb, struct tcp_reass_block *trbn) @@ -526,40 +531,53 @@ KASSERT(trb != NULL && trbn != NULL, ("%s: incomplete input", __func__)); - /* Append and prepend. */ - if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { - if (SEQ_GEQ(trb->trb_seqe, trbn->trb_seqe)) - return (trbn); - if ((i = SEQ_DELTA(trb->trb_seqe, trbn->trb_seqs)) > 0) { - m_adj(trbn->trb_m, i); - trbn->trb_m = m_trimhead(trbn->trb_m); + KASSERT(SEQ_LT(trbn->trb_seqs, trb->trb_seqs) || + SEQ_GT(trbn->trb_seqe, trb->trb_seqe), + ("%s: ", __func__)); + + /* Replace, prepend and append. */ + if (SEQ_LEQ(trbn->trb_seqs, trb->trb_seqs) && + SEQ_GEQ(trbn->trb_seqe, trb->trb_seqe)) { + + m_freem(trb->trb_m); + trb->trb_seqs = trbn->trb_seqs; + trb->trb_seqe = trbn->trb_seqe; + trb->trb_m = trbn->trb_m; + trb->trb_mt = trbn->trb_mt; + + } else if (SEQ_LT(trbn->trb_seqs, trb->trb_seqs)) { + + if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) + tcp_reass_trim(trbn, -i); + + trb->trb_seqs = trbn->trb_seqs; + trbn->trb_mt->m_next = trb->trb_m; + trb->trb_m = trbn->trb_m; + + if (tcp_reass_spacetime) { + trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); + trb->trb_mt = m_last(trbn->trb_mt); } + + } else if (SEQ_GT(trbn->trb_seqe, trb->trb_seqe)) { + + if ((i = SEQ_DELTA(trb->trb_seqe, trbn->trb_seqs)) > 0) + tcp_reass_trim(trbn, i); + trb->trb_seqe = trbn->trb_seqe; trb->trb_mt->m_next = trbn->trb_m; + if (tcp_reass_spacetime) { trb->trb_mt = m_collapse(trb->trb_mt, M_DONTWAIT, 1024); trb->trb_mt = m_last(trb->trb_mt); } else trb->trb_mt = trbn->trb_mt; - } else if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - if (SEQ_LEQ(trb->trb_seqs, trbn->trb_seqs)) - return (trbn); - if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) { - m_adj(trb->trb_m, i); - trb->trb_m = m_trimhead(trb->trb_m); - } - trb->trb_seqs = trbn->trb_seqs; - trb->trb_m = trbn->trb_m; - trbn->trb_mt->m_next = trb->trb_m; - if (tcp_reass_spacetime) { - trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trbn->trb_mt); - } + } else return (NULL); trbn->trb_seqs = 0; - trbn->trb_seqe = i; + trbn->trb_seqe = 0; trbn->trb_m = NULL; trbn->trb_mt = NULL; return (trbn); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 15:11:10 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 29E0A106567A; Thu, 23 Jul 2009 15:11:10 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DAA8F1065678 for ; Thu, 23 Jul 2009 15:11:09 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C68AF8FC16 for ; Thu, 23 Jul 2009 15:11:09 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NFB9vQ035841 for ; Thu, 23 Jul 2009 15:11:09 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NFB9G9035839 for perforce@freebsd.org; Thu, 23 Jul 2009 15:11:09 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 15:11:09 GMT Message-Id: <200907231511.n6NFB9G9035839@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166453 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 15:11:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=166453 Change 166453 by andre@andre_flirtbox on 2009/07/23 15:10:30 Fix line ending issue coming from p4resolve. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#40 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#40 (text+ko) ==== @@ -1,651 +1,651 @@ -/*- - * Copyright (c) 2007-2009 - * Andre Oppermann, Internet Business Solutions AG. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)tcp_input.c 8.12 (Berkeley) 5/24/95 - * $FreeBSD: src/sys/netinet/tcp_reass.c,v 1.352 2007/05/13 22:16:13 andre Exp $ - */ - -#include -__FBSDID("$FreeBSD: src/sys/netinet/tcp_reass.c,v 1.363 2009/07/16 21:13:04 rwatson Exp $"); - -/* - * Operational overview of TCP reassembly: - * - * It is the purpose of tcp reassembly to store segments that are received - * out of order. This happens when packets are lost along the way due to - * various reasons. The most common one is traffic overload which causes - * routers to stop accepting packets for brief moments. - * - * Upon arrival of the missing segment(s) the whole chain of stored segments - * is moved into the socket buffer. In case of multiple missing segments - * the first consequtive part is moved with the remainder being kept in - * store until the next missing segment arrives. - * - * While in reassembly mode *all* arrving segments are put into the reassembly - * queue. - * - * Instead of storing all segments on their own we build blocks of consequtive - * segments chained together. We use a red-black tree to cope with arbitrary - * complexity. If a segment matches the end of one block and the start of the - * next block the two blocks are joined together. If no match is found a - * new block is created. - * - * The reassembly queues block structure is also used to track SACK - * information as a data receiver. A double-linked list is added - * that links the blocks the reverse order of their arrival or updating. - * This makes us fully compliant to RFC2018 Section 4 including all - * optional parts marked as "SHOULD". - * - * TODO: - * A further improvement is to merge the content of mbufs together if the - * preceeding one has enough space to hold the data of the new one. When - * trimming the head of an mbuf chain m_adj() empties the mbufs but leaves - * them in place. Only when trimming from the tail it actually frees them. - * Normally we don't get mbuf chains so this isn't too much of a concern - * right now. Use m_collapse() to compact the mbuf chains within the - * blocks. - */ - -#include "opt_inet.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -VNET_DEFINE(uma_zone_t, tcp_reass_zone); - -SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, - "TCP Segment Reassembly Queue"); - -static int tcp_reass_enable = 1; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_RW, - &tcp_reass_enable, 0, - "Enable/disable use of TCP reassembly queue"); - -static int tcp_reass_maxblocks = 32; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RW, - &tcp_reass_maxblocks, 0, - "Per connection limit of TCP segment blocks in reassembly queue"); - -static int tcp_reass_globalmaxblocks = 65535; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, - &tcp_reass_globalmaxblocks, 0, - "Global limit of TCP segment blocks in reassembly queue"); - -static int tcp_reass_timeout = 0; -SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, - &tcp_reass_timeout, 0, sysctl_msec_to_ticks, "I", - "Reassembly queue flush timeout in milliseconds"); - -static int tcp_reass_spacetime = 0; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, space_time, CTLFLAG_RW, - &tcp_reass_spacetime, 0, - "Reassembly queue strategy of space vs. time efficiency"); - -static struct tcp_reass_block * - tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); - -/* Trim empty mbufs from head of chain. */ -static struct mbuf * -m_trimhead(struct mbuf *m) -{ - - while (m != NULL && m->m_len == 0) - m = m_free(m); - - return (m); -} - -#if 0 -static u_int -m_storagesize(struct mbuf *m) -{ - u_int mcnt; - - for (mcnt = 0; m != NULL; m = m->m_next) - mcnt += (m->m_flags & M_EXT) ? - m->m_ext.ext_size + MSIZE : MSIZE; - return (mcnt); -} -#endif - -/* - * Initialize TCP reassembly zone on startup. - */ -void -tcp_reass_init(void) -{ - - TUNABLE_INT_FETCH("net.inet.tcp.reass.globalmaxblocks", - &tcp_reass_globalmaxblocks); - tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); - uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); - tcp_reass_timeout = 30 * hz; -} - -/* - * Compare function implementing the ranged lookup on the RB tree. - * NB: The tree must never have any overlapping elements. - */ -static __inline int -tcp_reass_cmp(struct tcp_reass_block *a, struct tcp_reass_block *b) -{ - if (SEQ_LT(a->trb_seqe, b->trb_seqs)) - return (-1); - else if (SEQ_GT(a->trb_seqs, b->trb_seqe)) - return (1); - else - return (0); -} - -RB_PROTOTYPE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); -RB_GENERATE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); - -#ifdef INVARIANTS -static int -tcp_reass_verify(struct tcpcb *tp, int prepost) -{ - int i = 0, size = 0, total = 0; - struct mbuf *m; - struct tcp_reass_block *trb, *trbn; - - RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { - KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), - ("%s: trb_seqs >= trb_seqe", __func__)); - KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt) || - prepost, ("%s: rcv_nxt >= trb_seqs", __func__)); - KASSERT(trb->trb_m != NULL, - ("%s: trb_m == NULL", __func__)); - KASSERT(trb->trb_mt != NULL, - ("%s: trb_mt == NULL", __func__)); - size = SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - KASSERT(size == m_length(trb->trb_m, &m), - ("%s: seq# size != actual mbuf size", __func__)); - KASSERT(trb->trb_mt == m, - ("%s: trb_mt is not last mbuf", __func__)); - KASSERT(trbn == NULL || SEQ_LT(trb->trb_seqe, trbn->trb_seqs), - ("%s: overlaps into next block", __func__)); - total += size; - i++; - } - //KASSERT(tp->rcv_reass_size == total, - // ("%s: total not correct", __func__)); - - LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { - i--; - } - KASSERT(i == 0, - ("%s: sack list incorrect", __func__)); - - return (1); -} -#endif - -static void -tcp_reass_free(struct tcpcb *tp, struct tcp_reass_block *trb) -{ - - trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); - KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); - LIST_REMOVE(trb, trb_sack); - if (trb->trb_m != NULL) - m_freem(trb->trb_m); - tp->rcv_reass_blocks--; - uma_zfree(tcp_reass_zone, trb); -} - -void -tcp_reass_flush(struct tcpcb *tp) -{ - struct tcp_reass_block *trb, *trbn; - - INP_WLOCK_ASSERT(tp->t_inpcb); - KASSERT(tcp_reass_verify(tp, 0), - ("%s: reassembly queue inconsistent", __func__)); - - RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { - tcp_reass_free(tp, trb); - } - //KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); -} - -static __inline void -tcp_reass_sacktrack(struct tcpcb *tp, struct tcp_reass_block *trb) -{ - - if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { - LIST_REMOVE(trb, trb_sack); - LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); - } -} - -/* - * Insert segments into the reassembly queue. - * - * NB: We must always consume the mbuf. Either by appeding it to - * the queue or by freeing it. - */ -int -tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) -{ - int thflags = 0; - tcp_seq th_seq; - struct socket *so = tp->t_inpcb->inp_socket; - struct tcp_reass_block *trb = NULL, *trbn; - struct tcp_reass_block trbs; - - INP_WLOCK_ASSERT(tp->t_inpcb); - - /* - * Call with th==NULL after becoming established to - * force pre-ESTABLISHED data up to user socket. - * XXX: Was used for T/TCP of which code remains. - */ - if (th == NULL) { - if (!TCPS_HAVEESTABLISHED(tp->t_state) || - RB_EMPTY(&tp->rcv_reass) || - ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && - trb->trb_seqs != tp->rcv_nxt)) - return (0); - trb = RB_MIN(tcp_ra, &tp->rcv_reass); - goto present; - } - - KASSERT(th != NULL, ("%s: th is NULL", __func__)); - KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); - KASSERT(m != NULL, ("%s: m is NULL", __func__)); - KASSERT(*tlenp == m_length(m, NULL), - ("%s: tlen != mbuf length", __func__)); - - /* - * Store TCP header information in local variables as - * we may lose access to it after mbuf compacting. - */ - thflags = th->th_flags; - th_seq = th->th_seq; - th = NULL; /* Prevent further use. */ - - /* Check if it is really neccessary to do all the work. */ - if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) - goto done; - - KASSERT(SEQ_GEQ(th_seq, tp->rcv_nxt), - ("%s: sequence number below rcv_nxt", __func__)); - KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), - ("%s: got missing segment but queue is empty", __func__)); - KASSERT(tcp_reass_verify(tp, 0), - ("%s: reassembly queue already inconsistent", __func__)); - - /* - * Limit the number of segments in the reassembly queue to prevent - * holding on to too many segments (and thus running out of mbufs). - * Make sure to let the missing segment through which caused this - * queue. - * - * Count the gross space used by the mbufs in the reassembly queue - * and limit it to the free space in the socket buffer. This way - * the reassembly queue can never consume more mbuf space than the - * socket buffer got allocated anyway and it reflects the actual - * amount of kernel memory used. This effectively prevents mbuf - * exhaustion due to pathological traffic (one byte segments with - * a hole each time) on a single connection. - * - * Counting the gross mbuf space effectively sets the net data - * limit lower than the socket buffer would allow. - * Don't underestimates the effective free space in the socket - * buffer vs. actual real data with 2k clusters and 1500 byte - * packets by introducing a correction factor of 11/8th. - */ - if (th_seq != tp->rcv_nxt && - tp->rcv_reass_blocks > tcp_reass_maxblocks) { - //(sbspace(&so->so_rcv) / 8 * 11) - TCPSTAT_INC(tcps_reass_overflow); - TCPSTAT_INC(tcps_rcvmemdrop); - goto done; - } - - /* - * FIN handling is a bit tricky. - * We cannot trust a FIN that goes into the reassembly queue. - * It can be easily spoofed as it may be anywhere in the receive - * window (see RST attack mitigation in tcp-secure). - * For this reason (and complexity avoidance) we generally ignore - * any FIN arriving at the reassembly queue with one exception; - * When it exactly matches rcv_nxt together with any data in the - * same segment we can conclude it to be genuine and proceed with - * flushing any other data waiting in the reassembly queue. - * A FIN is part of the sequence space and will get retransmitted - * if it was genuine. - * This approach is based on a discussion on TCPM mailing list. - */ - if ((thflags & TH_FIN) && tp->rcv_nxt == th_seq) { - tcp_reass_flush(tp); - if (m->m_len == 0) { - tcp_timer_activate(tp, TT_REASS, 0); - return (thflags); - } - } else if (*tlenp == 0) - goto done; - else - thflags &= ~TH_FIN; - - /* - * Get rid of packet header and mtags. - * Trim empty mbufs from head of chain. - * Compact mbuf chain. - */ - m_demote(m, 1); - m = m_trimhead(m); - if (tcp_reass_spacetime && m->m_next != NULL) - m = m_collapse(m, M_DONTWAIT, 1024); - - KASSERT(m != NULL, ("%s: m is NULL after collapse", __func__)); - - /* Set up search structure. */ - trbs.trb_seqs = th_seq; - trbs.trb_seqe = th_seq + *tlenp; - trbs.trb_m = m; - trbs.trb_mt = m_last(m); - - /* - * Return match that has at least partial overlap to either side or - * insert a new reassembly block. - */ - if ((trb = RB_FIND(tcp_ra, &tp->rcv_reass, &trbs)) != NULL) { - - /* Within an already received block. */ - if (SEQ_GEQ(trbs.trb_seqs, trb->trb_seqs) && - SEQ_LEQ(trbs.trb_seqe, trb->trb_seqe)) { - tcp_reass_sacktrack(tp, trb); - tp->rcv_reass_dsack.start = trbs.trb_seqs; - tp->rcv_reass_dsack.end = trbs.trb_seqe; - goto done; - } - - /* Merge in the new segment. */ - (void)tcp_reass_merge(trb, &trbs); - tcp_reass_sacktrack(tp, trb); - - /* Merge in previous block(s) if there is overlap. */ - while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } - - /* Merge in next block(s) if there is overlap. */ - while ((trbn = RB_NEXT(tcp_ra, &tp->rcv_reass, trb)) != NULL && - SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { - trbn = tcp_reass_merge(trb, trbn); - tcp_reass_free(tp, trbn); - } - - } else if (tp->rcv_nxt == th_seq) { - trb = &trbs; - } else if ((trb = (struct tcp_reass_block *)uma_zalloc(tcp_reass_zone, (M_NOWAIT|M_ZERO))) != NULL) { - trb->trb_seqs = trbs.trb_seqs; - trb->trb_seqe = trbs.trb_seqe; - trb->trb_m = trbs.trb_m; - trb->trb_mt = trbs.trb_mt; - trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, trb); - KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); - LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); - tp->rcv_reass_blocks++; - } else { - /* Memory allocation failure. */ - goto done; - } - KASSERT(tcp_reass_verify(tp, 1), - ("%s: reassembly queue went inconsistent", __func__)); - - if (trb->trb_seqs == tp->rcv_nxt) - goto present; - return (0); - -present: - /* - * Present data to user, advancing rcv_nxt through the - * completed sequence space. - */ - KASSERT(trb != NULL, - ("%s: queue empty at present", __func__)); - KASSERT(trb->trb_seqs == tp->rcv_nxt, - ("%s: first block does not match rcv_nxt", __func__)); - TCPSTAT_INC(tcps_reass_missingseg); - - SOCKBUF_LOCK(&so->so_rcv); - /* We can only ever dequeue one block. */ - if (!(so->so_rcv.sb_state & SBS_CANTRCVMORE)) { - sbappendstream_locked(&so->so_rcv, trb->trb_m); - tp->rcv_nxt += SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); - trb->trb_m = NULL; - trb->trb_mt = NULL; - } - if (trb == &trbs) { - if (trb->trb_m != NULL) - m_freem(trb->trb_m); - } else - tcp_reass_free(tp, trb); - - /* NB: sorwakeup_locked() does a implicit socket buffer unlock. */ - sorwakeup_locked(so); - - /* - * Restart the reassembly queue flush timer after advancing - * the sequence space and if queue is not empty. Otherwise - * deactivate it. - */ - if (tcp_reass_timeout && !RB_EMPTY(&tp->rcv_reass)) - tcp_timer_activate(tp, TT_REASS, tcp_reass_timeout); - else - tcp_timer_activate(tp, TT_REASS, 0); - - ND6_HINT(tp); - return (thflags); - -done: - m_freem(m); - *tlenp = 0; - return (0); -} - -/* - * Trim a block. - * Positive value is from head, negative from tail. - */ -static void -tcp_reass_trim(struct tcp_reass_block *trb, int i) -{ - - m_adj(trb->trb_m, i); - - if (i < 0) { - trb->trb_mt = m_last(trb->trb_m); - trb->trb_seqe -= i; - } else { - trb->trb_m = m_trimhead(trb->trb_m); - trb->trb_seqs += i; - } -} - -/* - * Merge one or more consecutive blocks together. - * NB: trbn is always merged into trb! - */ -static struct tcp_reass_block * -tcp_reass_merge(struct tcp_reass_block *trb, struct tcp_reass_block *trbn) -{ - int i; - - KASSERT(trb != NULL && trbn != NULL, - ("%s: incomplete input", __func__)); - - KASSERT(SEQ_LT(trbn->trb_seqs, trb->trb_seqs) || - SEQ_GT(trbn->trb_seqe, trb->trb_seqe), - ("%s: ", __func__)); - - /* Replace, prepend and append. */ - if (SEQ_LEQ(trbn->trb_seqs, trb->trb_seqs) && - SEQ_GEQ(trbn->trb_seqe, trb->trb_seqe)) { - - m_freem(trb->trb_m); - trb->trb_seqs = trbn->trb_seqs; - trb->trb_seqe = trbn->trb_seqe; - trb->trb_m = trbn->trb_m; - trb->trb_mt = trbn->trb_mt; - - } else if (SEQ_LT(trbn->trb_seqs, trb->trb_seqs)) { - - if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) - tcp_reass_trim(trbn, -i); - - trb->trb_seqs = trbn->trb_seqs; - trbn->trb_mt->m_next = trb->trb_m; - trb->trb_m = trbn->trb_m; - - if (tcp_reass_spacetime) { - trbn->trb_mt = m_collapse(trbn->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trbn->trb_mt); - } - - } else if (SEQ_GT(trbn->trb_seqe, trb->trb_seqe)) { - - if ((i = SEQ_DELTA(trb->trb_seqe, trbn->trb_seqs)) > 0) - tcp_reass_trim(trbn, i); - - trb->trb_seqe = trbn->trb_seqe; - trb->trb_mt->m_next = trbn->trb_m; - - if (tcp_reass_spacetime) { - trb->trb_mt = m_collapse(trb->trb_mt, M_DONTWAIT, 1024); - trb->trb_mt = m_last(trb->trb_mt); - } else - trb->trb_mt = trbn->trb_mt; - - } else - return (NULL); - - trbn->trb_seqs = 0; - trbn->trb_seqe = 0; - trbn->trb_m = NULL; - trbn->trb_mt = NULL; - return (trbn); -} - -/* - * Put the sequence number of the reassembly queue blocks into - * the SACK options of an outgoing segment. - * RFC2018: section ... - * RFC2883: section ... - */ -int -tcp_reass_sack(struct tcpcb *tp, u_char *optp, int numsacks) -{ - int nsacks = 0; - tcp_seq sack_seq; - struct tcp_reass_block *trb; - - INP_WLOCK_ASSERT(tp->t_inpcb); - KASSERT(numsacks > 0, - ("%s: zero sack blocks to add", __func__)); - KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), - ("%s: sack list empty", __func__)); - - /* DSACK */ - if (tp->rcv_reass_dsack.start == tp->rcv_reass_dsack.end) { - sack_seq = htonl(tp->rcv_reass_dsack.start); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - sack_seq = htonl(tp->rcv_reass_dsack.end); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - tp->rcv_reass_dsack.start = 0; - tp->rcv_reass_dsack.end = 0; - numsacks--; - nsacks++; - } - - /* - * The most recent block must appear first. Add the other - * blocks in most recent created or updated order. - * RFC2018: section 4 - */ - LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { - if (numsacks < 1) - break; - sack_seq = htonl(trb->trb_seqs); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - sack_seq = htonl(trb->trb_seqe); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - numsacks--; - nsacks++; - } - - return (nsacks); -} - -#ifdef DDB -static void -db_print_reassblocks(struct tcpcb *tp) -{ - struct tcp_reass_block *trb; - - RB_FOREACH(trb, tcp_ra, &tp->rcv_reass) { - db_printf(" reass block 0x%08x - 0x%08x\n", - trb->trb_seqs, trb->trb_seqe); - } -} -#endif +/*- + * Copyright (c) 2007-2009 + * Andre Oppermann, Internet Business Solutions AG. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)tcp_input.c 8.12 (Berkeley) 5/24/95 + * $FreeBSD: src/sys/netinet/tcp_reass.c,v 1.352 2007/05/13 22:16:13 andre Exp $ + */ + +#include +__FBSDID("$FreeBSD: src/sys/netinet/tcp_reass.c,v 1.363 2009/07/16 21:13:04 rwatson Exp $"); + +/* + * Operational overview of TCP reassembly: + * + * It is the purpose of tcp reassembly to store segments that are received + * out of order. This happens when packets are lost along the way due to + * various reasons. The most common one is traffic overload which causes + * routers to stop accepting packets for brief moments. + * + * Upon arrival of the missing segment(s) the whole chain of stored segments + * is moved into the socket buffer. In case of multiple missing segments + * the first consequtive part is moved with the remainder being kept in + * store until the next missing segment arrives. + * + * While in reassembly mode *all* arrving segments are put into the reassembly + * queue. + * + * Instead of storing all segments on their own we build blocks of consequtive + * segments chained together. We use a red-black tree to cope with arbitrary + * complexity. If a segment matches the end of one block and the start of the + * next block the two blocks are joined together. If no match is found a + * new block is created. + * + * The reassembly queues block structure is also used to track SACK + * information as a data receiver. A double-linked list is added + * that links the blocks the reverse order of their arrival or updating. + * This makes us fully compliant to RFC2018 Section 4 including all + * optional parts marked as "SHOULD". + * + * TODO: + * A further improvement is to merge the content of mbufs together if the + * preceeding one has enough space to hold the data of the new one. When + * trimming the head of an mbuf chain m_adj() empties the mbufs but leaves + * them in place. Only when trimming from the tail it actually frees them. + * Normally we don't get mbuf chains so this isn't too much of a concern + * right now. Use m_collapse() to compact the mbuf chains within the + * blocks. + */ + +#include "opt_inet.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +VNET_DEFINE(uma_zone_t, tcp_reass_zone); + +SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, + "TCP Segment Reassembly Queue"); + +static int tcp_reass_enable = 1; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, enable, CTLFLAG_RW, + &tcp_reass_enable, 0, + "Enable/disable use of TCP reassembly queue"); + +static int tcp_reass_maxblocks = 32; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, maxblocks, CTLFLAG_RW, + &tcp_reass_maxblocks, 0, + "Per connection limit of TCP segment blocks in reassembly queue"); + +static int tcp_reass_globalmaxblocks = 65535; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, + &tcp_reass_globalmaxblocks, 0, + "Global limit of TCP segment blocks in reassembly queue"); + +static int tcp_reass_timeout = 0; +SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, timeout, CTLTYPE_INT|CTLFLAG_RW, + &tcp_reass_timeout, 0, sysctl_msec_to_ticks, "I", + "Reassembly queue flush timeout in milliseconds"); + +static int tcp_reass_spacetime = 0; +SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, space_time, CTLFLAG_RW, + &tcp_reass_spacetime, 0, + "Reassembly queue strategy of space vs. time efficiency"); + +static struct tcp_reass_block * + tcp_reass_merge(struct tcp_reass_block *, struct tcp_reass_block *); + +/* Trim empty mbufs from head of chain. */ +static struct mbuf * +m_trimhead(struct mbuf *m) +{ + + while (m != NULL && m->m_len == 0) + m = m_free(m); + + return (m); +} + +#if 0 +static u_int +m_storagesize(struct mbuf *m) +{ + u_int mcnt; + + for (mcnt = 0; m != NULL; m = m->m_next) + mcnt += (m->m_flags & M_EXT) ? + m->m_ext.ext_size + MSIZE : MSIZE; + return (mcnt); +} +#endif + +/* + * Initialize TCP reassembly zone on startup. + */ +void +tcp_reass_init(void) +{ + + TUNABLE_INT_FETCH("net.inet.tcp.reass.globalmaxblocks", + &tcp_reass_globalmaxblocks); + tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); + tcp_reass_timeout = 30 * hz; +} + +/* + * Compare function implementing the ranged lookup on the RB tree. + * NB: The tree must never have any overlapping elements. + */ +static __inline int +tcp_reass_cmp(struct tcp_reass_block *a, struct tcp_reass_block *b) +{ + if (SEQ_LT(a->trb_seqe, b->trb_seqs)) + return (-1); + else if (SEQ_GT(a->trb_seqs, b->trb_seqe)) + return (1); + else + return (0); +} + +RB_PROTOTYPE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); +RB_GENERATE_STATIC(tcp_ra, tcp_reass_block, trb_rb, tcp_reass_cmp); + +#ifdef INVARIANTS +static int +tcp_reass_verify(struct tcpcb *tp, int prepost) +{ + int i = 0, size = 0, total = 0; + struct mbuf *m; + struct tcp_reass_block *trb, *trbn; + + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { + KASSERT(SEQ_LT(trb->trb_seqs, trb->trb_seqe), + ("%s: trb_seqs >= trb_seqe", __func__)); + KASSERT(SEQ_GT(trb->trb_seqs, tp->rcv_nxt) || + prepost, ("%s: rcv_nxt >= trb_seqs", __func__)); + KASSERT(trb->trb_m != NULL, + ("%s: trb_m == NULL", __func__)); + KASSERT(trb->trb_mt != NULL, + ("%s: trb_mt == NULL", __func__)); + size = SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); + KASSERT(size == m_length(trb->trb_m, &m), + ("%s: seq# size != actual mbuf size", __func__)); + KASSERT(trb->trb_mt == m, + ("%s: trb_mt is not last mbuf", __func__)); + KASSERT(trbn == NULL || SEQ_LT(trb->trb_seqe, trbn->trb_seqs), + ("%s: overlaps into next block", __func__)); + total += size; + i++; + } + //KASSERT(tp->rcv_reass_size == total, + // ("%s: total not correct", __func__)); + + LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { + i--; + } + KASSERT(i == 0, + ("%s: sack list incorrect", __func__)); + + return (1); +} +#endif + +static void +tcp_reass_free(struct tcpcb *tp, struct tcp_reass_block *trb) +{ + + trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); + KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); + LIST_REMOVE(trb, trb_sack); + if (trb->trb_m != NULL) + m_freem(trb->trb_m); + tp->rcv_reass_blocks--; + uma_zfree(tcp_reass_zone, trb); +} + +void +tcp_reass_flush(struct tcpcb *tp) +{ + struct tcp_reass_block *trb, *trbn; + + INP_WLOCK_ASSERT(tp->t_inpcb); + KASSERT(tcp_reass_verify(tp, 0), + ("%s: reassembly queue inconsistent", __func__)); + + RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { + tcp_reass_free(tp, trb); + } + //KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); +} + +static __inline void +tcp_reass_sacktrack(struct tcpcb *tp, struct tcp_reass_block *trb) +{ + + if (LIST_FIRST(&tp->rcv_reass_sack) != trb) { + LIST_REMOVE(trb, trb_sack); + LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); + } +} + +/* + * Insert segments into the reassembly queue. + * + * NB: We must always consume the mbuf. Either by appeding it to + * the queue or by freeing it. + */ +int +tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) +{ + int thflags = 0; + tcp_seq th_seq; + struct socket *so = tp->t_inpcb->inp_socket; + struct tcp_reass_block *trb = NULL, *trbn; + struct tcp_reass_block trbs; + + INP_WLOCK_ASSERT(tp->t_inpcb); + + /* + * Call with th==NULL after becoming established to + * force pre-ESTABLISHED data up to user socket. + * XXX: Was used for T/TCP of which code remains. + */ + if (th == NULL) { + if (!TCPS_HAVEESTABLISHED(tp->t_state) || + RB_EMPTY(&tp->rcv_reass) || + ((trb = RB_MIN(tcp_ra, &tp->rcv_reass)) && + trb->trb_seqs != tp->rcv_nxt)) + return (0); + trb = RB_MIN(tcp_ra, &tp->rcv_reass); + goto present; + } + + KASSERT(th != NULL, ("%s: th is NULL", __func__)); + KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); + KASSERT(m != NULL, ("%s: m is NULL", __func__)); + KASSERT(*tlenp == m_length(m, NULL), + ("%s: tlen != mbuf length", __func__)); + + /* + * Store TCP header information in local variables as + * we may lose access to it after mbuf compacting. + */ + thflags = th->th_flags; + th_seq = th->th_seq; + th = NULL; /* Prevent further use. */ + + /* Check if it is really neccessary to do all the work. */ + if (!tcp_reass_enable && RB_EMPTY(&tp->rcv_reass)) + goto done; + + KASSERT(SEQ_GEQ(th_seq, tp->rcv_nxt), + ("%s: sequence number below rcv_nxt", __func__)); + KASSERT(!(tp->rcv_nxt == th_seq) || !(RB_EMPTY(&tp->rcv_reass)), + ("%s: got missing segment but queue is empty", __func__)); + KASSERT(tcp_reass_verify(tp, 0), + ("%s: reassembly queue already inconsistent", __func__)); + + /* + * Limit the number of segments in the reassembly queue to prevent + * holding on to too many segments (and thus running out of mbufs). + * Make sure to let the missing segment through which caused this + * queue. + * + * Count the gross space used by the mbufs in the reassembly queue >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jul 23 15:16:15 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8EE251065670; Thu, 23 Jul 2009 15:16:15 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4EB4D106564A for ; Thu, 23 Jul 2009 15:16:15 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3CAF58FC1E for ; Thu, 23 Jul 2009 15:16:15 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NFGF3N036181 for ; Thu, 23 Jul 2009 15:16:15 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NFGFEX036179 for perforce@freebsd.org; Thu, 23 Jul 2009 15:16:15 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 15:16:15 GMT Message-Id: <200907231516.n6NFGFEX036179@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166454 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 15:16:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=166454 Change 166454 by andre@andre_t61 on 2009/07/23 15:15:37 Move the delayed header drop into the socket append block. It is no longer necessary for tcp_reass. Update comment on tcp_reass invocation. Replace thflags with what tcp_reass returns. Or'ing was incorrect. With INVARIANTS zero out th, m and tlen after socket append or tcp_reass. They're no longer valid. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_input.c#14 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_input.c#14 (text+ko) ==== @@ -2556,7 +2556,6 @@ */ if ((tlen || (thflags & TH_FIN)) && TCPS_HAVERCVDFIN(tp->t_state) == 0) { - m_adj(m, drop_hdrlen); /* delayed header drop */ /* * Insert segment which includes th into TCP reassembly queue * with control block tp. Set thflags to whether reassembly now @@ -2572,6 +2571,7 @@ if (th->th_seq == tp->rcv_nxt && RB_EMPTY(&tp->rcv_reass) && TCPS_HAVEESTABLISHED(tp->t_state)) { + m_adj(m, drop_hdrlen); /* delayed header drop */ if (DELAY_ACK(tp)) tp->t_flags |= TF_DELACK; else @@ -2590,14 +2590,16 @@ sorwakeup_locked(so); } else { /* - * XXX: Due to the header drop above "th" is - * theoretically invalid by now. Fortunately - * m_adj() doesn't actually frees any mbufs - * when trimming from the head. + * NB: tcp_reass() always consumes the mbuf chain. */ - thflags |= tcp_reass(tp, th, &tlen, m); + thflags = tcp_reass(tp, th, &tlen, m); tp->t_flags |= TF_ACKNOW; } +#ifdef INVARIANTS + th = NULL; + m = NULL; + tlen = 0; +#endif /* INVARIANTS */ #if 0 /* * Note the amount of data that peer has sent into From owner-p4-projects@FreeBSD.ORG Thu Jul 23 15:18:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6AB501065673; Thu, 23 Jul 2009 15:18:18 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F966106566B for ; Thu, 23 Jul 2009 15:18:18 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id EFBB08FC23 for ; Thu, 23 Jul 2009 15:18:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NFIH3s036300 for ; Thu, 23 Jul 2009 15:18:17 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NFIHX3036298 for perforce@freebsd.org; Thu, 23 Jul 2009 15:18:17 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 15:18:17 GMT Message-Id: <200907231518.n6NFIHX3036298@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166455 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 15:18:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=166455 Change 166455 by andre@andre_flirtbox on 2009/07/23 15:18:04 IFC. Affected files ... .. //depot/projects/tcp_reass/amd64/amd64/initcpu.c#4 integrate .. //depot/projects/tcp_reass/amd64/amd64/pmap.c#10 integrate .. //depot/projects/tcp_reass/amd64/include/cpufunc.h#5 integrate .. //depot/projects/tcp_reass/amd64/include/md_var.h#4 integrate .. //depot/projects/tcp_reass/arm/arm/busdma_machdep.c#5 integrate .. //depot/projects/tcp_reass/arm/arm/cpufunc.c#4 integrate .. //depot/projects/tcp_reass/arm/arm/pmap.c#8 integrate .. //depot/projects/tcp_reass/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 integrate .. //depot/projects/tcp_reass/conf/files#10 integrate .. //depot/projects/tcp_reass/dev/ath/ath_hal/ar5212/ar5212_recv.c#4 integrate .. //depot/projects/tcp_reass/dev/ath/if_ath.c#9 integrate .. //depot/projects/tcp_reass/dev/ath/if_athvar.h#8 integrate .. //depot/projects/tcp_reass/dev/ciss/ciss.c#7 integrate .. //depot/projects/tcp_reass/dev/if_ndis/if_ndis.c#8 integrate .. //depot/projects/tcp_reass/dev/mxge/if_mxge.c#9 integrate .. //depot/projects/tcp_reass/dev/pci/pci.c#7 integrate .. //depot/projects/tcp_reass/dev/siis/siis.c#1 branch .. //depot/projects/tcp_reass/dev/siis/siis.h#1 branch .. //depot/projects/tcp_reass/dev/uart/uart_cpu_powerpc.c#5 integrate .. //depot/projects/tcp_reass/fs/nfs/nfsport.h#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clbio.c#4 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clrpcops.c#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clstate.c#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clvfsops.c#4 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clvnops.c#6 integrate .. //depot/projects/tcp_reass/i386/i386/pmap.c#9 integrate .. //depot/projects/tcp_reass/i386/xen/pmap.c#5 integrate .. //depot/projects/tcp_reass/kern/kern_linker.c#11 integrate .. //depot/projects/tcp_reass/kern/kern_sysctl.c#7 integrate .. //depot/projects/tcp_reass/kern/kern_vimage.c#8 integrate .. //depot/projects/tcp_reass/kern/link_elf_obj.c#9 integrate .. //depot/projects/tcp_reass/kern/uipc_socket.c#9 integrate .. //depot/projects/tcp_reass/kern/vfs_bio.c#8 integrate .. //depot/projects/tcp_reass/modules/Makefile#9 integrate .. //depot/projects/tcp_reass/modules/siis/Makefile#1 branch .. //depot/projects/tcp_reass/modules/wlan/Makefile#7 integrate .. //depot/projects/tcp_reass/net/flowtable.c#7 integrate .. //depot/projects/tcp_reass/net/if.c#11 integrate .. //depot/projects/tcp_reass/net/vnet.h#7 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_crypto.c#6 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_crypto.h#6 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_input.c#9 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_ioctl.h#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_output.c#7 integrate .. //depot/projects/tcp_reass/netinet/igmp.c#9 integrate .. //depot/projects/tcp_reass/netinet/ip_input.c#10 integrate .. //depot/projects/tcp_reass/netinet/tcp_subr.c#14 integrate .. //depot/projects/tcp_reass/netinet6/in6_proto.c#7 integrate .. //depot/projects/tcp_reass/netinet6/ip6_input.c#8 integrate .. //depot/projects/tcp_reass/netinet6/mld6.c#9 integrate .. //depot/projects/tcp_reass/netipsec/ipsec.c#7 integrate .. //depot/projects/tcp_reass/netipsec/xform_ipcomp.c#5 integrate .. //depot/projects/tcp_reass/netipsec/xform_ipip.c#6 integrate .. //depot/projects/tcp_reass/powerpc/mpc85xx/lbc.h#3 integrate .. //depot/projects/tcp_reass/sparc64/include/param.h#6 integrate .. //depot/projects/tcp_reass/sys/param.h#10 integrate .. //depot/projects/tcp_reass/sys/vimage.h#8 integrate .. //depot/projects/tcp_reass/vm/device_pager.c#6 integrate .. //depot/projects/tcp_reass/xen/evtchn/evtchn.c#4 integrate Differences ... ==== //depot/projects/tcp_reass/amd64/amd64/initcpu.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.53 2009/01/12 19:17:35 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.54 2009/07/22 14:32:38 kib Exp $"); #include "opt_cpu.h" @@ -65,6 +65,7 @@ u_int cpu_vendor_id; /* CPU vendor ID */ u_int cpu_fxsr; /* SSE enabled */ u_int cpu_mxcsr_mask; /* Valid bits in mxcsr */ +u_int cpu_clflush_line_size = 32; SYSCTL_UINT(_hw, OID_AUTO, via_feature_rng, CTLFLAG_RD, &via_feature_rng, 0, "VIA C3/C7 RNG feature available in CPU"); @@ -156,4 +157,12 @@ AMD64_CPU_FAMILY(cpu_id) == 0x6 && AMD64_CPU_MODEL(cpu_id) >= 0xf) init_via(); + + /* + * CPUID with %eax = 1, %ebx returns + * Bits 15-8: CLFLUSH line size + * (Value * 8 = cache line size in bytes) + */ + if ((cpu_feature & CPUID_CLFSH) != 0) + cpu_clflush_line_size = ((cpu_procinfo >> 8) & 0xff) * 8; } ==== //depot/projects/tcp_reass/amd64/amd64/pmap.c#10 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.664 2009/07/18 01:50:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.666 2009/07/22 14:32:38 kib Exp $"); /* * Manages physical address maps. @@ -231,6 +231,7 @@ vm_page_t m, vm_prot_t prot, vm_page_t mpte); static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte); static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); +static void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); @@ -921,6 +922,40 @@ } #endif /* !SMP */ +static void +pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva) +{ + + KASSERT((sva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: sva not page-aligned")); + KASSERT((eva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: eva not page-aligned")); + + if (cpu_feature & CPUID_SS) + ; /* If "Self Snoop" is supported, do nothing. */ + else if (cpu_feature & CPUID_CLFSH) { + + /* + * Otherwise, do per-cache line flush. Use the mfence + * instruction to insure that previous stores are + * included in the write-back. The processor + * propagates flush to other processors in the cache + * coherence domain. + */ + mfence(); + for (; eva < sva; eva += cpu_clflush_line_size) + clflush(eva); + mfence(); + } else { + + /* + * No targeted cache flush methods are supported by CPU, + * globally invalidate cache as a last resort. + */ + pmap_invalidate_cache(); + } +} + /* * Are we current address space or kernel? */ @@ -4256,7 +4291,8 @@ void * pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, int mode) { - vm_offset_t va, tmpva, offset; + vm_offset_t va, offset; + vm_size_t tmpsize; /* * If the specified range of physical addresses fits within the direct @@ -4273,16 +4309,10 @@ if (!va) panic("pmap_mapdev: Couldn't alloc kernel virtual memory"); pa = trunc_page(pa); - for (tmpva = va; size > 0; ) { - pmap_kenter_attr(tmpva, pa, mode); - size -= PAGE_SIZE; - tmpva += PAGE_SIZE; - pa += PAGE_SIZE; - } - pmap_invalidate_range(kernel_pmap, va, tmpva); - /* If "Self Snoop" is supported, do nothing. */ - if (!(cpu_feature & CPUID_SS)) - pmap_invalidate_cache(); + for (tmpsize = 0; tmpsize < size; tmpsize += PAGE_SIZE) + pmap_kenter_attr(va + tmpsize, pa + tmpsize, mode); + pmap_invalidate_range(kernel_pmap, va, va + tmpsize); + pmap_invalidate_cache_range(va, va + tmpsize); return ((void *)(va + offset)); } @@ -4381,9 +4411,12 @@ m->md.pat_mode = ma; /* - * Update the direct mapping and flush the cache. + * If "m" is a normal page, update its direct mapping. This update + * can be relied upon to perform any cache operations that are + * required for data coherence. */ - if (pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, + if ((m->flags & PG_FICTITIOUS) == 0 && + pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, m->md.pat_mode)) panic("memory attribute change on the direct map failed"); } @@ -4621,9 +4654,7 @@ */ if (changed) { pmap_invalidate_range(kernel_pmap, base, tmpva); - /* If "Self Snoop" is supported, do nothing. */ - if (!(cpu_feature & CPUID_SS)) - pmap_invalidate_cache(); + pmap_invalidate_cache_range(base, tmpva); } return (error); } ==== //depot/projects/tcp_reass/amd64/include/cpufunc.h#5 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.153 2009/04/11 14:01:01 ed Exp $ + * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.154 2009/07/22 14:32:38 kib Exp $ */ /* @@ -100,6 +100,13 @@ } static __inline void +clflush(u_long addr) +{ + + __asm __volatile("clflush %0" : : "m" (*(char *)addr)); +} + +static __inline void disable_intr(void) { __asm __volatile("cli" : : : "memory"); @@ -267,6 +274,13 @@ } static __inline void +mfence(void) +{ + + __asm__ __volatile("mfence" : : : "memory"); +} + +static __inline void ia32_pause(void) { __asm __volatile("pause"); ==== //depot/projects/tcp_reass/amd64/include/md_var.h#4 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.85 2009/04/01 13:09:26 kib Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.86 2009/07/22 14:32:38 kib Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -47,6 +47,7 @@ extern u_int amd_pminfo; extern u_int via_feature_rng; extern u_int via_feature_xcrypt; +extern u_int cpu_clflush_line_size; extern u_int cpu_fxsr; extern u_int cpu_high; extern u_int cpu_id; ==== //depot/projects/tcp_reass/arm/arm/busdma_machdep.c#5 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.47 2009/04/23 20:24:19 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.48 2009/07/20 07:53:07 raj Exp $"); /* * ARM bus dma support routines @@ -630,10 +630,6 @@ ((vm_offset_t)*vaddr & PAGE_MASK)); newmap->origbuffer = *vaddr; newmap->allocbuffer = tmpaddr; - cpu_idcache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); - cpu_l2cache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); *vaddr = tmpaddr; } else newmap->origbuffer = newmap->allocbuffer = NULL; ==== //depot/projects/tcp_reass/arm/arm/cpufunc.c#4 (text+ko) ==== @@ -45,7 +45,7 @@ * Created : 30/01/97 */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.26 2009/05/05 12:57:16 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.27 2009/07/21 08:29:19 raj Exp $"); #include #include @@ -265,7 +265,7 @@ arm9_dcache_wbinv_all, /* dcache_wbinv_all */ arm9_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ arm9_dcache_wbinv_range, /* dcache_inv_range */ + arm9_dcache_inv_range, /* dcache_inv_range */ arm9_dcache_wb_range, /* dcache_wb_range */ arm9_idcache_wbinv_all, /* idcache_wbinv_all */ @@ -327,7 +327,7 @@ armv5_ec_dcache_wbinv_all, /* dcache_wbinv_all */ armv5_ec_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ armv5_ec_dcache_wbinv_range, /* dcache_inv_range */ + armv5_ec_dcache_inv_range, /* dcache_inv_range */ armv5_ec_dcache_wb_range, /* dcache_wb_range */ armv5_ec_idcache_wbinv_all, /* idcache_wbinv_all */ ==== //depot/projects/tcp_reass/arm/arm/pmap.c#8 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.111 2009/06/24 21:03:59 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.112 2009/07/20 07:53:07 raj Exp $"); #include #include #include @@ -2984,6 +2984,7 @@ pmap_free_pv_entry(pve); PMAP_UNLOCK(pmap_kernel()); vm_page_unlock_queues(); + va = va & ~PAGE_MASK; cpu_dcache_wbinv_range(va, PAGE_SIZE); cpu_l2cache_wbinv_range(va, PAGE_SIZE); cpu_tlb_flushD_SE(va); ==== //depot/projects/tcp_reass/arm/arm/vm_machdep.c#6 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.39 2009/06/24 21:00:13 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.40 2009/07/20 07:53:07 raj Exp $"); #include #include @@ -426,10 +426,15 @@ vm_offset_t tomap = arm_nocache_startaddr + i * PAGE_SIZE; void *ret = (void *)tomap; vm_paddr_t physaddr = vtophys((vm_offset_t)addr); + vm_offset_t vaddr = (vm_offset_t) addr; + vaddr = vaddr & ~PAGE_MASK; for (; tomap < (vm_offset_t)ret + size; tomap += PAGE_SIZE, - physaddr += PAGE_SIZE, i++) { + vaddr += PAGE_SIZE, physaddr += PAGE_SIZE, i++) { + cpu_idcache_wbinv_range(vaddr, PAGE_SIZE); + cpu_l2cache_wbinv_range(vaddr, PAGE_SIZE); pmap_kenter_nocache(tomap, physaddr); + cpu_tlb_flushID_SE(vaddr); arm_nocache_allocated[i / BITS_PER_INT] |= 1 << (i % BITS_PER_INT); } ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 (text+ko) ==== @@ -2360,6 +2360,15 @@ is_attr = ((zp->z_phys->zp_flags & ZFS_XATTR) && (ZTOV(zp)->v_type == VDIR)); +#ifdef __FreeBSD__ + /* + * In FreeBSD, we don't care about permissions of individual ADS. + * Note that not checking them is not just an optimization - without + * this shortcut, EA operations may bogusly fail with EACCES. + */ + if (zp->z_phys->zp_flags & ZFS_XATTR) + return (0); +#else /* * If attribute then validate against base file */ @@ -2385,6 +2394,7 @@ mode |= ACE_READ_NAMED_ATTRS; } } +#endif if ((error = zfs_zaccess_common(check_zp, mode, &working_mode, &check_privs, skipaclchk, cr)) == 0) { ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 (text+ko) ==== @@ -831,8 +831,14 @@ *xvpp = NULL; + /* + * In FreeBSD, access checking for creating an EA is being done + * in zfs_setextattr(), + */ +#ifndef __FreeBSD__ if (error = zfs_zaccess(zp, ACE_WRITE_NAMED_ATTRS, 0, B_FALSE, cr)) return (error); +#endif tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_bonus(tx, zp->z_id); @@ -906,12 +912,14 @@ ASSERT(zp->z_phys->zp_xattr == 0); -#ifdef TODO if (!(flags & CREATE_XATTR_DIR)) { zfs_dirent_unlock(dl); +#ifdef __FreeBSD__ + return (ENOATTR); +#else return (ENOENT); +#endif } -#endif if (zfsvfs->z_vfs->vfs_flag & VFS_RDONLY) { zfs_dirent_unlock(dl); ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 (text+ko) ==== @@ -4502,6 +4502,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4523,6 +4528,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4564,6 +4571,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4584,6 +4596,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4623,6 +4637,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4631,7 +4650,7 @@ ZFS_ENTER(zfsvfs); error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, - LOOKUP_XATTR); + LOOKUP_XATTR | CREATE_XATTR_DIR); if (error != 0) { ZFS_EXIT(zfsvfs); return (error); @@ -4690,6 +4709,11 @@ vnode_t *xvp = NULL, *vp; int done, error, eof, pos; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, "", attrprefix, sizeof(attrprefix)); if (error != 0) @@ -4698,9 +4722,18 @@ ZFS_ENTER(zfsvfs); + if (sizep != NULL) + *sizep = 0; + error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, LOOKUP_XATTR); if (error != 0) { + /* + * ENOATTR means that the EA directory does not yet exist, + * i.e. there are no extended attributes there. + */ + if (error == ENOATTR) + error = 0; ZFS_EXIT(zfsvfs); return (error); } @@ -4722,9 +4755,6 @@ auio.uio_rw = UIO_READ; auio.uio_offset = 0; - if (sizep != NULL) - *sizep = 0; - do { u_char nlen; ==== //depot/projects/tcp_reass/conf/files#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1453 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1455 2009/07/21 12:32:46 mav Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1391,6 +1391,7 @@ dev/si/si_eisa.c optional si eisa dev/si/si_isa.c optional si isa dev/si/si_pci.c optional si pci +dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci inet dev/smbus/smb.c optional smb @@ -1627,6 +1628,7 @@ dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_ural.c optional ural +dev/usb/wlan/if_urtw.c optional urtw dev/usb/wlan/if_zyd.c optional zyd # # USB serial and parallel port drivers ==== //depot/projects/tcp_reass/dev/ath/ath_hal/ar5212/ar5212_recv.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.2 2009/06/27 20:06:56 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.3 2009/07/21 19:23:34 sam Exp $ */ #include "opt_ah.h" @@ -164,7 +164,7 @@ if (phybits & (AR_PHY_ERR_OFDM_TIMING|AR_PHY_ERR_CCK_TIMING)) bits |= HAL_RX_FILTER_PHYERR; if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport && - (OS_REG_READ(ah, AR_MISC_MODE) & AR_MISC_MODE_BSSID_MATCH_FORCE)) + (AH5212(ah)->ah_miscMode & AR_MISC_MODE_BSSID_MATCH_FORCE)) bits |= HAL_RX_FILTER_BSSID; return bits; } @@ -175,6 +175,7 @@ void ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits) { + struct ath_hal_5212 *ahp = AH5212(ah); uint32_t phybits; OS_REG_WRITE(ah, AR_RX_FILTER, @@ -194,12 +195,11 @@ OS_REG_READ(ah, AR_RXCFG) &~ AR_RXCFG_ZLFDMA); } if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport) { - uint32_t miscbits = OS_REG_READ(ah, AR_MISC_MODE); if (bits & HAL_RX_FILTER_BSSID) - miscbits |= AR_MISC_MODE_BSSID_MATCH_FORCE; + ahp->ah_miscMode |= AR_MISC_MODE_BSSID_MATCH_FORCE; else - miscbits &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; - OS_REG_WRITE(ah, AR_MISC_MODE, miscbits); + ahp->ah_miscMode &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; + OS_REG_WRITE(ah, AR_MISC_MODE, ahp->ah_miscMode); } } ==== //depot/projects/tcp_reass/dev/ath/if_ath.c#9 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.261 2009/07/11 16:02:06 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.262 2009/07/21 19:01:04 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -1023,6 +1023,8 @@ sc->sc_nvaps++; if (opmode == IEEE80211_M_STA) sc->sc_nstavaps++; + if (opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps++; } switch (ic_opmode) { case IEEE80211_M_IBSS: @@ -1137,6 +1139,8 @@ vap->iv_opmode == IEEE80211_M_MBSS) { reclaim_address(sc, vap->iv_myaddr); ath_hal_setbssidmask(ah, sc->sc_hwbssidmask); + if (vap->iv_opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps--; } if (vap->iv_opmode != IEEE80211_M_WDS) sc->sc_nvaps--; @@ -2381,7 +2385,7 @@ if (ic->ic_opmode == IEEE80211_M_HOSTAP && IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) rfilt |= HAL_RX_FILTER_BEACON; - if (ic->ic_opmode == IEEE80211_M_MBSS) { + if (sc->sc_nmeshvaps) { rfilt |= HAL_RX_FILTER_BEACON; if (sc->sc_hasbmatch) rfilt |= HAL_RX_FILTER_BSSID; ==== //depot/projects/tcp_reass/dev/ath/if_athvar.h#8 (text+ko) ==== @@ -26,7 +26,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.89 2009/07/11 15:02:45 rpaulo Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.90 2009/07/21 19:01:04 sam Exp $ */ /* @@ -203,6 +203,7 @@ int sc_debug; int sc_nvaps; /* # vaps */ int sc_nstavaps; /* # station vaps */ + int sc_nmeshvaps; /* # mbss vaps */ u_int8_t sc_hwbssidmask[IEEE80211_ADDR_LEN]; u_int8_t sc_nbssid0; /* # vap's using base mac */ uint32_t sc_bssidmask; /* bssid mask */ ==== //depot/projects/tcp_reass/dev/ciss/ciss.c#7 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.96 2009/07/10 08:18:08 scottl Exp $ + * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.97 2009/07/20 03:59:00 scottl Exp $ */ /* @@ -2687,7 +2687,7 @@ if (cr->cr_flags & CISS_REQ_DATAOUT) bus_dmamap_sync(sc->ciss_buffer_dmat, cr->cr_datamap, BUS_DMASYNC_PREWRITE); - if (nseg == 1) + if (nseg == 0) cr->cr_sg_tag = CISS_SG_NONE; else if (nseg == 1) cr->cr_sg_tag = CISS_SG_1; ==== //depot/projects/tcp_reass/dev/if_ndis/if_ndis.c#8 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.165 2009/06/26 11:45:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.166 2009/07/20 23:21:19 cokane Exp $"); #include #include @@ -2292,6 +2292,8 @@ ifp = sc->ifp; ic = ifp->if_l2com; vap = TAILQ_FIRST(&ic->ic_vaps); + if (vap == NULL) + return; if (!NDIS_INITIALIZED(sc)) { DPRINTF(("%s: NDIS not initialized\n", __func__)); ==== //depot/projects/tcp_reass/dev/mxge/if_mxge.c#9 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include -__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.63 2009/06/26 11:45:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.64 2009/07/22 11:57:34 gallatin Exp $"); #include #include @@ -4014,6 +4014,7 @@ TUNABLE_INT_FETCH("hw.mxge.lro_cnt", &sc->lro_cnt); TUNABLE_INT_FETCH("hw.mxge.always_promisc", &mxge_always_promisc); TUNABLE_INT_FETCH("hw.mxge.rss_hash_type", &mxge_rss_hash_type); + TUNABLE_INT_FETCH("hw.mxge.rss_hashtype", &mxge_rss_hash_type); TUNABLE_INT_FETCH("hw.mxge.initial_mtu", &mxge_initial_mtu); if (sc->lro_cnt != 0) mxge_lro_cnt = sc->lro_cnt; ==== //depot/projects/tcp_reass/dev/pci/pci.c#7 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.385 2009/06/22 20:08:06 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.386 2009/07/21 19:06:39 marius Exp $"); #include "opt_bus.h" @@ -2352,7 +2352,7 @@ { pci_addr_t base, map, testval; pci_addr_t start, end, count; - int barlen, maprange, mapsize, type; + int barlen, basezero, maprange, mapsize, type; uint16_t cmd; struct resource *res; @@ -2365,6 +2365,11 @@ type = SYS_RES_IOPORT; mapsize = pci_mapsize(testval); base = pci_mapbase(map); +#ifdef __PCI_BAR_ZERO_VALID + basezero = 0; +#else + basezero = base == 0; +#endif maprange = pci_maprange(map); barlen = maprange == 64 ? 2 : 1; @@ -2393,17 +2398,17 @@ } /* - * If base is 0, then we have problems. It is best to ignore - * such entries for the moment. These will be allocated later if - * the driver specifically requests them. However, some - * removable busses look better when all resources are allocated, - * so allow '0' to be overriden. + * If base is 0, then we have problems if this architecture does + * not allow that. It is best to ignore such entries for the + * moment. These will be allocated later if the driver specifically + * requests them. However, some removable busses look better when + * all resources are allocated, so allow '0' to be overriden. * * Similarly treat maps whose values is the same as the test value * read back. These maps have had all f's written to them by the * BIOS in an attempt to disable the resources. */ - if (!force && (base == 0 || map == testval)) + if (!force && (basezero || map == testval)) return (barlen); if ((u_long)base != base) { device_printf(bus, @@ -2440,7 +2445,7 @@ } count = 1 << mapsize; - if (base == 0 || base == pci_mapbase(testval)) { + if (basezero || base == pci_mapbase(testval)) { start = 0; /* Let the parent decide. */ end = ~0ULL; } else { @@ -3683,6 +3688,7 @@ return; } +#ifndef __PCI_BAR_ZERO_VALID /* * If this is a BAR, clear the BAR so it stops * decoding before releasing the resource. @@ -3693,6 +3699,7 @@ pci_write_bar(child, rid, 0); break; } +#endif bus_release_resource(dev, type, rid, rle->res); } resource_list_delete(rl, type, rid); ==== //depot/projects/tcp_reass/dev/uart/uart_cpu_powerpc.c#5 (text) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_powerpc.c,v 1.7 2009/04/08 22:19:39 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_powerpc.c,v 1.8 2009/07/23 12:51:27 nwhitehorn Exp $"); #include "opt_platform.h" @@ -78,6 +78,27 @@ return (uart_getenv(devtype, di, class)); } #else +static int +ofw_get_uart_console(phandle_t opts, phandle_t *result, const char *inputdev, + const char *outputdev) +{ + char buf[64]; + phandle_t input; + + if (OF_getprop(opts, inputdev, buf, sizeof(buf)) == -1) + return (ENXIO); + input = OF_finddevice(buf); + if (input == -1) + return (ENXIO); + if (OF_getprop(opts, outputdev, buf, sizeof(buf)) == -1) + return (ENXIO); + if (OF_finddevice(buf) != input) + return (ENXIO); + + *result = input; + return (0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -94,15 +115,17 @@ return (ENXIO); switch (devtype) { case UART_DEV_CONSOLE: - if (OF_getprop(opts, "input-device", buf, sizeof(buf)) == -1) - return (ENXIO); - input = OF_finddevice(buf); - if (input == -1) - return (ENXIO); - if (OF_getprop(opts, "output-device", buf, sizeof(buf)) == -1) - return (ENXIO); - if (OF_finddevice(buf) != input) - return (ENXIO); + if (ofw_get_uart_console(opts, &input, "input-device", + "output-device")) { + /* + * At least some G5 Xserves require that we + * probe input-device-1 as well + */ + + if (ofw_get_uart_console(opts, &input, "input-device-1", + "output-device-1")) + return (ENXIO); + } break; case UART_DEV_DBGPORT: if (!getenv_string("hw.uart.dbgport", buf, sizeof(buf))) ==== //depot/projects/tcp_reass/fs/nfs/nfsport.h#5 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.13 2009/07/14 22:48:30 rwatson Exp $ + * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.14 2009/07/22 14:37:53 rmacklem Exp $ */ #ifndef _NFS_NFSPORT_H_ @@ -911,6 +911,13 @@ #define NFSVNO_DELEGOK(v) (1) #endif +/* + * Define this as the flags argument for msleep() when catching signals + * while holding a resource that other threads would block for, such as + * a vnode lock. + */ +#define NFS_PCATCH (PCATCH | PBDRY) + #endif /* _KERNEL */ #endif /* _NFSPORT_NFS_H */ ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clbio.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.8 2009/06/18 05:56:24 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.9 2009/07/22 14:37:53 rmacklem Exp $"); #include #include @@ -1357,7 +1357,7 @@ sigset_t oldset; ncl_set_sigmask(td, &oldset); - bp = getblk(vp, bn, size, PCATCH, 0, 0); + bp = getblk(vp, bn, size, NFS_PCATCH, 0, 0); ncl_restore_sigmask(td, &oldset); while (bp == NULL) { if (newnfs_sigintr(nmp, td)) @@ -1396,7 +1396,7 @@ if ((nmp->nm_mountp->mnt_kern_flag & MNTK_UNMOUNTF)) intrflg = 1; if (intrflg) { - slpflag = PCATCH; + slpflag = NFS_PCATCH; slptimeo = 2 * hz; } else { slpflag = 0; @@ -1484,7 +1484,7 @@ } again: if (nmp->nm_flag & NFSMNT_INT) - slpflag = PCATCH; + slpflag = NFS_PCATCH; gotiod = FALSE; /* @@ -1553,7 +1553,7 @@ mtx_unlock(&ncl_iod_mutex); return (error2); } - if (slpflag == PCATCH) { + if (slpflag == NFS_PCATCH) { slpflag = 0; slptimeo = 2 * hz; } ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clrpcops.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clrpcops.c,v 1.3 2009/07/09 19:00:29 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clrpcops.c,v 1.4 2009/07/22 18:10:44 rmacklem Exp $"); /* * Rpc op calls, generally called from the vnode op calls or through the @@ -753,7 +753,7 @@ nfsattrbit_t attrbits; u_int8_t *cp = NULL, *cp2, addr[INET6_ADDRSTRLEN + 9]; u_short port; - int error, isinet6, callblen; + int error, isinet6 = 0, callblen; nfsquad_t confirm; u_int32_t lease; static u_int32_t rev = 0; ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clstate.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clstate.c,v 1.6 2009/07/09 19:00:29 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clstate.c,v 1.7 2009/07/22 14:32:28 rmacklem Exp $"); >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Jul 23 17:07:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0BAF51065692; Thu, 23 Jul 2009 17:07:18 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB4D31065680 for ; Thu, 23 Jul 2009 17:07:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A90118FC1E for ; Thu, 23 Jul 2009 17:07:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NH7HWc056121 for ; Thu, 23 Jul 2009 17:07:17 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NH7H4Y056119 for perforce@freebsd.org; Thu, 23 Jul 2009 17:07:17 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 17:07:17 GMT Message-Id: <200907231707.n6NH7H4Y056119@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166462 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 17:07:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=166462 Change 166462 by andre@andre_flirtbox on 2009/07/23 17:07:03 Simplify D-SACK handling tcp_reass_sack() and remove code duplication. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#41 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#41 (text+ko) ==== @@ -594,7 +594,7 @@ { int nsacks = 0; tcp_seq sack_seq; - struct tcp_reass_block *trb; + struct tcp_reass_block *trb, trbs; INP_WLOCK_ASSERT(tp->t_inpcb); KASSERT(numsacks > 0, @@ -602,18 +602,12 @@ KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), ("%s: sack list empty", __func__)); - /* DSACK */ - if (tp->rcv_reass_dsack.start == tp->rcv_reass_dsack.end) { - sack_seq = htonl(tp->rcv_reass_dsack.start); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - sack_seq = htonl(tp->rcv_reass_dsack.end); - bcopy((u_char *)&sack_seq, optp, sizeof(sack_seq)); - optp += sizeof(sack_seq); - tp->rcv_reass_dsack.start = 0; - tp->rcv_reass_dsack.end = 0; - numsacks--; - nsacks++; + /* Create D-SACK block and temporarily insert it. */ + if (tp->rcv_reass_dsack.start != tp->rcv_reass_dsack.end) { + bzero(&trbs, sizeof(trbs)); + trbs.trb_seqs = htonl(tp->rcv_reass_dsack.start); + trbs.trb_seqe = htonl(tp->rcv_reass_dsack.end); + LIST_INSERT_HEAD(&tp->rcv_reass_sack, &trbs, trb_sack); } /* @@ -634,6 +628,13 @@ nsacks++; } + /* Remove D-SACK block again. */ + if (LIST_FIRST(&tp->rcv_reass_sack) == &trbs) { + LIST_REMOVE(&trbs, trb_sack); + tp->rcv_reass_dsack.start = 0; + tp->rcv_reass_dsack.end = 0; + } + return (nsacks); } From owner-p4-projects@FreeBSD.ORG Thu Jul 23 18:45:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 22C451065672; Thu, 23 Jul 2009 18:45:05 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D6FD61065670 for ; Thu, 23 Jul 2009 18:45:04 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C47668FC1E for ; Thu, 23 Jul 2009 18:45:04 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NIj4lB065749 for ; Thu, 23 Jul 2009 18:45:04 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NIj4S8065747 for perforce@freebsd.org; Thu, 23 Jul 2009 18:45:04 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 18:45:04 GMT Message-Id: <200907231845.n6NIj4S8065747@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166467 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 18:45:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=166467 Change 166467 by gonzo@gonzo_figaro on 2009/07/23 18:44:38 - Now, when we have in-house toolchain bring back -fformat-extensions Affected files ... .. //depot/projects/avr32/src/sys/conf/kern.mk#5 edit Differences ... ==== //depot/projects/avr32/src/sys/conf/kern.mk#5 (text+ko) ==== @@ -12,9 +12,7 @@ .else CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \ -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \ - ${_wundef} ${_Wno_pointer_sign} -# antab: Disable format-extensions for now while we dont have a complete toolchain -# -fformat-extensions + ${_wundef} ${_Wno_pointer_sign} -fformat-extensions .if !defined(WITH_GCC3) _Wno_pointer_sign=-Wno-pointer-sign .endif From owner-p4-projects@FreeBSD.ORG Thu Jul 23 19:17:41 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4F8801065673; Thu, 23 Jul 2009 19:17:41 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F9DC106566B for ; Thu, 23 Jul 2009 19:17:41 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 996F88FC0A for ; Thu, 23 Jul 2009 19:17:40 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NJHeC0068990 for ; Thu, 23 Jul 2009 19:17:40 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NJHekM068988 for perforce@freebsd.org; Thu, 23 Jul 2009 19:17:40 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 19:17:40 GMT Message-Id: <200907231917.n6NJHekM068988@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166468 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 19:17:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=166468 Change 166468 by gonzo@gonzo_figaro on 2009/07/23 19:17:37 - Cast type for kobj_create explicitly Affected files ... .. //depot/projects/avr32/src/sys/kern/subr_devclk.c#7 edit Differences ... ==== //depot/projects/avr32/src/sys/kern/subr_devclk.c#7 (text+ko) ==== @@ -152,7 +152,7 @@ { devclk_t clk; - clk = kobj_create(cls, M_DEVBUF, M_WAITOK | M_ZERO); + clk = (devclk_t)kobj_create(cls, M_DEVBUF, M_WAITOK | M_ZERO); clk->dev = dev; clk->name = strdup(name, M_DEVBUF); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:22:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E7DBA1065673; Thu, 23 Jul 2009 20:22:51 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5EE71065672 for ; Thu, 23 Jul 2009 20:22:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 935F58FC28 for ; Thu, 23 Jul 2009 20:22:51 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKMpUe074699 for ; Thu, 23 Jul 2009 20:22:51 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKMpKH074697 for perforce@freebsd.org; Thu, 23 Jul 2009 20:22:51 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 20:22:51 GMT Message-Id: <200907232022.n6NKMpKH074697@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166470 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:22:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=166470 Change 166470 by gonzo@gonzo_figaro on 2009/07/23 20:22:08 - Replace overengineered version of power of 2 calcualtion with shift operator Affected files ... .. //depot/projects/avr32/src/sys/avr32/avr32/cache.c#5 edit Differences ... ==== //depot/projects/avr32/src/sys/avr32/avr32/cache.c#5 (text+ko) ==== @@ -112,21 +112,6 @@ u_int avr32_dcache_line_size; u_int avr32_dcache_ways; -/* XXX: there must be a library function for this? */ -u_int -pow(u_int base, u_int power) -{ - u_int i, result; - - if (power == 0) - return (1); - - result = base; - for (i = 1; i < power; i++) - result *= base; - return (result); -} - /* Set up the cache operations according to config. */ void avr32_config_cache(void) @@ -135,16 +120,16 @@ config = sysreg_read(CONFIG1); /* Read instruction cache parameters. */ - avr32_icache_size = pow(2, bit_value(SYS, CONFIG1, ISET, config)); - avr32_icache_line_size = pow(2, bit_value(SYS, CONFIG1, ILSZ, config) + - 1); - avr32_icache_ways = pow(2, bit_value(SYS, CONFIG1, IASS, config)); + avr32_icache_size = 1 << bit_value(SYS, CONFIG1, ISET, config); + avr32_icache_line_size = 1 << + (bit_value(SYS, CONFIG1, ILSZ, config) + 1); + avr32_icache_ways = 1 << bit_value(SYS, CONFIG1, IASS, config); /* Read data cache parameters. */ - avr32_dcache_size = pow(2, bit_value(SYS, CONFIG1, DSET, config)); - avr32_dcache_line_size = pow(2, bit_value(SYS, CONFIG1, DLSZ, config) + - 1); - avr32_dcache_ways = pow(2, bit_value(SYS, CONFIG1, DASS, config)); + avr32_dcache_size = 1 << bit_value(SYS, CONFIG1, DSET, config); + avr32_dcache_line_size = 1 << + (bit_value(SYS, CONFIG1, DLSZ, config) + 1); + avr32_dcache_ways = 1 << bit_value(SYS, CONFIG1, DASS, config); printf("ICACHE: sz %d lsz %d assoc %d\n", avr32_icache_size, avr32_icache_line_size, avr32_icache_ways); printf("DCACHE: sz %d lsz %d assoc %d\n", avr32_dcache_size, From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:25:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 63E231065694; Thu, 23 Jul 2009 20:25:55 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DB89106567C for ; Thu, 23 Jul 2009 20:25:55 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0B20F8FC27 for ; Thu, 23 Jul 2009 20:25:55 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKPsnc074929 for ; Thu, 23 Jul 2009 20:25:54 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKPshe074927 for perforce@freebsd.org; Thu, 23 Jul 2009 20:25:54 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 20:25:54 GMT Message-Id: <200907232025.n6NKPshe074927@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166471 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:25:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=166471 Change 166471 by gonzo@gonzo_figaro on 2009/07/23 20:25:52 - Hide unused variables under #ifdef Affected files ... .. //depot/projects/avr32/src/sys/dev/ate/if_ate.c#4 edit .. //depot/projects/avr32/src/sys/dev/uart/uart_dev_atmel.c#8 edit Differences ... ==== //depot/projects/avr32/src/sys/dev/ate/if_ate.c#4 (text) ==== @@ -880,10 +880,13 @@ struct ate_softc *sc = xsc; struct ifnet *ifp = sc->ifp; struct mbuf *mb; - void *bp; - uint32_t status, reg, rx_stat, frame_len; + uint32_t status, rx_stat, frame_len; int frame_start; int i; +#ifndef ATE_EMACB + uint32_t reg; + void *bp; +#endif status = RD4(sc, ETH_ISR); @@ -1127,8 +1130,11 @@ { struct ate_softc *sc = ifp->if_softc; struct mbuf *m, *mdefrag; + int e; +#ifndef ATE_EMACB + int nseg; bus_dma_segment_t segs[1]; - int nseg, e; +#endif ATE_ASSERT_LOCKED(sc); if (ifp->if_drv_flags & IFF_DRV_OACTIVE) @@ -1450,7 +1456,7 @@ return (val); } -static void +static int ate_miibus_writereg(device_t dev, int phy, int reg, int data) { struct ate_softc *sc; @@ -1464,7 +1470,8 @@ WR4(sc, ETH_MAN, ETH_MAN_REG_WR(phy, reg, data)); while ((RD4(sc, ETH_SR) & ETH_SR_IDLE) == 0) continue; - return; + + return (0); } static device_method_t ate_methods[] = { ==== //depot/projects/avr32/src/sys/dev/uart/uart_dev_atmel.c#8 (text+ko) ==== @@ -333,7 +333,9 @@ #endif uint32_t cr; struct uart_atmel_softc *atsc; +#if 0 struct uart_devinfo *di; +#endif atsc = (struct uart_atmel_softc *)sc; From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:27:58 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AEF3D1065670; Thu, 23 Jul 2009 20:27:57 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6EA39106564A for ; Thu, 23 Jul 2009 20:27:57 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5C47F8FC19 for ; Thu, 23 Jul 2009 20:27:57 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKRvvj075044 for ; Thu, 23 Jul 2009 20:27:57 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKRvj3075042 for perforce@freebsd.org; Thu, 23 Jul 2009 20:27:57 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 20:27:57 GMT Message-Id: <200907232027.n6NKRvj3075042@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166472 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:27:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=166472 Change 166472 by gonzo@gonzo_figaro on 2009/07/23 20:27:21 - Fix functions prototypes to conform pre-defined types Affected files ... .. //depot/projects/avr32/src/sys/dev/mmc/atmel_mci.c#5 edit Differences ... ==== //depot/projects/avr32/src/sys/dev/mmc/atmel_mci.c#5 (text+ko) ==== @@ -275,7 +275,8 @@ } static void -atmel_mci_getaddr(void *arg, void *segs, int nsegs, int error) +atmel_mci_getaddr(void *arg, bus_dma_segment_t *segs, + int nsegs, int error) { if (error != 0) return; @@ -614,7 +615,7 @@ } static int -atmel_mci_read_ivar(device_t bus, device_t child, int which, u_char *result) +atmel_mci_read_ivar(device_t bus, device_t child, int which, uintptr_t *result) { struct atmel_mci_softc *sc = device_get_softc(bus); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:40:11 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1DD1A1065688; Thu, 23 Jul 2009 20:40:11 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D427010656A7 for ; Thu, 23 Jul 2009 20:40:10 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C15B78FC26 for ; Thu, 23 Jul 2009 20:40:10 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKeABg075944 for ; Thu, 23 Jul 2009 20:40:10 GMT (envelope-from lulf@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKeAha075942 for perforce@freebsd.org; Thu, 23 Jul 2009 20:40:10 GMT (envelope-from lulf@FreeBSD.org) Date: Thu, 23 Jul 2009 20:40:10 GMT Message-Id: <200907232040.n6NKeAha075942@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to lulf@FreeBSD.org using -f From: Ulf Lilleengen To: Perforce Change Reviews Cc: Subject: PERFORCE change 166473 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:40:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=166473 Change 166473 by lulf@lulf_nobby on 2009/07/23 20:40:06 - Set the clock frequency correctly. Makes the device accept commands, but it still fails to probe the card correctly. Affected files ... .. //depot/projects/avr32/src/sys/dev/mmc/atmel_mci.c#6 edit .. //depot/projects/avr32/src/sys/dev/mmc/mmc.c#6 edit Differences ... ==== //depot/projects/avr32/src/sys/dev/mmc/atmel_mci.c#6 (text+ko) ==== @@ -138,8 +138,8 @@ WR4(sc, MCI_CR, MCI_CR_MCIEN); /* Enable controller */ WR4(sc, MCI_IDR, 0xffffffff); /* Turn off interrupts */ - WR4(sc, MCI_DTOR, MCI_DTOR_DTOMUL_1M | 1); - WR4(sc, MCI_MR, 0x834a); // XXX GROSS HACK FROM LINUX +// WR4(sc, MCI_DTOR, MCI_DTOR_DTOMUL_1M | 1); +// WR4(sc, MCI_MR, 0x834a); // XXX GROSS HACK FROM LINUX WR4(sc, MCI_SDCR, 0); /* SLOT A, 1 bit bus */ } @@ -200,8 +200,9 @@ goto out; } mci_clockfreq = devclk_get_rate(dev); - sc->host.f_min = 375000; //XXX - sc->host.f_max = mci_clockfreq / 2; /* Typically 65 MHz (XXX: too much?) */ +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) + sc->host.f_min = DIV_ROUND_UP(mci_clockfreq, 512); + sc->host.f_max = mci_clockfreq / 2; sc->host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340; if (sc->wire4) sc->host.caps = MMC_CAP_4_BIT_DATA; @@ -299,10 +300,19 @@ clkdiv = 0; } else { WR4(sc, MCI_CR, MCI_CR_MCIEN); + if ((mci_clockfreq % (ios->clock * 2)) == 0) clkdiv = ((mci_clockfreq / ios->clock) / 2) - 1; else clkdiv = (mci_clockfreq / ios->clock) / 2; + +/* +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) + clkdiv = DIV_ROUND_UP(mci_clockfreq, 2 * host->f_min) - 1; + if (clkdiv > 255) { + printf("ATMEL MCI: clock too slow\n"); + clkdiv = 255; + }*/ } if (ios->bus_width == bus_width_4) WR4(sc, MCI_SDCR, RD4(sc, MCI_SDCR) | MCI_SDCR_SDCBUS); @@ -404,7 +414,7 @@ ier = MCI_SR_TXBUFE; } } -// printf("CMDR %x ARGR %x with data\n", cmdr, cmd->arg); + printf("CMDR %x ARGR %x with data\n", cmdr, cmd->arg); WR4(sc, MCI_ARGR, cmd->arg); if (cmdr & MCI_CMDR_TRCMD_START) { if (cmdr & MCI_CMDR_TRDIR) { @@ -429,12 +439,12 @@ // assert locked if (!(sc->flags & CMD_STARTED)) { sc->flags |= CMD_STARTED; -// printf("Starting CMD\n"); + printf("Starting CMD\n"); atmel_mci_start_cmd(sc, req->cmd); return; } if (!(sc->flags & STOP_STARTED) && req->stop) { -// printf("Starting Stop\n"); + printf("Starting Stop\n"); sc->flags |= STOP_STARTED; atmel_mci_start_cmd(sc, req->stop); return; @@ -540,7 +550,7 @@ ATMEL_MCI_LOCK(sc); sr = RD4(sc, MCI_SR) & RD4(sc, MCI_IMR); -// printf("i 0x%x\n", sr); + printf("i 0x%x\n", sr); cmd = sc->curcmd; if (sr & MCI_SR_ERROR) { // Ignore CRC errors on CMD2 and ACMD47, per relevant standards @@ -562,40 +572,40 @@ } } else { if (sr & MCI_SR_TXBUFE) { -// printf("TXBUFE\n"); + printf("TXBUFE\n"); atmel_mci_xmit_done(sc); } if (sr & MCI_SR_RXBUFF) { -// printf("RXBUFF\n"); + printf("RXBUFF\n"); WR4(sc, MCI_IDR, MCI_SR_RXBUFF); WR4(sc, MCI_IER, MCI_SR_CMDRDY); } if (sr & MCI_SR_ENDTX) { -// printf("ENDTX\n"); + printf("ENDTX\n"); } if (sr & MCI_SR_ENDRX) { -// printf("ENDRX\n"); + printf("ENDRX\n"); atmel_mci_read_done(sc); } if (sr & MCI_SR_NOTBUSY) { -// printf("NOTBUSY\n"); + printf("NOTBUSY\n"); WR4(sc, MCI_IDR, MCI_SR_NOTBUSY); WR4(sc, MCI_IER, MCI_SR_CMDRDY); } if (sr & MCI_SR_DTIP) { -// printf("Data transfer in progress\n"); + printf("Data transfer in progress\n"); } if (sr & MCI_SR_BLKE) { -// printf("Block transfer end\n"); + printf("Block transfer end\n"); } if (sr & MCI_SR_TXRDY) { -// printf("Ready to transmit\n"); + printf("Ready to transmit\n"); } if (sr & MCI_SR_RXRDY) { -// printf("Ready to receive\n"); + printf("Ready to receive\n"); } if (sr & MCI_SR_CMDRDY) { -// printf("Command ready\n"); + printf("Command ready\n"); done = 1; cmd->error = MMC_ERR_NONE; } @@ -606,7 +616,7 @@ for (i = 0; i < ((cmd->flags & MMC_RSP_136) ? 4 : 1); i++) { cmd->resp[i] = RD4(sc, MCI_RSPR + i * 4); -// printf("RSPR[%d] = %x\n", i, cmd->resp[i]); + printf("RSPR[%d] = %x\n", i, cmd->resp[i]); } } atmel_mci_start(sc); ==== //depot/projects/avr32/src/sys/dev/mmc/mmc.c#6 (text+ko) ==== @@ -107,7 +107,7 @@ SYSCTL_NODE(_hw, OID_AUTO, mmc, CTLFLAG_RD, NULL, "mmc driver"); -static int mmc_debug; +static int mmc_debug = 4; SYSCTL_INT(_hw_mmc, OID_AUTO, debug, CTLFLAG_RW, &mmc_debug, 0, "Debug level"); /* bus entry points */ @@ -453,8 +453,9 @@ if (err != MMC_ERR_NONE) break; if ((cmd.resp[0] & MMC_OCR_CARD_BUSY) || - (ocr & MMC_OCR_VOLTAGE) == 0) + (ocr & MMC_OCR_VOLTAGE) == 0) { break; + } err = MMC_ERR_TIMEOUT; mmc_ms_delay(10); } @@ -1304,7 +1305,7 @@ { uint32_t ocr; device_t dev; - int err; + int err, err2; dev = sc->dev; if (mmcbr_get_power_mode(dev) != power_on) { @@ -1320,10 +1321,12 @@ err = mmc_send_if_cond(sc, 1); if ((bootverbose || mmc_debug) && err == 0) device_printf(sc->dev, "SD 2.0 interface conditions: OK\n"); - if (mmc_send_app_op_cond(sc, err ? 0 : MMC_OCR_CCS, &ocr) != - MMC_ERR_NONE) { - if (bootverbose || mmc_debug) + err2 = mmc_send_app_op_cond(sc, err ? 0 : MMC_OCR_CCS, &ocr); + if (err2 != MMC_ERR_NONE) { + if (bootverbose || mmc_debug) { + device_printf(sc->dev, "ERR: %d, err2: %d, ocr: 0x%x\n", err, err2, ocr); device_printf(sc->dev, "SD probe: failed\n"); + } /* * Failed, try MMC */ From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:53:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D6CE91065673; Thu, 23 Jul 2009 20:53:25 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 96C85106566B for ; Thu, 23 Jul 2009 20:53:25 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6A1298FC1C for ; Thu, 23 Jul 2009 20:53:25 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKrPg6087060 for ; Thu, 23 Jul 2009 20:53:25 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKrPj0087058 for perforce@freebsd.org; Thu, 23 Jul 2009 20:53:25 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 20:53:25 GMT Message-Id: <200907232053.n6NKrPj0087058@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166475 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:53:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=166475 Change 166475 by andre@andre_t61 on 2009/07/23 20:52:38 Pass length directly to tcp_reass(). The pointer juggling is no longer necessary as the receiver SACK blocks are generated directly out of the reassembly queue. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_input.c#15 edit .. //depot/projects/tcp_reass/netinet/tcp_reass.c#42 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#21 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_input.c#15 (text+ko) ==== @@ -1999,8 +1999,7 @@ * later; if not, do so now to pass queued data to user. */ if (tlen == 0 && (thflags & TH_FIN) == 0) - (void) tcp_reass(tp, (struct tcphdr *)0, 0, - (struct mbuf *)0); + (void)tcp_reass(tp, NULL, 0, NULL); tp->snd_wl1 = th->th_seq - 1; /* FALLTHROUGH */ @@ -2592,7 +2591,7 @@ /* * NB: tcp_reass() always consumes the mbuf chain. */ - thflags = tcp_reass(tp, th, &tlen, m); + thflags = tcp_reass(tp, th, tlen, m); tp->t_flags |= TF_ACKNOW; } #ifdef INVARIANTS ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#42 (text+ko) ==== @@ -277,7 +277,7 @@ * the queue or by freeing it. */ int -tcp_reass(struct tcpcb *tp, struct tcphdr *th, int *tlenp, struct mbuf *m) +tcp_reass(struct tcpcb *tp, struct tcphdr *th, int len, struct mbuf *m) { int thflags = 0; tcp_seq th_seq; @@ -303,9 +303,8 @@ } KASSERT(th != NULL, ("%s: th is NULL", __func__)); - KASSERT(tlenp != NULL, ("%s: tlenp is NULL", __func__)); KASSERT(m != NULL, ("%s: m is NULL", __func__)); - KASSERT(*tlenp == m_length(m, NULL), + KASSERT(len == m_length(m, NULL), ("%s: tlen != mbuf length", __func__)); /* @@ -375,7 +374,7 @@ tcp_timer_activate(tp, TT_REASS, 0); return (thflags); } - } else if (*tlenp == 0) + } else if (len == 0) goto done; else thflags &= ~TH_FIN; @@ -394,7 +393,7 @@ /* Set up search structure. */ trbs.trb_seqs = th_seq; - trbs.trb_seqe = th_seq + *tlenp; + trbs.trb_seqe = th_seq + len; trbs.trb_m = m; trbs.trb_mt = m_last(m); @@ -496,7 +495,6 @@ done: m_freem(m); - *tlenp = 0; return (0); } ==== //depot/projects/tcp_reass/netinet/tcp_var.h#21 (text+ko) ==== @@ -652,7 +652,7 @@ void tcp_fini(void *); char *tcp_log_addrs(struct in_conninfo *, struct tcphdr *, void *, const void *); -int tcp_reass(struct tcpcb *, struct tcphdr *, int *, struct mbuf *); +int tcp_reass(struct tcpcb *, struct tcphdr *, int, struct mbuf *); void tcp_reass_init(void); int tcp_reass_sack(struct tcpcb *, u_char *, int); void tcp_reass_flush(struct tcpcb *); From owner-p4-projects@FreeBSD.ORG Thu Jul 23 20:54:27 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 017061065675; Thu, 23 Jul 2009 20:54:27 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1ADF1065673 for ; Thu, 23 Jul 2009 20:54:26 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9F1718FC15 for ; Thu, 23 Jul 2009 20:54:26 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NKsQTY087120 for ; Thu, 23 Jul 2009 20:54:26 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NKsQiB087118 for perforce@freebsd.org; Thu, 23 Jul 2009 20:54:26 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 20:54:26 GMT Message-Id: <200907232054.n6NKsQiB087118@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166476 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 20:54:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=166476 Change 166476 by andre@andre_t61 on 2009/07/23 20:54:23 Be more consistent with the sequence space comparisons. Have uma_zalloc zero out the structure on allocation. Affected files ... .. //depot/projects/tcp_new/netinet/tcp_sack.c#12 edit Differences ... ==== //depot/projects/tcp_new/netinet/tcp_sack.c#12 (text+ko) ==== @@ -267,7 +267,7 @@ sacked += SEQ_DELTA(tsb->tsb_blk.end, sack.tsb_blk.end); tsb->tsb_blk.end = sack.tsb_blk.end; while ((tsbn = RB_NEXT(tcp_sackblocks, &tp->snd_sackblocks, tsb)) != NULL && - SEQ_GEQ(tsbn->tsb_blk.start, tsb->tsb_blk.end)) { + SEQ_GEQ(tsb->tsb_blk.end, tsbn->tsb_blk.start)) { sacked -= SEQ_DELTA(sack.tsb_blk.end, tsbn->tsb_blk.start); if (SEQ_GT(tsbn->tsb_blk.end, tsb->tsb_blk.end)) tsb->tsb_blk.end = tsbn->tsb_blk.end; @@ -279,14 +279,14 @@ sacked += SEQ_DELTA(sack.tsb_blk.start, tsb->tsb_blk.start); tsb->tsb_blk.start = sack.tsb_blk.start; while ((tsbn = RB_PREV(tcp_sackblocks, &tp->snd_sackblocks, tsb)) != NULL && - SEQ_GEQ(tsbn->tsb_blk.end, tsb->tsb_blk.start)) { + SEQ_LEQ(tsb->tsb_blk.start, tsbn->tsb_blk.end)) { sacked -= SEQ_DELTA(sack.tsb_blk.start, tsbn->tsb_blk.end); if (SEQ_LT(tsbn->tsb_blk.start, tsb->tsb_blk.start)) tsb->tsb_blk.start = tsbn->tsb_blk.start; tcp_sack_free(tp, tsbn); } } - } else if ((tsb = (struct tcp_sack_block *)uma_zalloc(tcp_sackblock_zone, M_NOWAIT)) != NULL) { + } else if ((tsb = (struct tcp_sack_block *)uma_zalloc(tcp_sackblock_zone, (M_NOWAIT|M_ZERO))) != NULL) { sacked += SEQ_DELTA(sack.tsb_blk.start, sack.tsb_blk.end); tsb->tsb_blk.start = sack.tsb_blk.start; tsb->tsb_blk.end = sack.tsb_blk.end; From owner-p4-projects@FreeBSD.ORG Thu Jul 23 21:10:45 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 04A811065678; Thu, 23 Jul 2009 21:10:45 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AFDD31065676 for ; Thu, 23 Jul 2009 21:10:44 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 83DEF8FC2D for ; Thu, 23 Jul 2009 21:10:44 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NLAixG089365 for ; Thu, 23 Jul 2009 21:10:44 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NLAiJI089363 for perforce@freebsd.org; Thu, 23 Jul 2009 21:10:44 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 21:10:44 GMT Message-Id: <200907232110.n6NLAiJI089363@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166477 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 21:10:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166477 Change 166477 by andre@andre_t61 on 2009/07/23 21:10:13 Another go ot rcv_reass_size reporting the size of all sack'ed blocks held. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#43 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#43 (text+ko) ==== @@ -219,8 +219,8 @@ total += size; i++; } - //KASSERT(tp->rcv_reass_size == total, - // ("%s: total not correct", __func__)); + KASSERT(tp->rcv_reass_size == total, + ("%s: rcv_reass_size not correct", __func__)); LIST_FOREACH(trb, &tp->rcv_reass_sack, trb_sack) { i--; @@ -241,6 +241,7 @@ LIST_REMOVE(trb, trb_sack); if (trb->trb_m != NULL) m_freem(trb->trb_m); + tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); tp->rcv_reass_blocks--; uma_zfree(tcp_reass_zone, trb); } @@ -257,7 +258,9 @@ RB_FOREACH_SAFE(trb, tcp_ra, &tp->rcv_reass, trbn) { tcp_reass_free(tp, trb); } - //KASSERT(tp->rcv_reass_size == 0, ("%s: snd_sacked not zero", __func__)); + + KASSERT(tp->rcv_reass_size == 0, + ("%s: rcv_reass_size not zero after flushing", __func__)); } static __inline void @@ -411,6 +414,7 @@ tp->rcv_reass_dsack.end = trbs.trb_seqe; goto done; } + tp->rcv_reass_size += SEQ_DELTA(trbs.trb_seqs, trbs.trb_seqe); /* Merge in the new segment. */ (void)tcp_reass_merge(trb, &trbs); @@ -528,16 +532,16 @@ KASSERT(trb != NULL && trbn != NULL, ("%s: incomplete input", __func__)); - KASSERT(SEQ_LT(trbn->trb_seqs, trb->trb_seqs) || SEQ_GT(trbn->trb_seqe, trb->trb_seqe), - ("%s: ", __func__)); + ("%s: blocks not overlapping", __func__)); /* Replace, prepend and append. */ if (SEQ_LEQ(trbn->trb_seqs, trb->trb_seqs) && SEQ_GEQ(trbn->trb_seqe, trb->trb_seqe)) { - m_freem(trb->trb_m); + i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe); + trb->trb_seqs = trbn->trb_seqs; trb->trb_seqe = trbn->trb_seqe; trb->trb_m = trbn->trb_m; @@ -575,10 +579,10 @@ return (NULL); trbn->trb_seqs = 0; - trbn->trb_seqe = 0; + trbn->trb_seqe = i; trbn->trb_m = NULL; trbn->trb_mt = NULL; - return (trbn); + return (trbn); } /* From owner-p4-projects@FreeBSD.ORG Thu Jul 23 21:16:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A0E471065676; Thu, 23 Jul 2009 21:16:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 60CFA1065674 for ; Thu, 23 Jul 2009 21:16:51 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4ECC58FC08 for ; Thu, 23 Jul 2009 21:16:51 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NLGphd089798 for ; Thu, 23 Jul 2009 21:16:51 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NLGp1n089796 for perforce@freebsd.org; Thu, 23 Jul 2009 21:16:51 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 21:16:51 GMT Message-Id: <200907232116.n6NLGp1n089796@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166478 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 21:16:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=166478 Change 166478 by andre@andre_t61 on 2009/07/23 21:16:05 Update TODO list. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#44 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#44 (text+ko) ==== @@ -62,13 +62,10 @@ * optional parts marked as "SHOULD". * * TODO: - * A further improvement is to merge the content of mbufs together if the - * preceeding one has enough space to hold the data of the new one. When - * trimming the head of an mbuf chain m_adj() empties the mbufs but leaves - * them in place. Only when trimming from the tail it actually frees them. - * Normally we don't get mbuf chains so this isn't too much of a concern - * right now. Use m_collapse() to compact the mbuf chains within the - * blocks. + * - Improve comments and RFC references. + * - Resizing of tcp_reass_globalmaxblocks through sysctl. + * - TCP statistics. + * - Style improvements. */ #include "opt_inet.h" From owner-p4-projects@FreeBSD.ORG Thu Jul 23 21:33:24 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3C9F11065677; Thu, 23 Jul 2009 21:33:23 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF3471065675; Thu, 23 Jul 2009 21:33:22 +0000 (UTC) (envelope-from lulf@freebsd.org) Received: from decibel.pvv.ntnu.no (decibel.pvv.ntnu.no [IPv6:2001:700:300:1900::1:2]) by mx1.freebsd.org (Postfix) with ESMTP id 3F9388FC1A; Thu, 23 Jul 2009 21:33:22 +0000 (UTC) (envelope-from lulf@freebsd.org) Received: from 147.80-202-26.nextgentel.com ([80.202.26.147] helo=nobby.geeknest.org) by decibel.pvv.ntnu.no with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1MU5ug-0005mc-L0; Thu, 23 Jul 2009 23:33:20 +0200 Message-ID: <4A68D71B.3010909@freebsd.org> Date: Thu, 23 Jul 2009 23:33:15 +0200 From: Ulf Lilleengen User-Agent: Thunderbird 2.0.0.22 (X11/20090723) MIME-Version: 1.0 To: Oleksandr Tymoshenko References: <200907232022.n6NKMpKH074697@repoman.freebsd.org> In-Reply-To: <200907232022.n6NKMpKH074697@repoman.freebsd.org> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam-Score: 0.2 (/) X-Spam-Report: Status=No hits=0.2 required=5.0 tests=ALL_TRUSTED, TVD_RCVD_IP version=3.2.4 Cc: perforce@FreeBSD.org Subject: Re: PERFORCE change 166470 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 21:33:24 -0000 Oleksandr Tymoshenko wrote: > http://perforce.freebsd.org/chv.cgi?CH=166470 > > Change 166470 by gonzo@gonzo_figaro on 2009/07/23 20:22:08 > > - Replace overengineered version of power of 2 calcualtion > with shift operator > Boy do I feel silly :) > Affected files ... > > .. //depot/projects/avr32/src/sys/avr32/avr32/cache.c#5 edit > > Differences ... > > ==== //depot/projects/avr32/src/sys/avr32/avr32/cache.c#5 (text+ko) ==== > > @@ -112,21 +112,6 @@ > u_int avr32_dcache_line_size; > u_int avr32_dcache_ways; > > -/* XXX: there must be a library function for this? */ > -u_int > -pow(u_int base, u_int power) > -{ > - u_int i, result; > - > - if (power == 0) > - return (1); > - > - result = base; > - for (i = 1; i < power; i++) > - result *= base; > - return (result); > -} > - > /* Set up the cache operations according to config. */ > void > avr32_config_cache(void) > @@ -135,16 +120,16 @@ > > config = sysreg_read(CONFIG1); > /* Read instruction cache parameters. */ > - avr32_icache_size = pow(2, bit_value(SYS, CONFIG1, ISET, config)); > - avr32_icache_line_size = pow(2, bit_value(SYS, CONFIG1, ILSZ, config) + > - 1); > - avr32_icache_ways = pow(2, bit_value(SYS, CONFIG1, IASS, config)); > + avr32_icache_size = 1 << bit_value(SYS, CONFIG1, ISET, config); > + avr32_icache_line_size = 1 << > + (bit_value(SYS, CONFIG1, ILSZ, config) + 1); > + avr32_icache_ways = 1 << bit_value(SYS, CONFIG1, IASS, config); > > /* Read data cache parameters. */ > - avr32_dcache_size = pow(2, bit_value(SYS, CONFIG1, DSET, config)); > - avr32_dcache_line_size = pow(2, bit_value(SYS, CONFIG1, DLSZ, config) + > - 1); > - avr32_dcache_ways = pow(2, bit_value(SYS, CONFIG1, DASS, config)); > + avr32_dcache_size = 1 << bit_value(SYS, CONFIG1, DSET, config); > + avr32_dcache_line_size = 1 << > + (bit_value(SYS, CONFIG1, DLSZ, config) + 1); > + avr32_dcache_ways = 1 << bit_value(SYS, CONFIG1, DASS, config); > printf("ICACHE: sz %d lsz %d assoc %d\n", avr32_icache_size, > avr32_icache_line_size, avr32_icache_ways); > printf("DCACHE: sz %d lsz %d assoc %d\n", avr32_dcache_size, > From owner-p4-projects@FreeBSD.ORG Thu Jul 23 21:43:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BED5D1065672; Thu, 23 Jul 2009 21:43:20 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7ED7A106564A for ; Thu, 23 Jul 2009 21:43:20 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6CEF68FC1E for ; Thu, 23 Jul 2009 21:43:20 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NLhKjV091703 for ; Thu, 23 Jul 2009 21:43:20 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NLhK2v091701 for perforce@freebsd.org; Thu, 23 Jul 2009 21:43:20 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 21:43:20 GMT Message-Id: <200907232143.n6NLhK2v091701@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166480 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 21:43:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=166480 Change 166480 by andre@andre_t61 on 2009/07/23 21:42:30 Add statistics. Update TODO list. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#45 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#22 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#45 (text+ko) ==== @@ -62,10 +62,10 @@ * optional parts marked as "SHOULD". * * TODO: - * - Improve comments and RFC references. + * - Improve comments and annotate RFC references. * - Resizing of tcp_reass_globalmaxblocks through sysctl. - * - TCP statistics. * - Style improvements. + * - Lots of testing. */ #include "opt_inet.h" @@ -379,6 +379,9 @@ else thflags &= ~TH_FIN; + TCPSTAT_INC(tcps_rcvoopack); + TCPSTAT_ADD(tcps_rcvoobyte, len); + /* * Get rid of packet header and mtags. * Trim empty mbufs from head of chain. @@ -409,19 +412,29 @@ tcp_reass_sacktrack(tp, trb); tp->rcv_reass_dsack.start = trbs.trb_seqs; tp->rcv_reass_dsack.end = trbs.trb_seqe; + TCPSTAT_INC(tcps_rcvduppack); + TCPSTAT_ADD(tcps_rcvdupbyte, len); goto done; } + tp->rcv_reass_size += SEQ_DELTA(trbs.trb_seqs, trbs.trb_seqe); /* Merge in the new segment. */ (void)tcp_reass_merge(trb, &trbs); tcp_reass_sacktrack(tp, trb); + if ((len = SEQ_DELTA(trbs.trb_seqs, trbs.trb_seqe)) > 0) { + tp->rcv_reass_size -= len; + TCPSTAT_INC(tcps_rcvpartduppack); + TCPSTAT_ADD(tcps_rcvpartdupbyte, len); + } + /* Merge in previous block(s) if there is overlap. */ while ((trbn = RB_PREV(tcp_ra, &tp->rcv_reass, trb)) != NULL && SEQ_LEQ(trb->trb_seqs, trbn->trb_seqe)) { trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); + TCPSTAT_INC(tcps_reass_merge); } /* Merge in next block(s) if there is overlap. */ @@ -429,6 +442,7 @@ SEQ_GEQ(trb->trb_seqe, trbn->trb_seqs)) { trbn = tcp_reass_merge(trb, trbn); tcp_reass_free(tp, trbn); + TCPSTAT_INC(tcps_reass_merge); } } else if (tp->rcv_nxt == th_seq) { @@ -442,8 +456,10 @@ KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); tp->rcv_reass_blocks++; + TCPSTAT_INC(tcps_reass_blocks); } else { /* Memory allocation failure. */ + TCPSTAT_INC(tcps_rcvmemdrop); goto done; } KASSERT(tcp_reass_verify(tp, 1), @@ -462,6 +478,7 @@ ("%s: queue empty at present", __func__)); KASSERT(trb->trb_seqs == tp->rcv_nxt, ("%s: first block does not match rcv_nxt", __func__)); + TCPSTAT_INC(tcps_reass_missingseg); SOCKBUF_LOCK(&so->so_rcv); @@ -544,6 +561,8 @@ trb->trb_m = trbn->trb_m; trb->trb_mt = trbn->trb_mt; + TCPSTAT_INC(tcps_reass_replace); + } else if (SEQ_LT(trbn->trb_seqs, trb->trb_seqs)) { if ((i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe)) > 0) ==== //depot/projects/tcp_reass/netinet/tcp_var.h#22 (text+ko) ==== @@ -444,9 +444,6 @@ u_long tcps_reass_overflow; /* reassembly queue overflows */ u_long tcps_reass_tail; /* packet appends to tail block */ u_long tcps_reass_merge; /* reassembly block merges */ - u_long tcps_reass_prepend; /* packet prepends block */ - u_long tcps_reass_append; /* packet appends block */ - u_long tcps_reass_covered; /* block covered and removed */ u_long tcps_reass_replace; /* block replaced */ u_long tcps_reass_flush; /* queue flushes due to timeout */ From owner-p4-projects@FreeBSD.ORG Thu Jul 23 22:17:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E4A38106566B; Thu, 23 Jul 2009 22:17:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A40AE106566C for ; Thu, 23 Jul 2009 22:17:58 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 92D5A8FC0C for ; Thu, 23 Jul 2009 22:17:58 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NMHwBB095152 for ; Thu, 23 Jul 2009 22:17:58 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NMHwPv095150 for perforce@freebsd.org; Thu, 23 Jul 2009 22:17:58 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 22:17:58 GMT Message-Id: <200907232217.n6NMHwPv095150@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166481 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 22:18:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=166481 Change 166481 by andre@andre_t61 on 2009/07/23 22:17:46 Add uma_zone_get_max() reporting the actual rounded up maximum of items in a zone (if limited by uma_zone_set_max). Affected files ... .. //depot/projects/tcp_reass/vm/uma.h#5 edit .. //depot/projects/tcp_reass/vm/uma_core.c#6 edit Differences ... ==== //depot/projects/tcp_reass/vm/uma.h#5 (text+ko) ==== @@ -451,7 +451,8 @@ * Sets a high limit on the number of items allowed in a zone * * Arguments: - * zone The zone to limit + * zone The zone to limit + * nitems The maximum number of items (will be rounded up to slab (page) size) * * Returns: * Nothing @@ -459,6 +460,18 @@ void uma_zone_set_max(uma_zone_t zone, int nitems); /* + * Returns the high limit on the number of items allowed in a zone + * + * Arguments: + * zone The zone to report + * + * Returns: + * 0 unlimited + * >0 The effective maximum number of items allowed + */ +int uma_zone_get_max(uma_zone_t zone); + +/* * The following two routines (uma_zone_set_init/fini) * are used to set the backend init/fini pair which acts on an * object as it becomes allocated and is placed in a slab within ==== //depot/projects/tcp_reass/vm/uma_core.c#6 (text+ko) ==== @@ -2799,6 +2799,24 @@ } /* See uma.h */ +int +uma_zone_get_max(uma_zone_t zone) +{ + int items; + uma_keg_t keg; + + ZONE_LOCK(zone); + keg = zone_first_keg(zone); + if (keg->uk_maxpages > 0) + items = keg->uk_maxpages * keg->uk_ipers; + else + items = 0; + ZONE_UNLOCK(zone); + + return (items); +} + +/* See uma.h */ void uma_zone_set_init(uma_zone_t zone, uma_init uminit) { From owner-p4-projects@FreeBSD.ORG Thu Jul 23 22:22:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3975F1065673; Thu, 23 Jul 2009 22:22:03 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE0D6106566B for ; Thu, 23 Jul 2009 22:22:02 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DCACC8FC18 for ; Thu, 23 Jul 2009 22:22:02 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NMM2V6095486 for ; Thu, 23 Jul 2009 22:22:02 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NMM2MG095484 for perforce@freebsd.org; Thu, 23 Jul 2009 22:22:02 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 22:22:02 GMT Message-Id: <200907232222.n6NMM2MG095484@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166482 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 22:22:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=166482 Change 166482 by andre@andre_t61 on 2009/07/23 22:21:30 Simplify logic as m_freem() ignores NULL pointers (mbufs already free'd). Update some comments. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#46 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#46 (text+ko) ==== @@ -236,8 +236,7 @@ trb = RB_REMOVE(tcp_ra, &tp->rcv_reass, trb); KASSERT(trb != NULL, ("%s: RB_REMOVE failed", __func__)); LIST_REMOVE(trb, trb_sack); - if (trb->trb_m != NULL) - m_freem(trb->trb_m); + m_freem(trb->trb_m); tp->rcv_reass_size -= SEQ_DELTA(trb->trb_seqs, trb->trb_seqe); tp->rcv_reass_blocks--; uma_zfree(tcp_reass_zone, trb); @@ -489,10 +488,10 @@ trb->trb_m = NULL; trb->trb_mt = NULL; } - if (trb == &trbs) { - if (trb->trb_m != NULL) - m_freem(trb->trb_m); - } else + + if (trb == &trbs) + m_freem(trb->trb_m); + else tcp_reass_free(tp, trb); /* NB: sorwakeup_locked() does a implicit socket buffer unlock. */ @@ -620,7 +619,7 @@ KASSERT(!LIST_EMPTY(&tp->rcv_reass_sack), ("%s: sack list empty", __func__)); - /* Create D-SACK block and temporarily insert it. */ + /* Create fake SACK block for D-SACK and prepend it. */ if (tp->rcv_reass_dsack.start != tp->rcv_reass_dsack.end) { bzero(&trbs, sizeof(trbs)); trbs.trb_seqs = htonl(tp->rcv_reass_dsack.start); @@ -646,7 +645,7 @@ nsacks++; } - /* Remove D-SACK block again. */ + /* Remove fake D-SACK block again. */ if (LIST_FIRST(&tp->rcv_reass_sack) == &trbs) { LIST_REMOVE(&trbs, trb_sack); tp->rcv_reass_dsack.start = 0; From owner-p4-projects@FreeBSD.ORG Thu Jul 23 22:35:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DCACA1065670; Thu, 23 Jul 2009 22:35:17 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CB33106564A for ; Thu, 23 Jul 2009 22:35:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 716018FC0A for ; Thu, 23 Jul 2009 22:35:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NMZHbd096444 for ; Thu, 23 Jul 2009 22:35:17 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NMZHKo096442 for perforce@freebsd.org; Thu, 23 Jul 2009 22:35:17 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 22:35:17 GMT Message-Id: <200907232235.n6NMZHKo096442@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166483 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 22:35:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=166483 Change 166483 by andre@andre_t61 on 2009/07/23 22:34:25 Bring back m_freem() that was accidentially lost in r166477. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#47 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#47 (text+ko) ==== @@ -555,6 +555,7 @@ i = SEQ_DELTA(trb->trb_seqs, trbn->trb_seqe); + m_freem(trb->trb_m); trb->trb_seqs = trbn->trb_seqs; trb->trb_seqe = trbn->trb_seqe; trb->trb_m = trbn->trb_m; From owner-p4-projects@FreeBSD.ORG Thu Jul 23 23:54:44 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 943691065674; Thu, 23 Jul 2009 23:54:44 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52B181065672 for ; Thu, 23 Jul 2009 23:54:44 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 419F68FC23 for ; Thu, 23 Jul 2009 23:54:44 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NNsi70003130 for ; Thu, 23 Jul 2009 23:54:44 GMT (envelope-from gonzo@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NNsipq003128 for perforce@freebsd.org; Thu, 23 Jul 2009 23:54:44 GMT (envelope-from gonzo@FreeBSD.org) Date: Thu, 23 Jul 2009 23:54:44 GMT Message-Id: <200907232354.n6NNsipq003128@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko To: Perforce Change Reviews Cc: Subject: PERFORCE change 166484 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 23:54:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166484 Change 166484 by gonzo@gonzo_figaro on 2009/07/23 23:54:32 - More unused variables Affected files ... .. //depot/projects/avr32/src/sys/avr32/avr32/at32_hmatrix.c#2 edit Differences ... ==== //depot/projects/avr32/src/sys/avr32/avr32/at32_hmatrix.c#2 (text+ko) ==== @@ -65,6 +65,7 @@ //static void at32_hmatrix_dump_master(device_t, int); //static void at32_hmatrix_dump_slave(device_t, int); +#ifdef notyet /* Driver variables and private data */ static char *at32_hmatrix_master[HMATRIX_MAX_ENTRIES] = { "CPU Dcache", @@ -96,6 +97,8 @@ "LCDC config", "DMACA config", }; +#endif + struct at32_hmatrix_softc { struct resource *regs_res; int regs_rid; @@ -135,7 +138,8 @@ return (err); } -/* int i; +#ifdef notyet + int i; device_printf(dev, "CH Name Undefined Length Burst\n"); for (i = 0; i < HMATRIX_MAX_ENTRIES; i++) { @@ -149,7 +153,8 @@ if (at32_hmatrix_slave[i] != '\0') { at32_hmatrix_dump_slave(dev, i); } - } */ + } +#endif return (0); } @@ -199,7 +204,7 @@ devclk_disable(dev); } -#if 0 // Not jet +#ifdef notyet static void at32_hmatrix_dump_master(device_t dev, int i) { From owner-p4-projects@FreeBSD.ORG Fri Jul 24 03:45:57 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 294371065673; Fri, 24 Jul 2009 03:45:57 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D15A2106566C for ; Fri, 24 Jul 2009 03:45:56 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BE1F88FC23 for ; Fri, 24 Jul 2009 03:45:56 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O3juiv034446 for ; Fri, 24 Jul 2009 03:45:56 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O3ju0S034444 for perforce@freebsd.org; Fri, 24 Jul 2009 03:45:56 GMT (envelope-from pgj@FreeBSD.org) Date: Fri, 24 Jul 2009 03:45:56 GMT Message-Id: <200907240345.n6O3ju0S034444@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166485 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 03:45:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=166485 Change 166485 by pgj@petymeg-current on 2009/07/24 03:45:11 Add net.bpf.sstats, a streamed version of net.bpf.stats (as a read-only variable). This will be used by libnetstat(3) for live monitoring. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/sys/net/bpf.c#3 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/net/bpfdesc.h#2 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/sys/net/bpf.c#3 (text+ko) ==== @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -119,6 +120,7 @@ static int filt_bpfread(struct knote *, long); static void bpf_drvinit(void *); static int bpf_stats_sysctl(SYSCTL_HANDLER_ARGS); +static int bpf_sstats_sysctl(SYSCTL_HANDLER_ARGS); SYSCTL_NODE(_net, OID_AUTO, bpf, CTLFLAG_RW, 0, "bpf sysctl"); int bpf_maxinsns = BPF_MAXINSNS; @@ -129,6 +131,9 @@ &bpf_zerocopy_enable, 0, "Enable new zero-copy BPF buffer sessions"); SYSCTL_NODE(_net_bpf, OID_AUTO, stats, CTLFLAG_MPSAFE | CTLFLAG_RW, bpf_stats_sysctl, "bpf statistics portal"); +SYSCTL_PROC(_net_bpf, OID_AUTO, sstats, CTLFLAG_RD | CTLTYPE_STRUCT, + 0, 0, bpf_sstats_sysctl, "s,struct bpfd_data", + "bpf statistics portal (streamed)"); static d_open_t bpfopen; static d_read_t bpfread; @@ -2108,6 +2113,87 @@ return (error); } +static int +bpf_sstats_sysctl(SYSCTL_HANDLER_ARGS) +{ + int error, i, buflen; + char *buffer; + struct bpf_if *bp; + struct bpf_d *bd, **bd_list; + + struct bpfd_stream bps; + struct bpfd_data bpd; + struct sbuf sbuf; + + error = priv_check(req->td, PRIV_NET_BPF); + if (error != 0) + return (error); + + bzero(&bps, sizeof(bps)); + bps.bps_version = BPFD_STREAM_VERSION; + bps.bps_count = bpf_bpfd_cnt; + + bd_list = malloc(bps.bps_count * sizeof(*bd_list), M_TEMP, M_WAITOK); + if (bd_list == NULL) + return (ENOMEM); + + i = 0; + mtx_lock(&bpf_mtx); + LIST_FOREACH(bp, &bpf_iflist, bif_next) { + BPFIF_LOCK(bp); + LIST_FOREACH(bd, &bp->bif_dlist, bd_next) { + BPFD_LOCK(bd); + bd_list[i++] = bd; + BPFD_UNLOCK(bd); + } + BPFIF_UNLOCK(bp); + } + mtx_unlock(&bpf_mtx); + bps.bps_count = i; + + buflen = sizeof(bps) + bps.bps_count * sizeof(bpd) + 1; + buffer = malloc(buflen, M_TEMP, M_WAITOK | M_ZERO); + sbuf_new(&sbuf, buffer, buflen, SBUF_FIXEDLEN); + + if (sbuf_bcat(&sbuf, &bps, sizeof(bps)) < 0) { + error = ENOMEM; + goto out; + } + + for (i = 0; i < bps.bps_count; i++) { + bd = bd_list[i]; + bzero(&bpd, sizeof(bpd)); + BPFD_LOCK(bd); + bpd.bpd_promisc = bd->bd_promisc; + bpd.bpd_immediate = bd->bd_immediate; + bpd.bpd_hdrcmplt = bd->bd_hdrcmplt; + bpd.bpd_direction = bd->bd_direction; + bpd.bpd_feedback = bd->bd_feedback; + bpd.bpd_async = bd->bd_async; + bpd.bpd_locked = bd->bd_locked; + bpd.bpd_slen = bd->bd_slen; + bpd.bpd_hlen = bd->bd_hlen; + bpd.bpd_rcount = bd->bd_rcount; + bpd.bpd_dcount = bd->bd_dcount; + bpd.bpd_fcount = bd->bd_fcount; + bpd.bpd_pid = bd->bd_pid; + bcopy(bd->bd_bif->bif_ifp->if_xname, bpd.bpd_ifname, + sizeof(bpd.bpd_ifname)); + BPFD_UNLOCK(bd); + if (sbuf_bcat(&sbuf, &bpd, sizeof(bpd)) < 0) { + error = ENOMEM; + goto out; + } + } + + sbuf_finish(&sbuf); + error = SYSCTL_OUT(req, sbuf_data(&sbuf), sbuf_len(&sbuf)); +out: + free(bd_list, M_TEMP); + free(buffer, M_TEMP); + return (error); +} + SYSINIT(bpfdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE,bpf_drvinit,NULL); #else /* !DEV_BPF && !NETGRAPH_BPF */ ==== //depot/projects/soc2009/pgj_libstat/src/sys/net/bpfdesc.h#2 (text+ko) ==== @@ -147,4 +147,34 @@ #define BPFIF_LOCK(bif) mtx_lock(&(bif)->bif_mtx) #define BPFIF_UNLOCK(bif) mtx_unlock(&(bif)->bif_mtx) +/* + * Structures for exporting BPF statistics for user-space monitoring tools. + */ + +#define BPFD_STREAM_VERSION 0x00000001 + +struct bpfd_stream { + u_int32_t bps_version; + u_int64_t bps_count; + u_int8_t _bps_pad[4]; +}; + +struct bpfd_data { + u_int8_t bpd_promisc; + u_int8_t bpd_immediate; + u_int8_t bpd_hdrcmplt; + u_int8_t bpd_direction; + u_int8_t bpd_feedback; + u_int8_t bpd_async; + u_int8_t bpd_locked; + u_int32_t bpd_slen; + u_int32_t bpd_hlen; + u_int64_t bpd_rcount; + u_int64_t bpd_dcount; + u_int64_t bpd_fcount; + u_int32_t bpd_pid; + char bpd_ifname[16]; /* IFNAMSIZ */ + u_int8_t _bpd_pad[5]; +}; + #endif From owner-p4-projects@FreeBSD.ORG Fri Jul 24 03:51:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 80FF11065672; Fri, 24 Jul 2009 03:51:02 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40EF7106566C for ; Fri, 24 Jul 2009 03:51:02 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 2DDE38FC17 for ; Fri, 24 Jul 2009 03:51:02 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O3p2BD034948 for ; Fri, 24 Jul 2009 03:51:02 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O3p2JQ034946 for perforce@freebsd.org; Fri, 24 Jul 2009 03:51:02 GMT (envelope-from pgj@FreeBSD.org) Date: Fri, 24 Jul 2009 03:51:02 GMT Message-Id: <200907240351.n6O3p2JQ034946@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166486 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 03:51:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=166486 Change 166486 by pgj@petymeg-current on 2009/07/24 03:50:21 Add support for retrieving statistics on bpf(4) peers to libnetstat(3): - It both features monitoring via sysctl(8) [net.bpf.sstats], and information extraction from kernel memory images via kvm(3). - New abstraction: bpf_type (BPF descriptor). Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#12 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#32 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_bpf.c#1 add .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#30 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#36 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#12 (text+ko) ==== @@ -3,7 +3,8 @@ .include LIB= netstat -SRCS= netstat_socket.c netstat_mbuf.c netstat_if.c netstat_util.c +SRCS= netstat_socket.c netstat_mbuf.c netstat_if.c netstat_bpf.c \ + netstat_util.c INCS= netstat.h ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#32 (text+ko) ==== @@ -41,6 +41,8 @@ #define IFTYPE_MAXNAME 32 #define IFTYPE_MAXADDRCNT 8 +#define BPFTYPE_MAXNAME IFNAMSIZ + #define NETSTAT_ERROR_UNDEFINED 0 #define NETSTAT_ERROR_NOMEMORY 1 #define NETSTAT_ERROR_VERSION 2 @@ -60,9 +62,21 @@ #define NETSTAT_INTERFACE_KVM 0x01 #define NETSTAT_INTERFACE_ALL 0x02 +/* netstat_bpf(): */ +#define NETSTAT_BPF_KVM 0x01 + /* Testing flags for interface_type: */ #define NETSTAT_IF_UP 0x01 /* interface is up */ +/* Flags for bpf_type: */ +#define NETSTAT_BPF_PROMISC 0x01 /* if listening prmoiscuously */ +#define NETSTAT_BPF_IMMEDIATE 0x02 /* return on packet arrival */ +#define NETSTAT_BPF_HDRCMPLT 0x04 /* fill in src lladdr automatically */ +#define NETSTAT_BPF_FEEDBACK 0x08 /* feed back sent packets */ +#define NETSTAT_BPF_ASYNC 0x10 /* packet reception should generate signal */ +#define NETSTAT_BPF_LOCKED 0x20 /* descriptor is locked */ + + /* Enum for TCP states: */ enum tcp_state { tcps_Closed, @@ -88,6 +102,14 @@ layer_MAX, }; +enum bpf_dir { + bpfdir_Invalid, + bpfdir_In, + bpfdir_Out, + bpfdir_InOut, + bpfdir_MAX, +}; + struct socket_type; struct sockaddr_type; struct sockbuf_type; @@ -104,6 +126,9 @@ struct interface_type_list; struct interface_type_iterator; +struct bpf_type; +struct bpf_type_list; +struct bpf_type_iterator; __BEGIN_DECLS const char *netstat_strerror(int); @@ -244,6 +269,7 @@ u_int64_t netstat_ft_get_mcasts(const struct face_type *); u_int64_t netstat_ft_get_errors(const struct face_type *); +/* Interface addresses: */ int netstat_iat_get_family(const struct intfaddr_type *); const char *netstat_iat_get_address(const struct intfaddr_type *, int numeric); const char *netstat_iat_get_network(const struct intfaddr_type *, int numeric); @@ -254,6 +280,30 @@ u_int64_t netstat_iat_get_obytes(const struct intfaddr_type *); u_int32_t netstat_iat_get_refcount(const struct intfaddr_type *); -/* Interface addresses: */ +/* BPF peers: */ +struct bpf_type_list *netstat_bptl_alloc(void); +void netstat_bptl_free(struct bpf_type_list *); +int netstat_bptl_geterror(const struct bpf_type_list *); +int netstat_bptl_length(const struct bpf_type_list *); + +int netstat_bpti_alloc(struct bpf_type_list *list, + struct bpf_type_iterator **iterator); +const struct bpf_type *netstat_bpti_first(struct bpf_type_iterator *); +const struct bpf_type *netstat_bpti_next(struct bpf_type_iterator *); +void netstat_bpti_free(struct bpf_type_iterator *); +void netstat_bpt_free(struct bpf_type *); + +int netstat_bpf(const char *name, struct bpf_type_list *list, int flags, + void *kvm_handle); +int netstat_bpt_get_flags(const struct bpf_type *); +enum bpf_dir netstat_bpt_get_direction(const struct bpf_type *); +u_int32_t netstat_bpt_get_pid(const struct bpf_type *); +const char *netstat_bpt_get_ifname(const struct bpf_type *); +u_int64_t netstat_bpt_get_recv(const struct bpf_type *); +u_int64_t netstat_bpt_get_drop(const struct bpf_type *); +u_int64_t netstat_bpt_get_match(const struct bpf_type *); +u_int64_t netstat_bpt_get_slen(const struct bpf_type *); +u_int64_t netstat_bpt_get_hlen(const struct bpf_type *); +const char *netstat_bpt_get_pidname(const struct bpf_type *); #endif /* !_NETSTAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#30 (text+ko) ==== @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -240,6 +241,35 @@ struct interface_type *iti_next; }; +/* Berkeley Packet Filter (descriptor). */ +struct bpf_type { + int bpt_flags; + u_int32_t bpt_slen; /* current length of store buffer */ + u_int32_t bpt_hlen; /* current length of hold buffer */ + u_int64_t bpt_recv; /* number of packets received */ + u_int64_t bpt_drop; /* number of packets dropped */ + u_int64_t bpt_match; /* number of packets which matched + filter */ + u_int32_t bpt_pid; /* PID which created descriptor */ + char *bpt_pidname; + enum bpf_dir bpt_direction; /* select packet direction */ + char bpt_ifname[BPFTYPE_MAXNAME]; /* interface name */ + + LIST_ENTRY(bpf_type) bpt_list; +}; + +struct bpf_type_list { + LIST_HEAD(, bpf_type) bptl_list; + int bptl_length; + int bptl_error; +}; + +struct bpf_type_iterator { + struct bpf_type_list *bpti_list; + struct bpf_type *bpti_first; + struct bpf_type *bpti_next; +}; + int kread_data(kvm_t *kvm, u_long kvm_pointer, void *address, size_t size); int kread_string(kvm_t *kvm, u_long kvm_pointer, char *buffer, int buflen); @@ -261,6 +291,9 @@ int type, int physical, const char *name); struct intfaddr_type *_netstat_iat_allocate(int family, int type); +void _netstat_bptl_empty(struct bpf_type_list *list); +struct bpf_type *_netstat_bpt_allocate(struct bpf_type_list *list, + const char *ifname); /* XXX: merge these into a common address resolution routine. */ const char *routename(in_addr_t in, int numeric); ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#36 (text+ko) ==== @@ -1026,6 +1026,181 @@ return (iatp->iat_refcount); } +void +_netstat_bptl_empty(struct bpf_type_list *list) +{ + struct bpf_type *btp; + + while ((btp = LIST_FIRST(&list->bptl_list))) { + LIST_REMOVE(btp, bpt_list); + netstat_bpt_free(btp); + } + + list->bptl_length = 0; +} + +struct bpf_type * +_netstat_bpt_allocate(struct bpf_type_list *list, const char *ifname) +{ + struct bpf_type *btp; + + btp = malloc(sizeof(*btp)); + if (btp == NULL) + return (NULL); + + bzero(btp, sizeof(*btp)); + strlcpy(btp->bpt_ifname, ifname, BPFTYPE_MAXNAME); + LIST_INSERT_HEAD(&list->bptl_list, btp, bpt_list); + list->bptl_length += 1; + return (btp); +} + +struct bpf_type_list * +netstat_bptl_alloc(void) +{ + struct bpf_type_list *btlp; + + btlp = malloc(sizeof(*btlp)); + if (btlp == NULL) + return (NULL); + + LIST_INIT(&btlp->bptl_list); + btlp->bptl_error = NETSTAT_ERROR_UNDEFINED; + btlp->bptl_length = 0; + return (btlp); +} + +void +netstat_bptl_free(struct bpf_type_list *list) +{ + _netstat_bptl_empty(list); + free(list); +} + +int +netstat_bptl_geterror(const struct bpf_type_list *list) +{ + return (list->bptl_error); +} + +int +netstat_bptl_length(const struct bpf_type_list *list) +{ + return (list->bptl_length); +} + +int +netstat_bpti_alloc(struct bpf_type_list *list, + struct bpf_type_iterator **iterator) +{ + struct bpf_type_iterator *btp; + + btp = malloc(sizeof(*btp)); + if (btp == NULL) + return (-1); + + bzero(btp, sizeof(*btp)); + btp->bpti_list = list; + btp->bpti_first = LIST_FIRST(&list->bptl_list); + if (btp->bpti_first != NULL) + btp->bpti_next = LIST_NEXT(btp->bpti_first, bpt_list); + *iterator = btp; + return (0); +} + +const struct bpf_type * +netstat_bpti_first(struct bpf_type_iterator *btip) +{ + if (btip->bpti_first != NULL) + btip->bpti_next = LIST_NEXT(btip->bpti_first, bpt_list); + return (btip->bpti_first); +} + +const struct bpf_type * +netstat_bpti_next(struct bpf_type_iterator *btip) +{ + const struct bpf_type *btp; + + btp = btip->bpti_next; + if (btip->bpti_next != NULL) + btip->bpti_next = LIST_NEXT(btip->bpti_next, bpt_list); + + return (btp); +} + +void +netstat_bpti_free(struct bpf_type_iterator *btip) +{ + free(btip); +} + +void +netstat_bpt_free(struct bpf_type *btp) +{ + free(btp->bpt_pidname); + free(btp); +} + +int +netstat_bpt_get_flags(const struct bpf_type *btp) +{ + return (btp->bpt_flags); +} + +enum bpf_dir +netstat_bpt_get_direction(const struct bpf_type *btp) +{ + return (btp->bpt_direction); +} + +u_int32_t +netstat_bpt_get_pid(const struct bpf_type *btp) +{ + return (btp->bpt_pid); +} + +const char * +netstat_bpt_get_ifname(const struct bpf_type *btp) +{ + return (btp->bpt_ifname); +} + +u_int64_t +netstat_bpt_get_recv(const struct bpf_type *btp) +{ + return (btp->bpt_recv); +} + +u_int64_t +netstat_bpt_get_drop(const struct bpf_type *btp) +{ + return (btp->bpt_drop); +} + +u_int64_t +netstat_bpt_get_match(const struct bpf_type *btp) +{ + return (btp->bpt_match); +} + +u_int64_t +netstat_bpt_get_slen(const struct bpf_type *btp) +{ + return (btp->bpt_slen); +} + +u_int64_t +netstat_bpt_get_hlen(const struct bpf_type *btp) +{ + return (btp->bpt_hlen); +} + +const char * +netstat_bpt_get_pidname(const struct bpf_type *btp) +{ + return (btp->bpt_pidname); +} + const char * routename(in_addr_t in, int numeric) { From owner-p4-projects@FreeBSD.ORG Fri Jul 24 03:53:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D0F5B1065670; Fri, 24 Jul 2009 03:53:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 90FA2106564A for ; Fri, 24 Jul 2009 03:53:04 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7DD498FC17 for ; Fri, 24 Jul 2009 03:53:04 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O3r4i2035059 for ; Fri, 24 Jul 2009 03:53:04 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O3r4uF035057 for perforce@freebsd.org; Fri, 24 Jul 2009 03:53:04 GMT (envelope-from pgj@FreeBSD.org) Date: Fri, 24 Jul 2009 03:53:04 GMT Message-Id: <200907240353.n6O3r4uF035057@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166487 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 03:53:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=166487 Change 166487 by pgj@petymeg-current on 2009/07/24 03:52:18 Modify netstat(1) to use libnetstat(3) for displaying bpf(4) statistics. Since libnetstat(3) includes kvm(3) support, -M flag also works for -B now :) Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/bpf.c#3 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#9 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#16 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/bpf.c#3 (text+ko) ==== @@ -1,5 +1,6 @@ /*- * Copyright (c) 2005 Christian S.J. Peron + * Copyright (c) 2009 Gabor Pali * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -28,108 +29,85 @@ __FBSDID("$FreeBSD: src/usr.bin/netstat/bpf.c,v 1.11 2008/03/24 13:50:39 csjp Exp $"); #include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include #include -#include -#include +#include #include #include -#include -#include - +#include #include "extern.h" -/* print bpf stats */ - -static char * -bpf_pidname(pid_t pid) -{ - struct kinfo_proc newkp; - int error, mib[4]; - size_t size; - - mib[0] = CTL_KERN; - mib[1] = KERN_PROC; - mib[2] = KERN_PROC_PID; - mib[3] = pid; - size = sizeof(newkp); - error = sysctl(mib, 4, &newkp, &size, NULL, 0); - if (error < 0) { - warn("kern.proc.pid failed"); - return (strdup("??????")); - } - return (strdup(newkp.ki_comm)); -} - static void -bpf_flags(struct xbpf_d *bd, char *flagbuf) +bpf_flags(const struct bpf_type *btp, char *flagbuf) { + int flags; - *flagbuf++ = bd->bd_promisc ? 'p' : '-'; - *flagbuf++ = bd->bd_immediate ? 'i' : '-'; - *flagbuf++ = bd->bd_hdrcmplt ? '-' : 'f'; - *flagbuf++ = (bd->bd_direction == BPF_D_IN) ? '-' : - ((bd->bd_direction == BPF_D_OUT) ? 'o' : 's'); - *flagbuf++ = bd->bd_feedback ? 'b' : '-'; - *flagbuf++ = bd->bd_async ? 'a' : '-'; - *flagbuf++ = bd->bd_locked ? 'l' : '-'; + flags = netstat_bpt_get_flags(btp); + *flagbuf++ = flags & NETSTAT_BPF_PROMISC ? 'p' : '-'; + *flagbuf++ = flags & NETSTAT_BPF_IMMEDIATE ? 'i' : '-'; + *flagbuf++ = flags & NETSTAT_BPF_HDRCMPLT ? '-' : 'f'; + *flagbuf++ = (netstat_bpt_get_direction(btp) == bpfdir_In) ? '-' : + ((netstat_bpt_get_direction(btp) == bpfdir_Out) ? 'o' : 's'); + *flagbuf++ = flags & NETSTAT_BPF_FEEDBACK ? 'b' : '-'; + *flagbuf++ = flags & NETSTAT_BPF_ASYNC ? 'a' : '-'; + *flagbuf++ = flags & NETSTAT_BPF_LOCKED ? 'l' : '-'; *flagbuf++ = '\0'; } +/* print bpf stats */ void -bpf_stats(char *ifname) +bpf_stats(char *ifname, void *kvmd) { - struct xbpf_d *d, *bd; - char *pname, flagbuf[12]; - size_t size; + struct bpf_type_list *bptlp; + struct bpf_type_iterator *bptip = NULL; + + const struct bpf_type *bptp; + + int bpt_flags, error; + char flagbuf[12]; + kvm_t *kvm; + + kvm = (kvm_t *)kvmd; + bpt_flags = 0; + if (kvmd != NULL) + bpt_flags |= NETSTAT_BPF_KVM; - if (sysctlbyname("net.bpf.stats", NULL, &size, - NULL, 0) < 0) { - warn("net.bpf.stats"); + bptlp = netstat_bptl_alloc(); + if (bptlp == NULL) { + warn("netstat_btl_alloc()"); return; } - if (size == 0) - return; - bd = malloc(size); - if (bd == NULL) { - warn("malloc failed"); - return; + + if (netstat_bpf(ifname, bptlp, bpt_flags, kvm)) { + error = netstat_bptl_geterror(bptlp); + if (error == NETSTAT_ERROR_KVM) { + warnx("netstat_bpf: %s", kvm_geterr(kvm)); + } else { + warnx("netstat_bpf: %s", netstat_strerror(error)); + } + goto out; } - if (sysctlbyname("net.bpf.stats", bd, &size, - NULL, 0) < 0) { - warn("net.bpf.stats"); - free(bd); - return; + + if (netstat_bpti_alloc(bptlp, &bptip) < 0) { + warn("netstat_bti_alloc()"); + goto out; } + (void) printf("%5s %6s %7s %9s %9s %9s %5s %5s %s\n", "Pid", "Netif", "Flags", "Recv", "Drop", "Match", "Sblen", "Hblen", "Command"); - for (d = &bd[0]; d < &bd[size / sizeof(*d)]; d++) { - if (d->bd_structsize != sizeof(*d)) { - warnx("bpf_stats_extended: version mismatch"); - return; - } - if (ifname && strcmp(ifname, d->bd_ifname) != 0) - continue; - bpf_flags(d, flagbuf); - pname = bpf_pidname(d->bd_pid); - (void) printf("%5d %6s %7s %9ju %9ju %9ju %5d %5d %s\n", - d->bd_pid, d->bd_ifname, flagbuf, - d->bd_rcount, d->bd_dcount, d->bd_fcount, - d->bd_slen, d->bd_hlen, pname); - free(pname); + for (bptp = netstat_bpti_first(bptip); bptp != NULL; + bptp = netstat_bpti_next(bptip)) { + bpf_flags(bptp, flagbuf); + (void) printf("%5d %6s %7s %9ju %9ju %9ju %5ju %5ju %s\n", + netstat_bpt_get_pid(bptp), netstat_bpt_get_ifname(bptp), + flagbuf, netstat_bpt_get_recv(bptp), + netstat_bpt_get_drop(bptp), netstat_bpt_get_match(bptp), + netstat_bpt_get_slen(bptp), netstat_bpt_get_hlen(bptp), + netstat_bpt_get_pidname(bptp)); } - free(bd); +out: + if (bptip != NULL) + netstat_bpti_free(bptip); + netstat_bptl_free(bptlp); } ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#9 (text+ko) ==== @@ -167,4 +167,4 @@ void mroutepr(u_long, u_long, u_long); void mrt_stats(u_long); -void bpf_stats(char *); +void bpf_stats(char *, void *); ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#16 (text+ko) ==== @@ -473,8 +473,8 @@ if (Bflag) { if (!live) - usage(); - bpf_stats(interface); + kread(0, NULL, 0); + bpf_stats(interface, kvmd); exit(0); } if (mflag) { From owner-p4-projects@FreeBSD.ORG Fri Jul 24 04:30:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 343751065674; Fri, 24 Jul 2009 04:30:46 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E03741065673 for ; Fri, 24 Jul 2009 04:30:45 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B33518FC0C for ; Fri, 24 Jul 2009 04:30:45 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O4UjAT038725 for ; Fri, 24 Jul 2009 04:30:45 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O4Ujei038723 for perforce@freebsd.org; Fri, 24 Jul 2009 04:30:45 GMT (envelope-from jona@FreeBSD.org) Date: Fri, 24 Jul 2009 04:30:45 GMT Message-Id: <200907240430.n6O4Ujei038723@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166488 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 04:30:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=166488 Change 166488 by jona@jona-trustedbsd-belle-vmware on 2009/07/24 04:29:44 Make output consistent, added a simple regression test Affected files ... .. //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#6 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/tools/cap/sandbox_qt/sandbox_qt.cpp#6 (text+ko) ==== @@ -118,13 +118,6 @@ QApplication app(argc, argv); - cout << "host:\t\tReading from /etc/passwd using normal open()..." << endl; - QFile passwd("/etc/passwd"); - if(!passwd.open(QIODevice::ReadOnly | QIODevice::Text)) - err(EX_IOERR, "Error opening /etc/passwd"); - - cout << passwd.readLine().data() << endl; - int my_fd = open(argv[0], O_RDONLY); char *sargv[2] = { (char*) "sandbox_qt", NULL }; struct lc_sandbox *sandbox; @@ -265,6 +258,18 @@ fflush(stdout); + printf("sandbox:\tOpening /etc/passwd directly... "); + fflush(stdout); + + int tmp = open("/etc/passwd", O_RDONLY); + if((tmp != -1) || (errno != ENOSYS)) + err(-1, "Was able to open /etc/passwd directly from sandbox"); + else + printf("ENOSYS (sandbox working!)\n"); + fflush(stdout); + + + // get a file descriptor for our host struct lc_host *lchpp; if(lcs_get(&lchpp) < 0) err(EX_IOERR, "Error getting lc_host"); @@ -379,8 +384,8 @@ char buf[80]; bzero(buf, 80); - if(read(fd, buf, 50) < 0) perror("Error reading /etc/passwd"); - else printf("Read from /etc/passwd: "); + if(read(fd, buf, 35) < 0) perror("Error reading /etc/passwd"); + else printf("sandbox:\tRead from /etc/passwd: "); puts(buf); fflush(stdout); @@ -389,21 +394,20 @@ if(!f) err(EX_IOERR, "Error opening passwd via angel"); bzero(buf, 80); - if(!fgets(buf, 55, f) < 0) perror("Error reading /etc/passwd"); - else printf("Read from /etc/passwd: "); + if(!fgets(buf, 36, f) < 0) perror("Error reading /etc/passwd"); + else printf("sandbox:\tRead from /etc/passwd: "); puts(buf); fflush(stdout); - printf("Reading via QFile...\n"); + printf("sandbox:\tReading /etc/group via QFile:\n"); fflush(stdout); QFile group("/etc/group"); if(!group.open(QIODevice::ReadOnly | QIODevice::Text)) err(EX_IOERR, "Error opening /etc/group"); - printf("Filename: %s\n", group.fileName().toStdString().c_str()); - printf("Data: %s\n", group.readLine().data()); + printf("\t\t%s\n", group.readLine().data()); fflush(stdout); From owner-p4-projects@FreeBSD.ORG Fri Jul 24 06:19:45 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1EC24106567B; Fri, 24 Jul 2009 06:19:45 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D15B61065679 for ; Fri, 24 Jul 2009 06:19:44 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BF9668FC0A for ; Fri, 24 Jul 2009 06:19:44 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O6JiTQ058404 for ; Fri, 24 Jul 2009 06:19:44 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O6JifL058402 for perforce@freebsd.org; Fri, 24 Jul 2009 06:19:44 GMT (envelope-from alepulver@freebsd.org) Date: Fri, 24 Jul 2009 06:19:44 GMT Message-Id: <200907240619.n6O6JifL058402@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 166489 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 06:19:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=166489 Change 166489 by alepulver@alepulver_deimos on 2009/07/24 06:19:18 - Add entries to UIDs/GIDs. - Add missing @dirrmtry etc/fossology to pkg-plist. - Avoid installing 2 files in /etc (for Linux only). - Use USE_CDRTOOLS instead of direct dependency. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#5 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#5 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/Makefile#6 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/files/patch-db__Makefile#1 add .. //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/pkg-plist#5 edit Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#5 (text+ko) ==== @@ -132,6 +132,7 @@ openacs:*:820: dotlrn:*:821: netdisco:*:840: +fossy:*:901:www bacula:*:910: iserv:*:911: _relayd:*:913: ==== //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#5 (text+ko) ==== @@ -142,6 +142,7 @@ openacs:*:820:820::0:0:OpenACS Daemon User:/nonexistent:/usr/sbin/nologin dotlrn:*:821:821::0:0:.LRN Daemon User:/nonexistent:/usr/sbin/nologin netdisco:*:840:840::0:0:netdisco daemon:/nonexistent:/usr/sbin/nologin +fossy:*:901:901::0:0:FOSSology user:/usr/local/share/fossology:/usr/local/bin/bash bacula:*:910:910::0:0:Bacula Daemon:/var/db/bacula:/usr/sbin/nologin iserv:*:911:911::0:0:Iserv Daemon:/nonexistent:/usr/sbin/nologin _sj3:*:912:912::0:0:SJ3 Daemon:/nonexistent:/usr/sbin/nologin ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/Makefile#6 (text+ko) ==== @@ -14,6 +14,7 @@ # - Add status command to rc.d script (run through "daemon -p ..."). # - Make it shm_open in /var/tmp from lockfs.c rather than changing # current directory. +# - Add crontab entry for postgres db optimizations? # PORTNAME= fossology @@ -30,7 +31,6 @@ LIB_DEPENDS= extractor.2:${PORTSDIR}/textproc/libextractor RUN_DEPENDS= cabextract:${PORTSDIR}/archivers/cabextract \ icat:${PORTSDIR}/sysutils/sleuthkit \ - isoinfo:${PORTSDIR}/sysutils/cdrtools \ pdftotext:${PORTSDIR}/graphics/xpdf \ rpm2cpio:${PORTSDIR}/archivers/rpm4 \ upx:${PORTSDIR}/archivers/upx \ @@ -40,6 +40,7 @@ wget:${PORTSDIR}/ftp/wget USE_APACHE= 2.0+ +USE_CDRTOOLS= yes USE_GMAKE= yes USE_GNOME= libxml2 USE_PERL5= yes @@ -99,6 +100,9 @@ @${REINPLACE_CMD} -e 's|daemon(0,|daemon(1,|' \ ${WRKSRC}/scheduler/scheduler.c \ ${WRKSRC}/scheduler/fo_watchdog.c +# Do not install init.d script (we use our own) + @${REINPLACE_CMD} -Ee 's|^(install: all) install-init|\1|' \ + ${WRKSRC}/scheduler/Makefile pre-install: @${MKDIR} ${PREFIX}/lib/fossology/agents ${DATADIR}/php ==== //depot/projects/soc2008/alepulver-portslicense/ports/devel/fossology/pkg-plist#5 (text+ko) ==== @@ -966,3 +966,4 @@ %%PORTDOCS%%@dirrm %%DOCSDIR%% @dirrm lib/fossology/agents @dirrm lib/fossology +@dirrmtry etc/fossology From owner-p4-projects@FreeBSD.ORG Fri Jul 24 09:08:50 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 24FF31065670; Fri, 24 Jul 2009 09:08:49 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A9A8106566C for ; Fri, 24 Jul 2009 09:08:49 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6F89E8FC1A for ; Fri, 24 Jul 2009 09:08:49 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6O98nvi083623 for ; Fri, 24 Jul 2009 09:08:49 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6O98nx7083621 for perforce@freebsd.org; Fri, 24 Jul 2009 09:08:49 GMT (envelope-from andre@freebsd.org) Date: Fri, 24 Jul 2009 09:08:49 GMT Message-Id: <200907240908.n6O98nx7083621@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166491 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 09:08:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=166491 Change 166491 by andre@andre_t61 on 2009/07/24 09:08:32 Pass the header length to tcp_reass() so we can drop it there. Adjust KASSERT's. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_input.c#16 edit .. //depot/projects/tcp_reass/netinet/tcp_reass.c#48 edit .. //depot/projects/tcp_reass/netinet/tcp_var.h#23 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_input.c#16 (text+ko) ==== @@ -1999,7 +1999,7 @@ * later; if not, do so now to pass queued data to user. */ if (tlen == 0 && (thflags & TH_FIN) == 0) - (void)tcp_reass(tp, NULL, 0, NULL); + (void)tcp_reass(tp, NULL, NULL, 0, 0); tp->snd_wl1 = th->th_seq - 1; /* FALLTHROUGH */ @@ -2591,7 +2591,7 @@ /* * NB: tcp_reass() always consumes the mbuf chain. */ - thflags = tcp_reass(tp, th, tlen, m); + thflags = tcp_reass(tp, th, m, tlen, drop_hdrlen); tp->t_flags |= TF_ACKNOW; } #ifdef INVARIANTS ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#48 (text+ko) ==== @@ -276,7 +276,7 @@ * the queue or by freeing it. */ int -tcp_reass(struct tcpcb *tp, struct tcphdr *th, int len, struct mbuf *m) +tcp_reass(struct tcpcb *tp, struct tcphdr *th, struct mbuf *m, int len, int hlen) { int thflags = 0; tcp_seq th_seq; @@ -303,8 +303,10 @@ KASSERT(th != NULL, ("%s: th is NULL", __func__)); KASSERT(m != NULL, ("%s: m is NULL", __func__)); - KASSERT(len == m_length(m, NULL), - ("%s: tlen != mbuf length", __func__)); + KASSERT(len + hlen == m_length(m, NULL), + ("%s: len + hlen != mbuf length", __func__)); + KASSERT(hlen <= m_length(m, NULL), + ("%s: hlen > mbuf length", __func__)); /* * Store TCP header information in local variables as @@ -387,6 +389,7 @@ * Compact mbuf chain. */ m_demote(m, 1); + m_adj(m, hlen); m = m_trimhead(m); if (tcp_reass_spacetime && m->m_next != NULL) m = m_collapse(m, M_DONTWAIT, 1024); ==== //depot/projects/tcp_reass/netinet/tcp_var.h#23 (text+ko) ==== @@ -649,7 +649,7 @@ void tcp_fini(void *); char *tcp_log_addrs(struct in_conninfo *, struct tcphdr *, void *, const void *); -int tcp_reass(struct tcpcb *, struct tcphdr *, int, struct mbuf *); +int tcp_reass(struct tcpcb *, struct tcphdr *, struct mbuf *, int, int); void tcp_reass_init(void); int tcp_reass_sack(struct tcpcb *, u_char *, int); void tcp_reass_flush(struct tcpcb *); From owner-p4-projects@FreeBSD.ORG Fri Jul 24 14:51:58 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 022221065677; Fri, 24 Jul 2009 14:51:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5148106564A; Fri, 24 Jul 2009 14:51:57 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 87B668FC08; Fri, 24 Jul 2009 14:51:57 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 40A2D46B90; Fri, 24 Jul 2009 10:51:57 -0400 (EDT) Received: from jhbbsd.hudson-trading.com (unknown [209.249.190.8]) by bigwig.baldwin.cx (Postfix) with ESMTPA id 51BFA8A0A3; Fri, 24 Jul 2009 10:51:56 -0400 (EDT) From: John Baldwin To: Jonathan Anderson Date: Fri, 24 Jul 2009 09:43:08 -0400 User-Agent: KMail/1.9.7 References: <200907230537.n6N5bfaM064484@repoman.freebsd.org> In-Reply-To: <200907230537.n6N5bfaM064484@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200907240943.08676.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Fri, 24 Jul 2009 10:51:56 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00,RDNS_NONE autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 166430 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 14:51:58 -0000 On Thursday 23 July 2009 1:37:41 am Jonathan Anderson wrote: > http://perforce.freebsd.org/chv.cgi?CH=166430 > > Change 166430 by jona@jona-trustedbsd-belle-vmware on 2009/07/23 05:36:50 > > mmap() can fail and return MAP_FAILED, not just NULL\! MAP_FAILED is actually the only invalid pointer it will return. This should probably not be checking for NULL. -- John Baldwin From owner-p4-projects@FreeBSD.ORG Fri Jul 24 16:13:35 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8AB601065673; Fri, 24 Jul 2009 16:13:35 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2B422106566C for ; Fri, 24 Jul 2009 16:13:35 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1900F8FC0A for ; Fri, 24 Jul 2009 16:13:35 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6OGDYqU032183 for ; Fri, 24 Jul 2009 16:13:34 GMT (envelope-from rene@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6OGDYpd032181 for perforce@freebsd.org; Fri, 24 Jul 2009 16:13:34 GMT (envelope-from rene@FreeBSD.org) Date: Fri, 24 Jul 2009 16:13:34 GMT Message-Id: <200907241613.n6OGDYpd032181@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rene@FreeBSD.org using -f From: Rene Ladan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166513 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 16:13:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=166513 Change 166513 by rene@rene_self on 2009/07/24 16:13:05 IFC Affected files ... .. //depot/projects/docproj_nl/en_US.ISO8859-1/articles/linux-emulation/article.sgml#2 integrate .. //depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sgml#38 integrate .. //depot/projects/docproj_nl/www/en/donations/wantlist.sgml#12 integrate Differences ... ==== //depot/projects/docproj_nl/en_US.ISO8859-1/articles/linux-emulation/article.sgml#2 (text+ko) ==== @@ -1,4 +1,4 @@ - + rdivacky_linuxolator + The same happened with the rdivacky_linuxolator branch where development of this thesis code was going on. More info about the &os; operating system can be found ==== //depot/projects/docproj_nl/en_US.ISO8859-1/books/porters-handbook/book.sgml#38 (text+ko) ==== @@ -1,7 +1,7 @@ <entry>2010-07-13</entry> - <modified>2010-09-17</entry> + <modified>2010-09-17</modified> </dates> </vuln> ==== //depot/projects/docproj_nl/www/en/donations/wantlist.sgml#12 (text+ko) ==== @@ -1,6 +1,6 @@ - + @@ -28,10 +28,7 @@ testing and improving our Sparc port. Even small, old (or new!) Sparc64 machines are perfectly usable. No matter which country you're in, we almost certainly have someone local who - could use it. We could specifically use 1U rack-mounted Sparcs - (such as E220R, E420R, Fire V100, Fire V120, or Netra T1 AC200) - for our development and package-building clusters in the - USA.

+ could use it.

@@ -266,7 +263,29 @@ but I only have access to an ISAN PCIIA controller. - + + + + + + + + + + + + From owner-p4-projects@FreeBSD.ORG Fri Jul 24 16:26:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0B9E11065673; Fri, 24 Jul 2009 16:26:50 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE14D106564A for ; Fri, 24 Jul 2009 16:26:49 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A0F3D8FC1B for ; Fri, 24 Jul 2009 16:26:49 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6OGQnHN033122 for ; Fri, 24 Jul 2009 16:26:49 GMT (envelope-from rene@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6OGQnZY033120 for perforce@freebsd.org; Fri, 24 Jul 2009 16:26:49 GMT (envelope-from rene@FreeBSD.org) Date: Fri, 24 Jul 2009 16:26:49 GMT Message-Id: <200907241626.n6OGQnZY033120@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rene@FreeBSD.org using -f From: Rene Ladan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166514 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 16:26:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=166514 Change 166514 by rene@rene_self on 2009/07/24 16:26:23 MFen handbook/virtualization 1.17 -> 1.19 Somehow my local build does not recognize the &virtualbox; entity, although it is in trademarks.ent Affected files ... .. //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.sgml#9 edit Differences ... ==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.sgml#9 (text+ko) ==== @@ -4,7 +4,7 @@ $FreeBSD: doc/nl_NL.ISO8859-1/books/handbook/virtualization/chapter.sgml,v 1.4 2008/09/15 19:30:44 remko Exp $ %SOURCE% en_US.ISO8859-1/books/handbook/virtualization/chapter.sgml - %SRCID% 1.17 + %SRCID% 1.19 --> @@ -995,12 +995,118 @@ &os; als een gastheer-besturingssysteem - &os; wordt momenteel niet officieel ondersteund als - gastheer-besturingssysteem door virtualisatiepakketten, - maar veel mensen gebruiken hiervoor oudere versies van - VMware. Er wordt ook gewerkt om - &xen; als gastheeromgeving voor &os; - werkend te krijgen. + Voor een aantal jaren werd &os; niet officieel ondersteund als een + gastheer-besturingssysteem door de beschikbare virtualisatiepakketten. + Sommige mensen gebruikten oudere en meestal overbodige versies van + VMware (zoals emulators/vmware3), die gebruik maakten van + de &linux; binaire compatibiliteitslaag. Kort na de uitgave van + &os; 7.2 verscheen de Open Source Edition (OSE) + van Suns &virtualbox; in de + Ports; Collectie als een programma dat voor &os; zelf bedoeld + is. + + &virtualbox; is een actief ontwikkeld en + compleet virtualisatiepakket dat beschikbaar is voor de meeste + besturingssystemen waaronder &windows;, &macos;, &linux; en &os;. Het kan + evengoed &windows; of &unix; als gast draaien. Het komt in twee smaken, + een opensource en een gesloten editie. Voor de gebruiker is de grootste + beperking van de OSE waarschijnlijk het gebrek aan + ondersteuning voor USB. Andere verschillen kunnen op de pagina + Editions van de wiki van + &virtualbox; op gevonden worden. + Momenteel is alleen de OSE beschikbaar voor &os;. + + + &virtualbox; installeren + + &virtualbox; is beschikbaar als een + &os;-port in emulators/virtualbox en + kan met de volgende commando's geïnstalleerd worden: + + &prompt.root; cd /usr/ports/emulators/virtualbox +&prompt.root; make install clean + + Een nuttige optie in het configuratiescherm is de verzameling + GuestAdditions programma's. Deze bieden een aantal + nuttige mogelijkheden in gastbesturingssystemen, zoals integratie van + de muiscursor (wat het mogelijk maakt om de muis te delen tussen de + gast en de gastheer zonder dat er een speciale toetsencombinatie hoeft + te worden gebruikt voor het omwisselen) en snellere video-rendering, + met name in &windows;-gasten. De gastaanvullingen zijn beschikbaar in + het menu Devices, nadat de installatie van het + gastbesturingssysteem is voltooid. + + Er zijn enkele aanpassingen aan de instellingen nodig voordat + &virtualbox; voor het eerst wordt gestart. + De port installeert een kernelmodule in /boot/modules welke in de draaiende + kernel geladen moet worden: + + &prompt.root; kldload vboxdrv + + Voeg de volgende regel toe aan + /boot/loader.conf om er zeker van te zijn dat de + module altijd na een herstart wordt geladen: + + vboxdrv_load="YES" + + &virtualbox; vereist ook dat het + proc-bestandssysteem is + aangekoppeld: + + &prompt.root; mount -t procfs proc /proc + + De volgende regel is nodig in /etc/fstab om de + instelling werkend te houden na een herstart: + + proc /proc procfs rw 0 0 + + + Als er zich een foutmelding voordoet die lijkt op de volgende + wanneer &virtualbox; vanaf de terminal + wordt gedraaid: + + VirtualBox: supR3HardenedExecDir: couldn't read "", errno=2 cchLink=-1 + + Waarschijnlijk is de boosdoener het proc bestandssysteem. Controleer met + het commando mount of het juist is + aangekoppeld. + + + De groep vboxusers wordt tijdens de + installatie van &virtualbox; aangemaakt. + Alle gebruikers die toegang tot &virtualbox; + nodig hebben moeten als lid van deze groep worden toegevoegd. Met het + commando pw kunnen nieuwe leden worden + toegevoegd: + + &prompt.root; pw groupmod vboxusers -m uwgebruikersnaam + + Gebruik de optie Sun VirtualBox van het + menu van uw grafische omgeving of typ het volgende in in een terminal om + &virtualbox; te starten: + + &prompt.user; VirtualBox + + Bezoek de officiële website op voor meer informatie over het + configureren en gebruiken van &virtualbox;. + Aangezien de &os;-port erg nieuw is, wordt het nog volop ontwikkeld. + Kijk voor de laatste informatie en instructies om problemen op te lossen + op de relevantie pagina in de &os;-wiki op . + + + + Andere mogelijkheden voor virtualisatie + + Er wordt gewerkt om &xen; als een + gastheer-omgeving op &os; te laten draaien. Een experimentele versie + zal verschijnen in &os; 8.0. + From owner-p4-projects@FreeBSD.ORG Fri Jul 24 19:09:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 682C01065675; Fri, 24 Jul 2009 19:09:48 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 274C9106566B for ; Fri, 24 Jul 2009 19:09:48 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 147018FC08 for ; Fri, 24 Jul 2009 19:09:48 +0000 (UTC) (envelope-from rene@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6OJ9lO5057954 for ; Fri, 24 Jul 2009 19:09:47 GMT (envelope-from rene@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6OJ9l6S057952 for perforce@freebsd.org; Fri, 24 Jul 2009 19:09:47 GMT (envelope-from rene@FreeBSD.org) Date: Fri, 24 Jul 2009 19:09:47 GMT Message-Id: <200907241909.n6OJ9l6S057952@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to rene@FreeBSD.org using -f From: Rene Ladan To: Perforce Change Reviews Cc: Subject: PERFORCE change 166519 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2009 19:09:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=166519 Change 166519 by rene@rene_self on 2009/07/24 19:09:29 MFen share/sgml/trademarks.ent 1.45 -> 1.46 This fixes the "virtualbox entity not found" build error. Affected files ... .. //depot/projects/docproj_nl/nl_NL.ISO8859-1/share/sgml/trademarks.ent#6 edit Differences ... ==== //depot/projects/docproj_nl/nl_NL.ISO8859-1/share/sgml/trademarks.ent#6 (text+ko) ==== @@ -11,7 +11,7 @@ $FreeBSD: doc/nl_NL.ISO8859-1/share/sgml/trademarks.ent,v 1.3 2009/06/08 18:54:12 rene Exp $ %SOURCE% share/sgml/trademarks.ent - %SRCID% 1.45 + %SRCID% 1.46 --> 3Com en HomeConnect zijn geregistreerde @@ -335,9 +335,9 @@ Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JRE, JSP, JVM, Netra, - Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, en - Ultra zijn handelsmerken of geregistreerde handelsmerken van Sun - Microsystems, Inc. in de Verenigde Staten en andere landen."> + Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, + Ultra en VirtualBox zijn handelsmerken of geregistreerde handelsmerken van + Sun Microsystems, Inc. in de Verenigde Staten en andere landen."> Java"> Java Virtual Machine"> JavaServer Pages"> @@ -354,6 +354,7 @@ Sun Fire"> Ultra"> SunOS"> +VirtualBox"> Symantec en Ghost zijn geregistreerde From owner-p4-projects@FreeBSD.ORG Sat Jul 25 00:13:20 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 889CC1065670; Sat, 25 Jul 2009 00:13:20 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 46FDE106566B for ; Sat, 25 Jul 2009 00:13:20 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 357128FC0C for ; Sat, 25 Jul 2009 00:13:20 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6P0DKVo095122 for ; Sat, 25 Jul 2009 00:13:20 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6P0DKQN095120 for perforce@freebsd.org; Sat, 25 Jul 2009 00:13:20 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 25 Jul 2009 00:13:20 GMT Message-Id: <200907250013.n6P0DKQN095120@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166529 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 00:13:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=166529 Change 166529 by pgj@petymeg-current on 2009/07/25 00:12:58 Fix help on arguments for the -B option. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#17 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#17 (text+ko) ==== @@ -819,7 +819,7 @@ " netstat -i | -I interface -s [-f protocol_family | -p protocol]\n" " [-M core] [-N system]", " netstat -m [-M core] [-N system]", -" netstat -B [-I interface]", +" netstat -B [-I interface] [-M core] [-N system]", " netstat -r [-AanW] [-f address_family] [-M core] [-N system]", " netstat -rs [-s] [-M core] [-N system]", " netstat -g [-W] [-f address_family] [-M core] [-N system]", From owner-p4-projects@FreeBSD.ORG Sat Jul 25 00:18:27 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 890CD1065670; Sat, 25 Jul 2009 00:18:26 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 48BBA106564A for ; Sat, 25 Jul 2009 00:18:26 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1CF5F8FC0A for ; Sat, 25 Jul 2009 00:18:26 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6P0IPgv095509 for ; Sat, 25 Jul 2009 00:18:25 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6P0IPYb095507 for perforce@freebsd.org; Sat, 25 Jul 2009 00:18:25 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 25 Jul 2009 00:18:25 GMT Message-Id: <200907250018.n6P0IPYb095507@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 166530 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 00:18:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=166530 Change 166530 by pgj@petymeg-current on 2009/07/25 00:18:06 Fix a typo. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_mbuf.c#2 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_mbuf.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * $FreeBSD$ - ·*/ + */ #include #include From owner-p4-projects@FreeBSD.ORG Sat Jul 25 09:16:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7EED81065670; Sat, 25 Jul 2009 09:16:13 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C2F1106566B for ; Sat, 25 Jul 2009 09:16:13 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 204DC8FC1A for ; Sat, 25 Jul 2009 09:16:13 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6P9GDwL073478 for ; Sat, 25 Jul 2009 09:16:13 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6P9GCQJ073476 for perforce@freebsd.org; Sat, 25 Jul 2009 09:16:12 GMT (envelope-from hselasky@FreeBSD.org) Date: Sat, 25 Jul 2009 09:16:12 GMT Message-Id: <200907250916.n6P9GCQJ073476@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 166535 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 09:16:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=166535 Change 166535 by hselasky@hselasky_laptop001 on 2009/07/25 09:15:52 USB CORE + input: - patch to fix polled mode for UKBD. Add dummy Giant wrappers if polled mode is set. - patch to improve usbd_transfer_poll(). Mostly resolve locking issues and warning printouts at the DDB prompt. Affected files ... .. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#22 edit .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#161 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#22 (text+ko) ==== @@ -299,6 +299,28 @@ } } +static void +ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait) +{ + DPRINTFN(2, "polling\n"); + + while (sc->sc_inputs == 0) { + + usbd_transfer_poll(sc->sc_xfer, UKBD_N_TRANSFER); + + DELAY(1000); /* delay 1 ms */ + + sc->sc_time_ms++; + + /* support repetition of keys: */ + + ukbd_interrupt(sc); + + if (!wait) + break; + } +} + static int32_t ukbd_get_key(struct ukbd_softc *sc, uint8_t wait) { @@ -311,24 +333,7 @@ usbd_transfer_start(sc->sc_xfer[UKBD_INTR_DT]); } if (sc->sc_flags & UKBD_FLAG_POLLING) { - DPRINTFN(2, "polling\n"); - - while (sc->sc_inputs == 0) { - - usbd_transfer_poll(sc->sc_xfer, UKBD_N_TRANSFER); - - DELAY(1000); /* delay 1 ms */ - - sc->sc_time_ms++; - - /* support repetition of keys: */ - - ukbd_interrupt(sc); - - if (!wait) { - break; - } - } + ukbd_do_poll(sc, wait); } if (sc->sc_inputs == 0) { c = -1; @@ -983,6 +988,14 @@ static int ukbd_enable(keyboard_t *kbd) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_enable(kbd); + mtx_unlock(&Giant); + return (retval); + } mtx_assert(&Giant, MA_OWNED); KBD_ACTIVATE(kbd); return (0); @@ -992,6 +1005,14 @@ static int ukbd_disable(keyboard_t *kbd) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_disable(kbd); + mtx_unlock(&Giant); + return (retval); + } mtx_assert(&Giant, MA_OWNED); KBD_DEACTIVATE(kbd); return (0); @@ -1003,14 +1024,26 @@ { struct ukbd_softc *sc = kbd->kb_data; - if (!mtx_owned(&Giant)) { - return (0); /* XXX */ + if (!KBD_IS_ACTIVE(kbd)) + return (0); + + if (sc->sc_flags & UKBD_FLAG_POLLING) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_check(kbd); + mtx_unlock(&Giant); + return (retval); + } + ukbd_do_poll(sc, 0); + } else { + /* XXX the keyboard layer requires Giant */ + if (!mtx_owned(&Giant)) + return (0); } mtx_assert(&Giant, MA_OWNED); - if (!KBD_IS_ACTIVE(kbd)) { - return (0); - } #ifdef UKBD_EMULATE_ATSCANCODE if (sc->sc_buffered_char[0]) { return (1); @@ -1028,14 +1061,25 @@ { struct ukbd_softc *sc = kbd->kb_data; - if (!mtx_owned(&Giant)) { - return (0); /* XXX */ + if (!KBD_IS_ACTIVE(kbd)) + return (0); + + if (sc->sc_flags & UKBD_FLAG_POLLING) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_check_char(kbd); + mtx_unlock(&Giant); + return (retval); + } + } else { + /* XXX the keyboard layer requires Giant */ + if (!mtx_owned(&Giant)) + return (0); } mtx_assert(&Giant, MA_OWNED); - if (!KBD_IS_ACTIVE(kbd)) { - return (0); - } if ((sc->sc_composed_char > 0) && (!(sc->sc_flags & UKBD_FLAG_COMPOSE))) { return (1); @@ -1056,9 +1100,22 @@ uint32_t scancode; #endif + if (!KBD_IS_ACTIVE(kbd)) + return (-1); - if (!mtx_owned(&Giant)) { - return -1; /* XXX */ + if (sc->sc_flags & UKBD_FLAG_POLLING) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_read(kbd, wait); + mtx_unlock(&Giant); + return (retval); + } + } else { + /* XXX the keyboard layer requires Giant */ + if (!mtx_owned(&Giant)) + return (-1); } mtx_assert(&Giant, MA_OWNED); @@ -1077,9 +1134,9 @@ /* XXX */ usbcode = ukbd_get_key(sc, (wait == FALSE) ? 0 : 1); - if (!KBD_IS_ACTIVE(kbd) || (usbcode == -1)) { - return -1; - } + if (!KBD_IS_ACTIVE(kbd) || (usbcode == -1)) + return (-1); + ++(kbd->kb_count); #ifdef UKBD_EMULATE_ATSCANCODE @@ -1107,8 +1164,23 @@ uint32_t scancode; #endif - if (!mtx_owned(&Giant)) { - return (NOKEY); /* XXX */ + + if (!KBD_IS_ACTIVE(kbd)) + return (NOKEY); + + if (sc->sc_flags & UKBD_FLAG_POLLING) { + if (!mtx_owned(&Giant)) { + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_read_char(kbd, wait); + mtx_unlock(&Giant); + return (retval); + } + } else { + /* XXX the keyboard layer requires Giant */ + if (!mtx_owned(&Giant)) + return (NOKEY); } mtx_assert(&Giant, MA_OWNED); @@ -1485,7 +1557,12 @@ struct ukbd_softc *sc = kbd->kb_data; if (!mtx_owned(&Giant)) { - return (0); /* XXX */ + /* XXX cludge */ + int retval; + mtx_lock(&Giant); + retval = ukbd_poll(kbd, on); + mtx_unlock(&Giant); + return (retval); } mtx_assert(&Giant, MA_OWNED); ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#161 (text+ko) ==== @@ -2858,6 +2858,10 @@ * * The following function gets called from the USB keyboard driver and * UMASS when the system has paniced. + * + * NOTE: It is currently not possible to resume normal operation on + * the USB controller which has been polled, due to clearing of the + * "up_dsleep" and "up_msleep" flags. *------------------------------------------------------------------------*/ void usbd_transfer_poll(struct usb_xfer **ppxfer, uint16_t max) @@ -2867,19 +2871,50 @@ struct usb_device *udev; struct usb_proc_msg *pm; uint16_t n; + uint16_t drop_bus; + uint16_t drop_xfer; for (n = 0; n != max; n++) { + /* Extra checks to avoid panic */ xfer = ppxfer[n]; if (xfer == NULL) - continue; + continue; /* no USB transfer */ xroot = xfer->xroot; if (xroot == NULL) - continue; + continue; /* no USB root */ udev = xroot->udev; if (udev == NULL) - continue; + continue; /* no USB device */ + if (udev->bus == NULL) + continue; /* no BUS structure */ + if (udev->bus->methods == NULL) + continue; /* no BUS methods */ if (udev->bus->methods->xfer_poll == NULL) - continue; + continue; /* no poll method */ + + /* make sure that the BUS mutex is not locked */ + drop_bus = 0; + while (mtx_owned(&xroot->udev->bus->bus_mtx)) { + mtx_unlock(&xroot->udev->bus->bus_mtx); + drop_bus++; + } + + /* make sure that the transfer mutex is not locked */ + drop_xfer = 0; + while (mtx_owned(xroot->xfer_mtx)) { + mtx_unlock(xroot->xfer_mtx); + drop_xfer++; + } + + /* Make sure cv_signal() and cv_broadcast() is not called */ + udev->bus->control_xfer_proc.up_dsleep = 0; + udev->bus->control_xfer_proc.up_msleep = 0; + udev->bus->explore_proc.up_dsleep = 0; + udev->bus->explore_proc.up_msleep = 0; + udev->bus->giant_callback_proc.up_dsleep = 0; + udev->bus->giant_callback_proc.up_msleep = 0; + udev->bus->non_giant_callback_proc.up_dsleep = 0; + udev->bus->non_giant_callback_proc.up_msleep = 0; /* poll USB hardware */ (udev->bus->methods->xfer_poll) (udev->bus); @@ -2903,6 +2938,14 @@ (pm->pm_callback) (pm); USB_BUS_UNLOCK(xroot->bus); + + /* restore transfer mutex */ + while (drop_xfer--) + mtx_lock(xroot->xfer_mtx); + + /* restore BUS mutex */ + while (drop_bus--) + mtx_lock(&xroot->udev->bus->bus_mtx); } } From owner-p4-projects@FreeBSD.ORG Sat Jul 25 09:31:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 55CD71065674; Sat, 25 Jul 2009 09:31:30 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 152821065670 for ; Sat, 25 Jul 2009 09:31:30 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 02C358FC26 for ; Sat, 25 Jul 2009 09:31:30 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6P9VTHV074530 for ; Sat, 25 Jul 2009 09:31:29 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6P9VTfG074528 for perforce@freebsd.org; Sat, 25 Jul 2009 09:31:29 GMT (envelope-from syl@FreeBSD.org) Date: Sat, 25 Jul 2009 09:31:29 GMT Message-Id: <200907250931.n6P9VTfG074528@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 166536 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 09:31:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=166536 Change 166536 by syl@syl_atuin on 2009/07/25 09:30:28 Implement hub descriptor code Add missing structure in .h Implement s3c24dci_standard_chain. Implement s3c24dci_standard_chain_sub. Implement s3c24dci_roothub_exec. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#12 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#8 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#12 (text+ko) ==== @@ -72,6 +72,12 @@ "s3c24xxdci debug level"); #endif +#define S3C24_DCI_INTR_ENDPT 1 + +static s3c24dci_cmd_t s3c24dci_setup_rx; +static s3c24dci_cmd_t s3c24dci_data_rx; +static s3c24dci_cmd_t s3c24dci_data_tx; +static s3c24dci_cmd_t s3c24dci_data_tx_sync; static void s3c24dci_device_done(struct usb_xfer *, usb_error_t); static void s3c24dci_start_standard_chain(struct usb_xfer *xfer); @@ -135,6 +141,30 @@ * Transfer stuff. */ +static uint8_t +s3c24dci_setup_rx(struct s3c24dci_td *td) +{ + return 0; +} + +static uint8_t +s3c24dci_data_rx(struct s3c24dci_td *td) +{ + return 0; +} + +static uint8_t +s3c24dci_data_tx(struct s3c24dci_td *td) +{ + return 0; +} + +static uint8_t +s3c24dci_data_tx_sync(struct s3c24dci_td *td) +{ + return 0; +} + static void s3c24dci_device_done(struct usb_xfer *xfer, usb_error_t error) { @@ -350,9 +380,173 @@ } static void +s3c24dci_setup_standard_chain_sub(struct s3c24dci_std_temp *temp) +{ + struct s3c24dci_td *td; + + /* get current Transfer Descriptor */ + td = temp->td_next; + temp->td = td; + + /* prepare for next TD */ + temp->td_next = td->obj_next; + + /* fill out the Transfer Descriptor */ + td->func = temp->func; + td->pc = temp->pc; + td->offset = temp->offset; + td->remainder = temp->len; + td->error = 0; + td->did_stall = temp->did_stall; + td->short_pkt = temp->short_pkt; + td->alt_next = temp->setup_alt_next; +} + +static void s3c24dci_setup_standard_chain(struct usb_xfer *xfer) { + struct s3c24dci_std_temp temp; + struct s3c24dci_softc *sc; + struct s3c24dci_td *td; + uint32_t x; + uint8_t ep_no; + uint8_t need_sync; + + DPRINTFN(9, "addr=%d endpt=%d sumlen=%d speed=%d\n", + xfer->address, UE_GET_ADDR(xfer->endpointno), + xfer->sumlen, usbd_get_speed(xfer->xroot->udev)); + + temp.max_frame_size = xfer->max_frame_size; + + td = xfer->td_start[0]; + xfer->td_transfer_first = td; + xfer->td_transfer_cache = td; + + /* setup temp */ + + temp.td = NULL; + temp.td_next = xfer->td_start[0]; + temp.offset = 0; + temp.setup_alt_next = xfer->flags_int.short_frames_ok; + temp.did_stall = !xfer->flags_int.control_stall; + + sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); + ep_no = (xfer->endpointno & UE_ADDR); + + /* check if we should prepend a setup message */ + + if (xfer->flags_int.control_xfr) { + if (xfer->flags_int.control_hdr) { + temp.func = &s3c24dci_setup_rx; + temp.len = xfer->frlengths[0]; + temp.pc = xfer->frbuffers + 0; + temp.short_pkt = temp.len ? 1 : 0; + /* check for last frame */ + if (xfer->nframes == 1) { + /* no STATUS stage yet, SETUP is last */ + if (xfer->flags_int.control_act) + temp.setup_alt_next = 0; + } + s3c24dci_setup_standard_chain_sub(&temp); + } + x = 1; + } else { + x = 0; + } + + if (x != xfer->nframes) { + if (xfer->endpointno & UE_DIR_IN) { + temp.func = &s3c24dci_data_tx; + need_sync = 1; + } else { + temp.func = &s3c24dci_data_rx; + need_sync = 1; + } + + /* setup "pc" pointer */ + temp.pc = xfer->frbuffers + x; + } else { + need_sync = 0; + } + while (x != xfer->nframes) { + + /* DATA0 / DATA2 message */ + temp.len = xfer->frlengths[x]; + x++; + + if (x == xfer->nframes) { + if (xfer->flags_int.control_xfr) { + if (xfer->flags_int.control_act) { + temp.setup_alt_next = 0; + } + } else { + temp.setup_alt_next = 0; + } + } + if (temp.len == 0) { + + /* make sure that we send an USB packet */ + + temp.short_pkt = 0; + + } else { + + /* regular data pointer */ + temp.short_pkt = (xfer->flags.force_short_xfer) ? 0 : 1; + } + s3c24dci_setup_standard_chain_sub(&temp); + + if (xfer->flags_int.isochronous_xfr) { + temp.offset += temp.len; + } else { + /* get next Page Cache pointer */ + temp.pc = xfer->frbuffers + x; + } + } + + /* check for control transfer */ + if (xfer->flags_int.control_xfr) { + + /* always setup a valid "pc" pointer for status and sync */ + temp.pc = xfer->frbuffers + 0 ; + temp.len = 0; + temp.short_pkt = 0; + temp.setup_alt_next = 0; + + /* check if we need to sync */ + if (need_sync) { + /* we need a SYNC point afer TX */ + temp.func = &s3c24dci_data_tx_sync; + s3c24dci_setup_standard_chain_sub(&temp); + + } + + /* check if we should append a status stage */ + if (!xfer->flags_int.control_act) { + /* + * Sen a DATA1 message and invert the current + * endpoint direction + */ + if (xfer->endpointno & UE_DIR_IN) { + temp.func = &s3c24dci_data_rx; + need_sync = 0; + } else { + temp.func = &s3c24dci_data_tx; + need_sync = 1; + } + + s3c24dci_setup_standard_chain_sub(&temp); + if (need_sync) { + /* we need a SYNC point after TX */ + temp.func = &s3c24dci_data_tx_sync; + s3c24dci_setup_standard_chain_sub(&temp); + } + } + } + /* must have at least one frame ! */ + td = temp.td; + xfer->td_transfer_last = td; } /* @@ -402,6 +596,94 @@ }; /* + * s3c24dci root control support + * Simulate a hardware HUB by handling all the necessary requests. + */ + +static const struct usb_device_descriptor s3c24dci_devd = { + .bLength = sizeof(struct usb_device_descriptor), + .bDescriptorType = UDESC_DEVICE, + .bcdUSB = {0x00, 0x02}, + .bDeviceClass = UDCLASS_HUB, + .bDeviceSubClass = UDSUBCLASS_HUB, + .bDeviceProtocol = UDPROTO_HSHUBSTT, + .bMaxPacketSize = 64, + .bcdDevice = {0x00, 0x01}, + .iManufacturer = 1, + .iProduct = 2, + .bNumConfigurations = 1, +}; + +static const struct usb_device_qualifier s3c24dci_odevd = { + .bLength = sizeof(struct usb_device_qualifier), + .bDescriptorType = UDESC_DEVICE_QUALIFIER, + .bcdUSB = {0x00, 0x02}, + .bDeviceClass = UDCLASS_HUB, + .bDeviceSubClass = UDSUBCLASS_HUB, + .bDeviceProtocol = UDPROTO_FSHUB, + .bMaxPacketSize0 = 0, + .bNumConfigurations = 0, + +}; + +static const struct s3c24dci_config_desc s3c24dci_confd = { + .confd = { + .bLength = sizeof(struct usb_config_descriptor), + .bDescriptorType = UDESC_CONFIG, + .wTotalLength[0] = sizeof(s3c24dci_confd), + .bNumInterface = 1, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = UC_SELF_POWERED, + .bMaxPower = 0, + }, + .ifcd = { + .bLength = sizeof(struct usb_interface_descriptor), + .bDescriptorType = UDESC_INTERFACE, + .bNumEndpoints = 1, + .bInterfaceClass = UICLASS_HUB, + .bInterfaceSubClass = UISUBCLASS_HUB, + .bInterfaceProtocol = UIPROTO_HSHUBSTT, + }, + .endpd = { + .bLength = sizeof(struct usb_endpoint_descriptor), + .bDescriptorType = UDESC_ENDPOINT, + .bEndpointAddress = (UE_DIR_IN | S3C24_DCI_INTR_ENDPT), + .bmAttributes = UE_INTERRUPT, + .wMaxPacketSize[0] = 8, + .bInterval = 255, + }, +}; + +static const struct usb_hub_descriptor_min s3c24dci_hubd = { + .bDescLength = sizeof(s3c24dci_hubd), + .bDescriptorType = UDESC_HUB, + .bNbrPorts = 1, + .wHubCharacteristics[0] = + (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, + .wHubCharacteristics[1] = + (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, + .bPwrOn2PwrGood = 50, + .bHubContrCurrent = 0, + .DeviceRemovable = {0}, /* port is removable */ +}; + +#define STRING_LANG \ + 0x09, 0x04, /* American English */ + +#define STRING_VENDOR \ + 'S', 0, 'A', 0, 'M', 0, 'S', 0, 'U', 0, 'N', 0, 'G', 0 + +#define STRING_PRODUCT \ + 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ + 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ + 'U', 0, 'B', 0, + +USB_MAKE_STRING_DESC(STRING_LANG, s3c24dci_langtab); +USB_MAKE_STRING_DESC(STRING_VENDOR, s3c24dci_vendor); +USB_MAKE_STRING_DESC(STRING_PRODUCT, s3c24dci_product); + +/* * USB FN interface */ @@ -565,11 +847,428 @@ return ; } +static void +s3c24dci_clocks_on(struct s3c24dci_softc *sc) +{ + +} + +static void +s3c24dci_clocks_off(struct s3c24dci_softc *sc) +{ + +} + +static void +s3c24dci_pull_up(struct s3c24dci_softc *sc) +{ + +} + +static void +s3c24dci_pull_down(struct s3c24dci_softc *sc) +{ + +} + +static void +s3c24dci_wakeup_peer(struct s3c24dci_softc *sc) +{ + +} + static usb_error_t s3c24dci_roothub_exec(struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength) { + struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(udev->bus); + const void *ptr; + uint16_t len; + uint16_t value; + uint16_t index; + usb_error_t err; + + USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + + /* buffer reset */ + ptr = (const void *)&sc->sc_hub_temp; + len = 0; + err = 0; + + value = UGETW(req->wValue); + index = UGETW(req->wIndex); + + /* demultiplex the control request */ + + switch (req->bmRequestType) { + case UT_READ_DEVICE: + switch (req->bRequest) { + case UR_GET_DESCRIPTOR: + goto tr_handle_get_descriptor; + case UR_GET_CONFIG: + goto tr_handle_get_config; + case UR_GET_STATUS: + goto tr_handle_get_status; + default: + goto tr_stalled; + } + break; + + case UT_WRITE_DEVICE: + switch (req->bRequest) { + case UR_SET_ADDRESS: + goto tr_handle_set_address; + case UR_SET_CONFIG: + goto tr_handle_set_config; + case UR_CLEAR_FEATURE: + goto tr_valid; /* nop */ + case UR_SET_DESCRIPTOR: + goto tr_valid; /* nop */ + case UR_SET_FEATURE: + default: + goto tr_stalled; + } + break; + + case UT_WRITE_ENDPOINT: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + switch (UGETW(req->wValue)) { + case UF_ENDPOINT_HALT: + goto tr_handle_clear_halt; + case UF_DEVICE_REMOTE_WAKEUP: + goto tr_handle_clear_wakeup; + default: + goto tr_stalled; + } + break; + case UR_SET_FEATURE: + switch (UGETW(req->wValue)) { + case UF_ENDPOINT_HALT: + goto tr_handle_set_halt; + case UF_DEVICE_REMOTE_WAKEUP: + goto tr_handle_set_wakeup; + default: + goto tr_stalled; + } + break; + case UR_SYNCH_FRAME: + goto tr_valid; /* nop */ + default: + goto tr_stalled; + } + break; + + case UT_READ_ENDPOINT: + switch (req->bRequest) { + case UR_GET_STATUS: + goto tr_handle_get_ep_status; + default: + goto tr_stalled; + } + break; + + case UT_WRITE_INTERFACE: + switch (req->bRequest) { + case UR_SET_INTERFACE: + goto tr_handle_set_interface; + case UR_CLEAR_FEATURE: + goto tr_valid; /* nop */ + case UR_SET_FEATURE: + default: + goto tr_stalled; + } + break; + + case UT_READ_INTERFACE: + switch (req->bRequest) { + case UR_GET_INTERFACE: + goto tr_handle_get_interface; + case UR_GET_STATUS: + goto tr_handle_get_iface_status; + default: + goto tr_stalled; + } + break; + + case UT_WRITE_CLASS_INTERFACE: + case UT_WRITE_VENDOR_INTERFACE: + /* XXX forward */ + break; + + case UT_READ_CLASS_INTERFACE: + case UT_READ_VENDOR_INTERFACE: + /* XXX forward */ + break; + + case UT_WRITE_CLASS_DEVICE: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + goto tr_valid; + case UR_SET_DESCRIPTOR: + case UR_SET_FEATURE: + break; + default: + goto tr_stalled; + } + break; + + case UT_WRITE_CLASS_OTHER: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + goto tr_handle_clear_port_feature; + case UR_SET_FEATURE: + goto tr_handle_set_port_feature; + case UR_CLEAR_TT_BUFFER: + case UR_RESET_TT: + case UR_STOP_TT: + goto tr_valid; + + default: + goto tr_stalled; + } + break; + + case UT_READ_CLASS_OTHER: + switch (req->bRequest) { + case UR_GET_TT_STATE: + goto tr_handle_get_tt_state; + case UR_GET_STATUS: + goto tr_handle_get_port_status; + default: + goto tr_stalled; + } + break; + + case UT_READ_CLASS_DEVICE: + switch (req->bRequest) { + case UR_GET_DESCRIPTOR: + goto tr_handle_get_class_descriptor; + case UR_GET_STATUS: + goto tr_handle_get_class_status; + + default: + goto tr_stalled; + } + break; + default: + goto tr_stalled; + } + goto tr_valid; + +tr_handle_get_descriptor: + switch (value >> 8) { + case UDESC_DEVICE: + if (value & 0xff) { + goto tr_stalled; + } + len = sizeof(s3c24dci_devd); + ptr = (const void *)&s3c24dci_devd; + goto tr_valid; + case UDESC_CONFIG: + if (value & 0xff) { + goto tr_stalled; + } + len = sizeof(s3c24dci_confd); + ptr = (const void *)&s3c24dci_confd; + goto tr_valid; + case UDESC_STRING: + switch (value & 0xff) { + case 0: /* Language table */ + len = sizeof(s3c24dci_langtab); + ptr = (const void *)&s3c24dci_langtab; + goto tr_valid; + + case 1: /* Vendor */ + len = sizeof(s3c24dci_vendor); + ptr = (const void *)&s3c24dci_vendor; + goto tr_valid; + + case 2: /* Product */ + len = sizeof(s3c24dci_product); + ptr = (const void *)&s3c24dci_product; + goto tr_valid; + default: + break; + } + break; + default: + goto tr_stalled; + } + goto tr_stalled; + +tr_handle_get_config: + len = 1; + sc->sc_hub_temp.wValue[0] = sc->sc_conf; + goto tr_valid; + +tr_handle_get_status: + len = 2; + USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); + goto tr_valid; + +tr_handle_set_address: + if (value & 0xFF00) { + goto tr_stalled; + } + sc->sc_rt_addr = value; + goto tr_valid; + +tr_handle_set_config: + if (value >= 2) { + goto tr_stalled; + } + sc->sc_conf = value; + goto tr_valid; + +tr_handle_get_interface: + len = 1; + sc->sc_hub_temp.wValue[0] = 0; + goto tr_valid; + +tr_handle_get_tt_state: +tr_handle_get_class_status: +tr_handle_get_iface_status: +tr_handle_get_ep_status: + len = 2; + USETW(sc->sc_hub_temp.wValue, 0); + goto tr_valid; + +tr_handle_set_halt: +tr_handle_set_interface: +tr_handle_set_wakeup: +tr_handle_clear_wakeup: +tr_handle_clear_halt: + goto tr_valid; + return (USB_ERR_STALLED); + +tr_handle_clear_port_feature: + if (index != 1) { + goto tr_stalled; + } + DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); + + switch (value) { + case UHF_PORT_SUSPEND: + s3c24dci_wakeup_peer(sc); + break; + + case UHF_PORT_ENABLE: + sc->sc_flags.port_enabled = 0; + break; + + case UHF_PORT_TEST: + case UHF_PORT_INDICATOR: + case UHF_C_PORT_ENABLE: + case UHF_C_PORT_OVER_CURRENT: + case UHF_C_PORT_RESET: + /* nops */ + break; + case UHF_PORT_POWER: + sc->sc_flags.port_powered = 0; + s3c24dci_pull_down(sc); + s3c24dci_clocks_off(sc); + break; + case UHF_C_PORT_CONNECTION: + sc->sc_flags.change_connect = 0; + break; + case UHF_C_PORT_SUSPEND: + sc->sc_flags.change_suspend = 0; + break; + default: + err = USB_ERR_IOERROR; + goto done; + } + goto tr_valid; + +tr_handle_set_port_feature: + if (index != 1) { + goto tr_stalled; + } + DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); + + switch (value) { + case UHF_PORT_ENABLE: + sc->sc_flags.port_enabled = 1; + break; + case UHF_PORT_SUSPEND: + case UHF_PORT_RESET: + case UHF_PORT_TEST: + case UHF_PORT_INDICATOR: + /* nops */ + break; + case UHF_PORT_POWER: + sc->sc_flags.port_powered = 1; + break; + default: + err = USB_ERR_IOERROR; + goto done; + } + goto tr_valid; + +tr_handle_get_port_status: + + DPRINTFN(9, "UR_GET_PORT_STATUS\n"); + + if (index != 1) { + goto tr_stalled; + } + if (sc->sc_flags.status_vbus) { + s3c24dci_clocks_on(sc); + s3c24dci_pull_up(sc); + } else { + s3c24dci_pull_down(sc); + s3c24dci_clocks_off(sc); + } + + /* Select FULL-speed and Device Side Mode */ + + value = UPS_PORT_MODE_DEVICE; + + if (sc->sc_flags.port_powered) { + value |= UPS_PORT_POWER; + } + if (sc->sc_flags.port_enabled) { + value |= UPS_PORT_ENABLED; + } + if (sc->sc_flags.status_vbus && + sc->sc_flags.status_bus_reset) { + value |= UPS_CURRENT_CONNECT_STATUS; + } + if (sc->sc_flags.status_suspend) { + value |= UPS_SUSPEND; + } + USETW(sc->sc_hub_temp.ps.wPortStatus, value); + + value = 0; + + if (sc->sc_flags.change_connect) { + value |= UPS_C_CONNECT_STATUS; + + } + if (sc->sc_flags.change_suspend) { + value |= UPS_C_SUSPEND; + } + USETW(sc->sc_hub_temp.ps.wPortChange, value); + len = sizeof(sc->sc_hub_temp.ps); + goto tr_valid; + +tr_handle_get_class_descriptor: + if (value & 0xFF) { + goto tr_stalled; + } + ptr = (const void *)&s3c24dci_hubd; + len = sizeof(s3c24dci_hubd); + goto tr_valid; + +tr_stalled: + err = USB_ERR_STALLED; +tr_valid: +done: + *plength = len; + *pptr = ptr; + return (err); } static void ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#8 (text+ko) ==== @@ -195,8 +195,51 @@ uint8_t did_stall:1; }; +struct s3c24dci_std_temp { + s3c24dci_cmd_t *func; + struct usb_page_cache *pc; + struct s3c24dci_td *td; + struct s3c24dci_td *td_next; + uint32_t len; + uint32_t offset; + uint16_t max_frame_size; + uint8_t short_pkt; + /* + * short_pkt = 0: transfer should be short terminated + * short_pkt = 1: transfer should not be should terminated +} */ + uint8_t setup_alt_next; + uint8_t did_stall; +}; + +struct s3c24dci_config_desc { + struct usb_config_descriptor confd; + struct usb_interface_descriptor ifcd; + struct usb_endpoint_descriptor endpd; +} __packed; + +union s3c24dci_hub_temp { + uWord wValue; + struct usb_port_status ps; +}; + +struct s3c24dci_flags { + uint8_t change_connect:1; + uint8_t change_suspend:1; + uint8_t status_suspend:1; /* set if suspended */ + uint8_t status_vbus:1; /* set if present */ + uint8_t status_bus_reset:1; /* set if reset complete */ + uint8_t remote_wakeup:1; + uint8_t self_powered:1; + uint8_t clocks_off:1; + uint8_t port_powered:1; + uint8_t port_enabled:1; + uint8_t d_pulled_up:1; +}; + struct s3c24dci_softc { struct usb_bus sc_bus; + union s3c24dci_hub_temp sc_hub_temp; struct usb_device *sc_devices[2]; bus_space_tag_t sc_io_tag; @@ -207,6 +250,8 @@ uint8_t sc_conf; /* root HUB config */ uint8_t sc_hub_idata[1]; + + struct s3c24dci_flags sc_flags; }; usb_error_t s3c24dci_init(struct s3c24dci_softc *sc); From owner-p4-projects@FreeBSD.ORG Sat Jul 25 09:59:00 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 884D91065674; Sat, 25 Jul 2009 09:59:00 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F60F1065670 for ; Sat, 25 Jul 2009 09:59:00 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1D2DF8FC08 for ; Sat, 25 Jul 2009 09:59:00 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6P9wxPt076516 for ; Sat, 25 Jul 2009 09:58:59 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6P9wxQS076514 for perforce@freebsd.org; Sat, 25 Jul 2009 09:58:59 GMT (envelope-from syl@FreeBSD.org) Date: Sat, 25 Jul 2009 09:58:59 GMT Message-Id: <200907250958.n6P9wxQS076514@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 166538 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 09:59:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=166538 Change 166538 by syl@syl_atuin on 2009/07/25 09:58:35 Follow at91dci function order to simplify the diff between the two drivers. Add s3c24dci_do_poll. Add s3c24dci_interrupt_poll. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#9 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#13 (text+ko) ==== @@ -79,7 +79,8 @@ static s3c24dci_cmd_t s3c24dci_data_tx; static s3c24dci_cmd_t s3c24dci_data_tx_sync; static void s3c24dci_device_done(struct usb_xfer *, usb_error_t); -static void s3c24dci_start_standard_chain(struct usb_xfer *xfer); +static void s3c24dci_do_poll(struct usb_bus *); +static void s3c24dci_standard_done(struct usb_xfer *xfer); /* * This driver dont support DMA for the mement. DMA seems to not be @@ -137,173 +138,69 @@ }, }; -/* - * Transfer stuff. - */ - -static uint8_t -s3c24dci_setup_rx(struct s3c24dci_td *td) +static void +s3c24dci_get_hw_ep_profile(struct usb_device *udev, + const struct usb_hw_ep_profile **ppf, uint8_t ep_addr) { - return 0; + if (ep_addr < S3C24XX_DCI_EP_MAX) + *ppf = (s3c24dci_ep_profile + ep_addr); + else + *ppf = NULL; } -static uint8_t -s3c24dci_data_rx(struct s3c24dci_td *td) +static void +s3c24dci_clocks_on(struct s3c24dci_softc *sc) { - return 0; + } -static uint8_t -s3c24dci_data_tx(struct s3c24dci_td *td) +static void +s3c24dci_clocks_off(struct s3c24dci_softc *sc) { - return 0; + } -static uint8_t -s3c24dci_data_tx_sync(struct s3c24dci_td *td) +static void +s3c24dci_pull_up(struct s3c24dci_softc *sc) { - return 0; + } static void -s3c24dci_device_done(struct usb_xfer *xfer, usb_error_t error) +s3c24dci_pull_down(struct s3c24dci_softc *sc) { - struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); - uint32_t ittmp; - uint8_t ep_no; - - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - DPRINTFN(2, "xfer=%p, endpoint=%p, error=%d\n", - xfer, xfer->endpoint, error); - - if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) { - ep_no = (xfer->endpointno & UE_ADDR); - - /* disable endpoint interrupt */ - ittmp = S3C24XX_DCI_READ_4(sc, S3C24_DCI_EP_INT_EN); - ittmp &= ~(1<xroot->bus, MA_OWNED); - /* transfer is transferred */ - s3c24dci_device_done(xfer, USB_ERR_TIMEOUT); +static uint8_t +s3c24dci_setup_rx(struct s3c24dci_td *td) +{ + return 0; } -static usb_error_t -s3c24dci_standard_done_sub(struct usb_xfer *xfer) +static uint8_t +s3c24dci_data_rx(struct s3c24dci_td *td) { - struct s3c24dci_td *td; - uint32_t len; - uint8_t error; + return 0; +} - DPRINTFN(9, "\n"); - - td = xfer->td_transfer_cache; - - do { - len = td->remainder; - - if (xfer->aframes != xfer->nframes) { - /* - * Verify the length and subtract - * the remainder from "frlengths[]": - */ - if (len > xfer->frlengths[xfer->aframes]) { - td->error = 1; - } else { - xfer->frlengths[xfer->aframes] -= len; - } - } - /* Check for transfer error */ - if (td->error) { - /* the transfer is finished */ - error = 1; - td = NULL; - break; - } - /* Check for short transfer */ - if (len > 0) { - if (xfer->flags_int.short_frames_ok) { - /* follow alt next */ - if (td->alt_next) { - td = td->obj_next; - } else { - td = NULL; - } - } else { - /* the transfer is finished */ - td = NULL; - } - error = 0; - break; - } - td = td->obj_next; - - /* this USB frame is complete */ - error = 0; - break; - - } while (0); - - /* update transfer cache */ - - xfer->td_transfer_cache = td; - - return (error ? - USB_ERR_STALLED : USB_ERR_NORMAL_COMPLETION); +static uint8_t +s3c24dci_data_tx(struct s3c24dci_td *td) +{ + return 0; } -static void -s3c24dci_standard_done(struct usb_xfer *xfer) +static uint8_t +s3c24dci_data_tx_sync(struct s3c24dci_td *td) { - usb_error_t err = 0; - - DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n", - xfer, xfer->endpoint); - - /* reset scanner */ - - xfer->td_transfer_cache = xfer->td_transfer_first; - - if (xfer->flags_int.control_xfr) { - if (xfer->flags_int.control_hdr) { - err = s3c24dci_standard_done_sub(xfer); - } - xfer->aframes = 1; - if (xfer->td_transfer_cache == NULL) { - goto done; - } - } - while (xfer->aframes != xfer->nframes) { - err = s3c24dci_standard_done_sub(xfer); - xfer->aframes++; - - if (xfer->td_transfer_cache == NULL) { - goto done; - } - } - - if (xfer->flags_int.control_xfr && - !xfer->flags_int.control_act) { - err = s3c24dci_standard_done_sub(xfer); - } -done: - s3c24dci_device_done(xfer, err); + return 0; } static uint8_t @@ -347,34 +244,15 @@ } static void -s3c24dci_start_standard_chain(struct usb_xfer *xfer) +s3c24dci_interrupt_poll(struct s3c24dci_softc *sc) { - DPRINTFN(9, "\n"); + struct usb_xfer *xfer; - /* poll one time */ - if (s3c24dci_xfer_do_fifo(xfer)) { - struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); - uint8_t ep_no = xfer->endpointno & UE_ADDR; - uint32_t ittmp; - - /* - * Only enable the endpoint interrupt when we are actually - * waiting for data, hence we are dealing with level - * triggered interrupts ! - */ - ittmp = S3C24XX_DCI_READ_4(sc, S3C24_DCI_EP_INT_EN); - ittmp |= (1<xroot->bus->intr_q, xfer); - - /* start timeout, if any */ - if (xfer->timeout != 0) { - usbd_transfer_timeout_ms(xfer, - &s3c24dci_timeout, xfer->timeout); +repeat: + TAILQ_FOREACH(xfer, &sc->sc_bus.intr_q.head, wait_entry) { + if (!s3c24dci_xfer_do_fifo(xfer)) { + /* queue has been modified */ + goto repeat; } } } @@ -549,162 +427,215 @@ xfer->td_transfer_last = td; } -/* - * s3c24xxdci ctrl/bulk/intr support - */ - static void -s3c24dci_device_dummy(struct usb_xfer *xfer) +s3c24dci_timeout(void *arg) { - return ; + struct usb_xfer *xfer = arg; + + DPRINTF("xfer=%p\n", xfer); + + USB_BUS_LOCK_ASSERT(xfer->xroot->bus, MA_OWNED); + + /* transfer is transferred */ + s3c24dci_device_done(xfer, USB_ERR_TIMEOUT); } static void -s3c24dci_device_xxx_start(struct usb_xfer *xfer) +s3c24dci_start_standard_chain(struct usb_xfer *xfer) { - s3c24dci_setup_standard_chain(xfer); - s3c24dci_start_standard_chain(xfer); - return ; + DPRINTFN(9, "\n"); + + /* poll one time */ + if (s3c24dci_xfer_do_fifo(xfer)) { + struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); + uint8_t ep_no = xfer->endpointno & UE_ADDR; + uint32_t ittmp; + + /* + * Only enable the endpoint interrupt when we are actually + * waiting for data, hence we are dealing with level + * triggered interrupts ! + */ + ittmp = S3C24XX_DCI_READ_4(sc, S3C24_DCI_EP_INT_EN); + ittmp |= (1<xroot->bus->intr_q, xfer); + + /* start timeout, if any */ + if (xfer->timeout != 0) { + usbd_transfer_timeout_ms(xfer, + &s3c24dci_timeout, xfer->timeout); + } + } } -static void -s3c24dci_device_xxx_close(struct usb_xfer *xfer) +static usb_error_t +s3c24dci_standard_done_sub(struct usb_xfer *xfer) { - s3c24dci_device_done(xfer, USB_ERR_CANCELLED); - return ; -} + struct s3c24dci_td *td; + uint32_t len; + uint8_t error; + + DPRINTFN(9, "\n"); + + td = xfer->td_transfer_cache; + + do { + len = td->remainder; + + if (xfer->aframes != xfer->nframes) { + /* + * Verify the length and subtract + * the remainder from "frlengths[]": + */ + if (len > xfer->frlengths[xfer->aframes]) { + td->error = 1; + } else { + xfer->frlengths[xfer->aframes] -= len; + } + } + /* Check for transfer error */ + if (td->error) { + /* the transfer is finished */ + error = 1; + td = NULL; + break; + } + /* Check for short transfer */ + if (len > 0) { + if (xfer->flags_int.short_frames_ok) { + /* follow alt next */ + if (td->alt_next) { + td = td->obj_next; + } else { + td = NULL; + } + } else { + /* the transfer is finished */ + td = NULL; + } + error = 0; + break; + } + td = td->obj_next; -struct usb_pipe_methods s3c24dci_device_ctrl_methods = { - .open = s3c24dci_device_dummy, - .enter = s3c24dci_device_dummy, - .close = s3c24dci_device_xxx_close, - .start = s3c24dci_device_xxx_start, -}; + /* this USB frame is complete */ + error = 0; + break; -struct usb_pipe_methods s3c24dci_device_bulk_methods = { - .open = s3c24dci_device_dummy, - .enter = s3c24dci_device_dummy, - .close = s3c24dci_device_xxx_close, - .start = s3c24dci_device_xxx_start, -}; + } while (0); -struct usb_pipe_methods s3c24dci_device_intr_methods = { - .open = s3c24dci_device_dummy, - .enter = s3c24dci_device_dummy, - .close = s3c24dci_device_xxx_close, - .start = s3c24dci_device_xxx_start, -}; + /* update transfer cache */ -/* - * s3c24dci root control support - * Simulate a hardware HUB by handling all the necessary requests. - */ + xfer->td_transfer_cache = td; -static const struct usb_device_descriptor s3c24dci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; + return (error ? + USB_ERR_STALLED : USB_ERR_NORMAL_COMPLETION); +} -static const struct usb_device_qualifier s3c24dci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, - -}; +static void +s3c24dci_standard_done(struct usb_xfer *xfer) +{ + usb_error_t err = 0; -static const struct s3c24dci_config_desc s3c24dci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(s3c24dci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | S3C24_DCI_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; + DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n", + xfer, xfer->endpoint); -static const struct usb_hub_descriptor_min s3c24dci_hubd = { - .bDescLength = sizeof(s3c24dci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; + /* reset scanner */ -#define STRING_LANG \ - 0x09, 0x04, /* American English */ + xfer->td_transfer_cache = xfer->td_transfer_first; -#define STRING_VENDOR \ - 'S', 0, 'A', 0, 'M', 0, 'S', 0, 'U', 0, 'N', 0, 'G', 0 + if (xfer->flags_int.control_xfr) { + if (xfer->flags_int.control_hdr) { + err = s3c24dci_standard_done_sub(xfer); + } + xfer->aframes = 1; + if (xfer->td_transfer_cache == NULL) { + goto done; + } + } + while (xfer->aframes != xfer->nframes) { + err = s3c24dci_standard_done_sub(xfer); + xfer->aframes++; -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, + if (xfer->td_transfer_cache == NULL) { + goto done; + } + } -USB_MAKE_STRING_DESC(STRING_LANG, s3c24dci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, s3c24dci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, s3c24dci_product); + if (xfer->flags_int.control_xfr && + !xfer->flags_int.control_act) { + err = s3c24dci_standard_done_sub(xfer); + } +done: + s3c24dci_device_done(xfer, err); +} /* - * USB FN interface + * s3c24dci_device_done + * NOTE : This function can be called more than one time on + * the same USB transfer ! */ +static void +s3c24dci_device_done(struct usb_xfer *xfer, usb_error_t error) +{ + struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); + uint32_t ittmp; + uint8_t ep_no; + + USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + + DPRINTFN(2, "xfer=%p, endpoint=%p, error=%d\n", + xfer, xfer->endpoint, error); -usb_error_t s3c24dci_init(struct s3c24dci_softc *sc) -{ - return 0; -} + if (xfer->flags_int.usb_mode == USB_MODE_DEVICE) { + ep_no = (xfer->endpointno & UE_ADDR); + + /* disable endpoint interrupt */ + ittmp = S3C24XX_DCI_READ_4(sc, S3C24_DCI_EP_INT_EN); + ittmp &= ~(1<bus, MA_OWNED); + + DPRINTFN(5, "endpoint=%p\n", ep); + + if (xfer) { + /* cancel any ongoing transfers */ + s3c24dci_device_done(xfer, USB_ERR_STALLED); + } + + /* set STALL */ + sc = S3C24_DCI_BUS2SC(udev->bus); + S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_INDEX, (ep->edesc->bEndpointAddress & UE_ADDR)); + if ((ep->edesc->bEndpointAddress & (UE_DIR_IN|UE_DIR_OUT)) == UE_DIR_IN) { + csr = S3C24XX_DCI_READ_4(sc, S3C24_DCI_IN_CSR1); + csr |= S3C24_DCI_IN_SEND_STALL; + S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_IN_CSR1, csr); + } else { + csr = S3C24XX_DCI_READ_4(sc, S3C24_DCI_OUT_CSR1); + csr |= S3C24_DCI_OUT_SEND_STALL; + S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_OUT_CSR1, csr); + } + + return ; } static void @@ -815,67 +746,162 @@ return ; } -static void -s3c24dci_set_stall(struct usb_device *udev, struct usb_xfer *xfer, - struct usb_endpoint *ep, uint8_t *did_stall) +usb_error_t +s3c24dci_init(struct s3c24dci_softc *sc) { - struct s3c24dci_softc *sc; - uint32_t csr; + s3c24dci_do_poll(&sc->sc_bus); + return 0; +} - USB_BUS_LOCK_ASSERT(udev->bus, MA_OWNED); - - DPRINTFN(5, "endpoint=%p\n", ep); - - if (xfer) { - /* cancel any ongoing transfers */ - s3c24dci_device_done(xfer, USB_ERR_STALLED); - } - - /* set STALL */ - sc = S3C24_DCI_BUS2SC(udev->bus); - S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_INDEX, (ep->edesc->bEndpointAddress & UE_ADDR)); - if ((ep->edesc->bEndpointAddress & (UE_DIR_IN|UE_DIR_OUT)) == UE_DIR_IN) { - csr = S3C24XX_DCI_READ_4(sc, S3C24_DCI_IN_CSR1); - csr |= S3C24_DCI_IN_SEND_STALL; - S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_IN_CSR1, csr); - } else { - csr = S3C24XX_DCI_READ_4(sc, S3C24_DCI_OUT_CSR1); - csr |= S3C24_DCI_OUT_SEND_STALL; - S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_OUT_CSR1, csr); - } - +void +s3c24dci_uninit(struct s3c24dci_softc *sc) +{ return ; } static void -s3c24dci_clocks_on(struct s3c24dci_softc *sc) +s3c24dci_do_poll(struct usb_bus *bus) { + struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(bus); + USB_BUS_LOCK(&sc->sc_bus); + s3c24dci_interrupt_poll(sc); + USB_BUS_UNLOCK(&sc->sc_bus); } +/* + * s3c24xxdci ctrl/bulk/intr support + */ + static void -s3c24dci_clocks_off(struct s3c24dci_softc *sc) +s3c24dci_device_dummy(struct usb_xfer *xfer) { - + return ; } static void -s3c24dci_pull_up(struct s3c24dci_softc *sc) +s3c24dci_device_xxx_start(struct usb_xfer *xfer) { - + s3c24dci_setup_standard_chain(xfer); + s3c24dci_start_standard_chain(xfer); + return ; } static void -s3c24dci_pull_down(struct s3c24dci_softc *sc) +s3c24dci_device_xxx_close(struct usb_xfer *xfer) { + s3c24dci_device_done(xfer, USB_ERR_CANCELLED); + return ; +} + +struct usb_pipe_methods s3c24dci_device_ctrl_methods = { + .open = s3c24dci_device_dummy, + .enter = s3c24dci_device_dummy, + .close = s3c24dci_device_xxx_close, + .start = s3c24dci_device_xxx_start, +}; + +struct usb_pipe_methods s3c24dci_device_bulk_methods = { + .open = s3c24dci_device_dummy, + .enter = s3c24dci_device_dummy, + .close = s3c24dci_device_xxx_close, + .start = s3c24dci_device_xxx_start, +}; + +struct usb_pipe_methods s3c24dci_device_intr_methods = { + .open = s3c24dci_device_dummy, + .enter = s3c24dci_device_dummy, + .close = s3c24dci_device_xxx_close, + .start = s3c24dci_device_xxx_start, +}; + +/* + * s3c24dci root control support + * Simulate a hardware HUB by handling all the necessary requests. + */ -} +static const struct usb_device_descriptor s3c24dci_devd = { + .bLength = sizeof(struct usb_device_descriptor), + .bDescriptorType = UDESC_DEVICE, + .bcdUSB = {0x00, 0x02}, + .bDeviceClass = UDCLASS_HUB, + .bDeviceSubClass = UDSUBCLASS_HUB, + .bDeviceProtocol = UDPROTO_HSHUBSTT, + .bMaxPacketSize = 64, + .bcdDevice = {0x00, 0x01}, + .iManufacturer = 1, + .iProduct = 2, + .bNumConfigurations = 1, +}; + +static const struct usb_device_qualifier s3c24dci_odevd = { + .bLength = sizeof(struct usb_device_qualifier), + .bDescriptorType = UDESC_DEVICE_QUALIFIER, + .bcdUSB = {0x00, 0x02}, + .bDeviceClass = UDCLASS_HUB, + .bDeviceSubClass = UDSUBCLASS_HUB, + .bDeviceProtocol = UDPROTO_FSHUB, + .bMaxPacketSize0 = 0, + .bNumConfigurations = 0, + +}; + +static const struct s3c24dci_config_desc s3c24dci_confd = { + .confd = { + .bLength = sizeof(struct usb_config_descriptor), + .bDescriptorType = UDESC_CONFIG, + .wTotalLength[0] = sizeof(s3c24dci_confd), + .bNumInterface = 1, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = UC_SELF_POWERED, + .bMaxPower = 0, + }, + .ifcd = { + .bLength = sizeof(struct usb_interface_descriptor), + .bDescriptorType = UDESC_INTERFACE, + .bNumEndpoints = 1, + .bInterfaceClass = UICLASS_HUB, + .bInterfaceSubClass = UISUBCLASS_HUB, + .bInterfaceProtocol = UIPROTO_HSHUBSTT, + }, + .endpd = { + .bLength = sizeof(struct usb_endpoint_descriptor), + .bDescriptorType = UDESC_ENDPOINT, + .bEndpointAddress = (UE_DIR_IN | S3C24_DCI_INTR_ENDPT), + .bmAttributes = UE_INTERRUPT, + .wMaxPacketSize[0] = 8, + .bInterval = 255, + }, +}; + +static const struct usb_hub_descriptor_min s3c24dci_hubd = { + .bDescLength = sizeof(s3c24dci_hubd), + .bDescriptorType = UDESC_HUB, + .bNbrPorts = 1, + .wHubCharacteristics[0] = + (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, + .wHubCharacteristics[1] = + (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, + .bPwrOn2PwrGood = 50, + .bHubContrCurrent = 0, + .DeviceRemovable = {0}, /* port is removable */ +}; + +#define STRING_LANG \ + 0x09, 0x04, /* American English */ + +#define STRING_VENDOR \ + 'S', 0, 'A', 0, 'M', 0, 'S', 0, 'U', 0, 'N', 0, 'G', 0 -static void -s3c24dci_wakeup_peer(struct s3c24dci_softc *sc) -{ +#define STRING_PRODUCT \ + 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ + 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ + 'U', 0, 'B', 0, -} +USB_MAKE_STRING_DESC(STRING_LANG, s3c24dci_langtab); +USB_MAKE_STRING_DESC(STRING_VENDOR, s3c24dci_vendor); +USB_MAKE_STRING_DESC(STRING_PRODUCT, s3c24dci_product); static usb_error_t s3c24dci_roothub_exec(struct usb_device *udev, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#9 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:25:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5D91D1065672; Sat, 25 Jul 2009 10:25:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DCDD106566C for ; Sat, 25 Jul 2009 10:25:29 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E664A8FC25 for ; Sat, 25 Jul 2009 10:25:28 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PAPSc0079589 for ; Sat, 25 Jul 2009 10:25:28 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PAPSSl079587 for perforce@freebsd.org; Sat, 25 Jul 2009 10:25:28 GMT (envelope-from syl@FreeBSD.org) Date: Sat, 25 Jul 2009 10:25:28 GMT Message-Id: <200907251025.n6PAPSSl079587@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 166540 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:25:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=166540 Change 166540 by syl@syl_atuin on 2009/07/25 10:25:07 Implements dci_clock_on. Implements dci_clock_off. Implements dci_pull_up. Implements dci_pull_down. Implements dci_wakeup_peer. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#14 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#10 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#14 (text+ko) ==== @@ -151,31 +151,68 @@ static void s3c24dci_clocks_on(struct s3c24dci_softc *sc) { + if (sc->sc_flags.clocks_off && + sc->sc_flags.port_powered) { + DPRINTFN(5, "\n"); + + if (sc->sc_clocks_on) { + (sc->sc_clocks_on) (sc->sc_clocks_arg); + } + sc->sc_flags.clocks_off = 0; + } } static void s3c24dci_clocks_off(struct s3c24dci_softc *sc) { + if (!sc->sc_flags.clocks_off) { + DPRINTFN(5, "\n"); + + if (sc->sc_clocks_off) { + (sc->sc_clocks_off) (sc->sc_clocks_arg); + } + sc->sc_flags.clocks_off = 1; + } } static void s3c24dci_pull_up(struct s3c24dci_softc *sc) { + /* pullup D+, if possible */ + if (!sc->sc_flags.d_pulled_up && + sc->sc_flags.port_powered) { + sc->sc_flags.d_pulled_up = 1; + (sc->sc_pull_up) (sc->sc_pull_arg); + } } static void s3c24dci_pull_down(struct s3c24dci_softc *sc) { + /* pulldown D+, if possible */ + if (sc->sc_flags.d_pulled_up) { + sc->sc_flags.d_pulled_up = 0; + (sc->sc_pull_down) (sc->sc_pull_arg); + } } static void s3c24dci_wakeup_peer(struct s3c24dci_softc *sc) { + if (!(sc->sc_flags.status_suspend)) { + return; + } + S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_PWR, S3C24_DCI_MCU_RESUME); + /* wait 8 milliseconds */ + /* Wait for reset to complete. */ + usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); + + S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_FUNC_ADDR, 0); } ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#10 (text+ko) ==== @@ -245,6 +245,14 @@ bus_space_tag_t sc_io_tag; bus_space_handle_t sc_io_hdl; + void (*sc_clocks_on) (void *arg); + void (*sc_clocks_off) (void *arg); + void *sc_clocks_arg; + + void (*sc_pull_up) (void *arg); + void (*sc_pull_down) (void *arg); + void *sc_pull_arg; + uint8_t sc_rt_addr; /* root HUB address */ uint8_t sc_dv_addr; /* device address */ uint8_t sc_conf; /* root HUB config */ From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:27:33 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 61B01106566B; Sat, 25 Jul 2009 10:27:32 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55A09106564A for ; Sat, 25 Jul 2009 10:27:31 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4464A8FC1C for ; Sat, 25 Jul 2009 10:27:31 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PARV3g079705 for ; Sat, 25 Jul 2009 10:27:31 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PARV5D079703 for perforce@freebsd.org; Sat, 25 Jul 2009 10:27:31 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 10:27:31 GMT Message-Id: <200907251027.n6PARV5D079703@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166541 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:27:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=166541 Change 166541 by andre@andre_t61 on 2009/07/25 10:27:15 In uma_zone_set_max(): Lock the keg when changing uk_maxpages even though normally the zone lock is the keg lock. Handle the value 0 for unlimited. Before it would result in a minimum sized zone. Wakeup anyone blocked on the keg/zone when the limit is raised or removed. Affected files ... .. //depot/projects/tcp_reass/vm/uma_core.c#7 edit Differences ... ==== //depot/projects/tcp_reass/vm/uma_core.c#7 (text+ko) ==== @@ -2761,7 +2761,7 @@ clearfull = 0; if (keg->uk_flags & UMA_ZFLAG_FULL) { - if (keg->uk_pages < keg->uk_maxpages) { + if (keg->uk_pages < keg->uk_maxpages || keg->uk_maxpages == 0) { keg->uk_flags &= ~UMA_ZFLAG_FULL; clearfull = 1; } @@ -2787,13 +2787,45 @@ void uma_zone_set_max(uma_zone_t zone, int nitems) { + u_int32_t mp; uma_keg_t keg; + int clearfull = 0; + /* + * Normally the zone lock *is* the keg lock. + */ ZONE_LOCK(zone); keg = zone_first_keg(zone); - keg->uk_maxpages = (nitems / keg->uk_ipers) * keg->uk_ppera; - if (keg->uk_maxpages * keg->uk_ipers < nitems) - keg->uk_maxpages += keg->uk_ppera; + keg_relock(keg, zone); + + mp = keg->uk_maxpages; + /* + * Increase the limit or remove it. + */ + if (nitems > 0) { + keg->uk_maxpages = (nitems / keg->uk_ipers) * keg->uk_ppera; + if (keg->uk_maxpages * keg->uk_ipers < nitems) + keg->uk_maxpages += keg->uk_ppera; + } else + keg->uk_maxpages = 0; + + /* + * If the keg was full and the limit was increased, + * or removed, then wake up anyone stuck on waiting + * for memory. + */ + if ((keg->uk_flags & UMA_ZFLAG_FULL) && + (keg->uk_maxpages == 0 || mp < keg->uk_maxpages)) { + keg->uk_flags &= ~UMA_ZFLAG_FULL; + clearfull = 1; + wakeup(keg); + } + zone_relock(zone, keg); + + if (clearfull) { + zone->uz_flags &= ~UMA_ZFLAG_FULL; + wakeup(zone); + } ZONE_UNLOCK(zone); } From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:30:35 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 12815106568E; Sat, 25 Jul 2009 10:30:35 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3B0A106568B for ; Sat, 25 Jul 2009 10:30:34 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B22B48FC0C for ; Sat, 25 Jul 2009 10:30:34 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PAUYUh079940 for ; Sat, 25 Jul 2009 10:30:34 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PAUYEH079938 for perforce@freebsd.org; Sat, 25 Jul 2009 10:30:34 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 10:30:34 GMT Message-Id: <200907251030.n6PAUYEH079938@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166542 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:30:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=166542 Change 166542 by andre@andre_t61 on 2009/07/25 10:29:34 Add generic sysctl_zonelimit() for use with SYSCTL_PROC() to report and modify UMA zone limits. Affected files ... .. //depot/projects/tcp_reass/kern/kern_sysctl.c#8 edit .. //depot/projects/tcp_reass/sys/sysctl.h#9 edit Differences ... ==== //depot/projects/tcp_reass/kern/kern_sysctl.c#8 (text+ko) ==== @@ -63,6 +63,7 @@ #include +#include #include #include @@ -963,6 +964,28 @@ return (0); } +/* + * Based on on sysctl_handle_int() report and set UMA zone limits. + */ + +int +sysctl_zonelimit(SYSCTL_HANDLER_ARGS) +{ + int error, nitems; + uma_zone_t zone = (uma_zone_t)arg1; + + nitems = uma_zone_get_max(zone); + + error = sysctl_handle_int(oidp, &nitems, 0, req); + if (error || !req->newptr) + return (error); + + if (nitems < 1) + return (EINVAL); + + uma_zone_set_max(zone, nitems); + return (error); +} /* * Handle a long, signed or unsigned. arg1 points to it. ==== //depot/projects/tcp_reass/sys/sysctl.h#9 (text+ko) ==== @@ -170,6 +170,7 @@ int sysctl_handle_int(SYSCTL_HANDLER_ARGS); int sysctl_msec_to_ticks(SYSCTL_HANDLER_ARGS); +int sysctl_zonelimit(SYSCTL_HANDLER_ARGS); int sysctl_handle_long(SYSCTL_HANDLER_ARGS); int sysctl_handle_quad(SYSCTL_HANDLER_ARGS); int sysctl_handle_intptr(SYSCTL_HANDLER_ARGS); From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:33:38 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7C42A1065673; Sat, 25 Jul 2009 10:33:38 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38C1F106566B for ; Sat, 25 Jul 2009 10:33:38 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 276DC8FC23 for ; Sat, 25 Jul 2009 10:33:38 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PAXcnj080153 for ; Sat, 25 Jul 2009 10:33:38 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PAXcTD080151 for perforce@freebsd.org; Sat, 25 Jul 2009 10:33:38 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 10:33:38 GMT Message-Id: <200907251033.n6PAXcTD080151@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166543 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:33:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=166543 Change 166543 by andre@andre_t61 on 2009/07/25 10:32:52 Use SYSCTL_PROC() with sysctl_zonelimit to handle zone limit modifications to the reassembly zone. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#49 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#49 (text+ko) ==== @@ -115,8 +115,9 @@ "Per connection limit of TCP segment blocks in reassembly queue"); static int tcp_reass_globalmaxblocks = 65535; -SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, CTLFLAG_RDTUN, - &tcp_reass_globalmaxblocks, 0, +SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, + CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_TUN, tcp_reass_zone, + 0, sysctl_zonelimit, "I", "Global limit of TCP segment blocks in reassembly queue"); static int tcp_reass_timeout = 0; @@ -168,7 +169,7 @@ tcp_reass_zone = uma_zcreate("tcpreass", sizeof(struct tcp_reass_block), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); uma_zone_set_max(tcp_reass_zone, tcp_reass_globalmaxblocks); - tcp_reass_timeout = 30 * hz; + tcp_reass_timeout = 2 * TCPTV_MSL; } /* @@ -380,8 +381,11 @@ else thflags &= ~TH_FIN; - TCPSTAT_INC(tcps_rcvoopack); - TCPSTAT_ADD(tcps_rcvoobyte, len); + /* Statistics. */ + if (tp->rcv_nxt != th_seq) { + TCPSTAT_INC(tcps_rcvoopack); + TCPSTAT_ADD(tcps_rcvoobyte, len); + } /* * Get rid of packet header and mtags. From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:39:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BF05B1065672; Sat, 25 Jul 2009 10:39:45 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E093106566B for ; Sat, 25 Jul 2009 10:39:45 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6B1118FC23 for ; Sat, 25 Jul 2009 10:39:45 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PAdjei080610 for ; Sat, 25 Jul 2009 10:39:45 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PAdid6080608 for perforce@freebsd.org; Sat, 25 Jul 2009 10:39:44 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 10:39:44 GMT Message-Id: <200907251039.n6PAdid6080608@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166544 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:39:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=166544 Change 166544 by mav@mav_mavbook on 2009/07/25 10:39:16 IFC Affected files ... .. //depot/projects/scottl-camlock/src/ObsoleteFiles.inc#10 integrate .. //depot/projects/scottl-camlock/src/UPDATING#11 integrate .. //depot/projects/scottl-camlock/src/bin/ln/ln.1#3 integrate .. //depot/projects/scottl-camlock/src/bin/ln/ln.c#3 integrate .. //depot/projects/scottl-camlock/src/bin/ps/ps.c#3 integrate .. //depot/projects/scottl-camlock/src/cddl/lib/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/cddl/lib/libctf/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/cddl/lib/libdtrace/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/contrib/gcc/dwarf2out.c#3 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libdialog/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libg2c/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libobjc/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libreadline/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/gnu/lib/libregex/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/lib/libalias/libalias/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libarchive/Makefile#6 integrate .. //depot/projects/scottl-camlock/src/lib/libautofs/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libbegemot/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libbluetooth/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libbsm/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libbsnmp/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/lib/libbz2/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libc/gen/pw_scan.c#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/sys/link.2#3 integrate .. //depot/projects/scottl-camlock/src/lib/libcrypt/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libdevstat/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libdwarf/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/lib/libedit/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libexpat/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libfetch/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libftpio/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libgpib/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libipsec/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libkiconv/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/lib/libkse/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/kvm.c#3 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/kvm_private.h#3 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/kvm_proc.c#4 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/kvm_vnet.c#1 branch .. //depot/projects/scottl-camlock/src/lib/libmagic/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libmemstat/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libncp/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libnetgraph/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libngatm/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libopie/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libpam/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/lib/libpcap/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libproc/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/lib/libradius/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libsdp/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libsmb/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libtacplus/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libugidfw/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libusb/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libusbhid/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libutil/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libvgl/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libwrap/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/lib/libypclnt/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/lib/ncurses/ncurses/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/sbin/dhclient/dispatch.c#3 integrate .. //depot/projects/scottl-camlock/src/sbin/ifconfig/ifieee80211.c#6 integrate .. //depot/projects/scottl-camlock/src/secure/lib/libcrypto/Makefile#5 integrate .. //depot/projects/scottl-camlock/src/secure/lib/libssh/Makefile#4 integrate .. //depot/projects/scottl-camlock/src/secure/lib/libssl/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/Makefile#9 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/ahci.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/mxge.4#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man4/siis.4#1 branch .. //depot/projects/scottl-camlock/src/share/misc/committers-ports.dot#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/initcpu.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/pmap.c#29 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/cpufunc.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/md_var.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/busdma_machdep.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/cpufunc.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/pmap.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/vm_machdep.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#26 integrate .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#3 integrate .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/conf/files#40 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#45 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_ath.c#28 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ath/if_athvar.h#20 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ciss/ciss.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/dev/e1000/e1000_ich8lan.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/e1000/if_em.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/e1000/if_igb.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/dev/if_ndis/if_ndis.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/dev/ixgbe/ixgbe.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mxge/if_mxge.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/dev/pci/pci.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/dev/siis/siis.c#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/siis/siis.h#1 branch .. //depot/projects/scottl-camlock/src/sys/dev/uart/uart_cpu_powerpc.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfs/nfsport.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clbio.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clrpcops.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clstate.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clvfsops.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clvnops.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/fs/procfs/procfs_map.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/pmap.c#30 integrate .. //depot/projects/scottl-camlock/src/sys/i386/xen/pmap.c#6 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/ia64/pmap.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_linker.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_proc.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_sysctl.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_vimage.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/kern/link_elf_obj.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_domain.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/kern/uipc_socket.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_bio.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/mips/mips/pmap.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/modules/Makefile#32 integrate .. //depot/projects/scottl-camlock/src/sys/modules/ahci/Makefile#2 integrate .. //depot/projects/scottl-camlock/src/sys/modules/siis/Makefile#1 branch .. //depot/projects/scottl-camlock/src/sys/modules/wlan/Makefile#12 integrate .. //depot/projects/scottl-camlock/src/sys/net/flowtable.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/net/if.c#31 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_clone.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_clone.h#6 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_gif.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/net/if_loop.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/net/route.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/net/rtsock.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/net/vnet.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/net/vnet.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_crypto.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_crypto.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_input.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_ioctl.h#14 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211_output.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/bluetooth/socket/ng_btsocket.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/netgraph.h#15 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_base.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_eiface.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_ether.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_gif.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_iface.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netgraph/ng_socket.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/igmp.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_pcb.c#26 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_proto.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/in_rmx.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ip_input.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw2.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_subr.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/tcp_timer.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/frag6.c#14 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6_proto.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/ip6_input.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/mld6.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/ipsec.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/key.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/keysock.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_ipcomp.c#8 integrate .. //depot/projects/scottl-camlock/src/sys/netipsec/xform_ipip.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/booke/pmap.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/mpc85xx/lbc.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/param.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/pmap.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/sys/domain.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sys/kernel.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/sys/param.h#28 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sysctl.h#19 integrate .. //depot/projects/scottl-camlock/src/sys/sys/user.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sys/vimage.h#8 integrate .. //depot/projects/scottl-camlock/src/sys/vm/device_pager.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/vm/sg_pager.c#1 branch .. //depot/projects/scottl-camlock/src/sys/vm/vm.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_fault.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_map.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_meter.c#12 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_object.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_object.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_page.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_pageout.c#18 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_pager.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/vm/vm_pager.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/xen/evtchn/evtchn.c#4 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/stumbler/stumbler.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/README#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/ap/ap.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/assoc/assoc.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/expand/expand.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/prga/prga.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/w00t/redir/redir.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/wesside/wesside/wesside.c#4 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/wlaninject/wlaninject.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/tools/net80211/wlanstats/wlanstats.c#4 integrate .. //depot/projects/scottl-camlock/src/usr.bin/calendar/calendars/calendar.freebsd#4 integrate .. //depot/projects/scottl-camlock/src/usr.bin/locate/locate/fastfind.c#3 integrate .. //depot/projects/scottl-camlock/src/usr.bin/locate/locate/locate.c#3 integrate .. //depot/projects/scottl-camlock/src/usr.bin/procstat/procstat_cred.c#2 integrate .. //depot/projects/scottl-camlock/src/usr.bin/procstat/procstat_vm.c#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/bsnmpd/modules/Makefile.inc#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/ppp/nat_cmd.c#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/disks.c#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/help/usage.hlp#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/label.c#4 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/user.c#3 integrate Differences ... ==== //depot/projects/scottl-camlock/src/ObsoleteFiles.inc#10 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.202 2009/07/18 16:33:27 marcus Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.204 2009/07/20 19:51:47 antoine Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,12 +14,225 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090719: library version bump for 8.0 +OLD_LIBS+=lib/libalias.so.6 +OLD_LIBS+=lib/libavl.so.1 +OLD_LIBS+=lib/libbegemot.so.3 +OLD_LIBS+=lib/libbsdxml.so.3 +OLD_LIBS+=lib/libbsnmp.so.4 +OLD_LIBS+=lib/libcam.so.4 +OLD_LIBS+=lib/libcrypt.so.4 +OLD_LIBS+=lib/libcrypto.so.5 +OLD_LIBS+=lib/libctf.so.1 +OLD_LIBS+=lib/libdevstat.so.6 +OLD_LIBS+=lib/libdtrace.so.1 +OLD_LIBS+=lib/libedit.so.6 +OLD_LIBS+=lib/libgeom.so.4 +OLD_LIBS+=lib/libipsec.so.3 +OLD_LIBS+=lib/libipx.so.4 +OLD_LIBS+=lib/libkiconv.so.3 +OLD_LIBS+=lib/libkvm.so.4 +OLD_LIBS+=lib/libmd.so.4 +OLD_LIBS+=lib/libncurses.so.7 +OLD_LIBS+=lib/libncursesw.so.7 +OLD_LIBS+=lib/libnvpair.so.1 +OLD_LIBS+=lib/libpcap.so.6 +OLD_LIBS+=lib/libreadline.so.7 +OLD_LIBS+=lib/libsbuf.so.4 +OLD_LIBS+=lib/libufs.so.4 +OLD_LIBS+=lib/libumem.so.1 +OLD_LIBS+=lib/libutil.so.7 +OLD_LIBS+=lib/libuutil.so.1 +OLD_LIBS+=lib/libz.so.4 +OLD_LIBS+=lib/libzfs.so.1 +OLD_LIBS+=lib/libzpool.so.1 +OLD_LIBS+=usr/lib/libarchive.so.4 +OLD_LIBS+=usr/lib/libauditd.so.4 +OLD_LIBS+=usr/lib/libbluetooth.so.3 +OLD_LIBS+=usr/lib/libbsm.so.2 +OLD_LIBS+=usr/lib/libbz2.so.3 +OLD_LIBS+=usr/lib/libcalendar.so.4 +OLD_LIBS+=usr/lib/libcom_err.so.4 +OLD_LIBS+=usr/lib/libdevinfo.so.4 +OLD_LIBS+=usr/lib/libdialog.so.6 +OLD_LIBS+=usr/lib/libdwarf.so.1 +OLD_LIBS+=usr/lib/libfetch.so.5 +OLD_LIBS+=usr/lib/libform.so.4 +OLD_LIBS+=usr/lib/libformw.so.4 +OLD_LIBS+=usr/lib/libftpio.so.7 +OLD_LIBS+=usr/lib/libgnuregex.so.4 +OLD_LIBS+=usr/lib/libgpib.so.2 +OLD_LIBS+=usr/lib/libhistory.so.7 +OLD_LIBS+=usr/lib/libmagic.so.3 +OLD_LIBS+=usr/lib/libmemstat.so.2 +OLD_LIBS+=usr/lib/libmenu.so.4 +OLD_LIBS+=usr/lib/libmenuw.so.4 +OLD_LIBS+=usr/lib/libmilter.so.4 +OLD_LIBS+=usr/lib/libncp.so.3 +OLD_LIBS+=usr/lib/libnetgraph.so.3 +OLD_LIBS+=usr/lib/libngatm.so.3 +OLD_LIBS+=usr/lib/libobjc.so.3 +OLD_LIBS+=usr/lib/libopie.so.5 +OLD_LIBS+=usr/lib/libpam.so.4 +OLD_LIBS+=usr/lib/libpanel.so.4 +OLD_LIBS+=usr/lib/libpanelw.so.4 +OLD_LIBS+=usr/lib/libpmc.so.4 +OLD_LIBS+=usr/lib/libproc.so.1 +OLD_LIBS+=usr/lib/libradius.so.3 +OLD_LIBS+=usr/lib/librpcsvc.so.4 +OLD_LIBS+=usr/lib/libsdp.so.3 +OLD_LIBS+=usr/lib/libsmb.so.3 +OLD_LIBS+=usr/lib/libssh.so.4 +OLD_LIBS+=usr/lib/libssl.so.5 +OLD_LIBS+=usr/lib/libtacplus.so.3 +OLD_LIBS+=usr/lib/libugidfw.so.3 +OLD_LIBS+=usr/lib/libusb.so.1 +OLD_LIBS+=usr/lib/libusbhid.so.3 +OLD_LIBS+=usr/lib/libvgl.so.5 +OLD_LIBS+=usr/lib/libwrap.so.5 +OLD_LIBS+=usr/lib/libypclnt.so.3 +OLD_LIBS+=usr/lib/pam_chroot.so.4 +OLD_LIBS+=usr/lib/pam_deny.so.4 +OLD_LIBS+=usr/lib/pam_echo.so.4 +OLD_LIBS+=usr/lib/pam_exec.so.4 +OLD_LIBS+=usr/lib/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib/pam_group.so.4 +OLD_LIBS+=usr/lib/pam_guest.so.4 +OLD_LIBS+=usr/lib/pam_krb5.so.4 +OLD_LIBS+=usr/lib/pam_ksu.so.4 +OLD_LIBS+=usr/lib/pam_lastlog.so.4 +OLD_LIBS+=usr/lib/pam_login_access.so.4 +OLD_LIBS+=usr/lib/pam_nologin.so.4 +OLD_LIBS+=usr/lib/pam_opie.so.4 +OLD_LIBS+=usr/lib/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib/pam_permit.so.4 +OLD_LIBS+=usr/lib/pam_radius.so.4 +OLD_LIBS+=usr/lib/pam_rhosts.so.4 +OLD_LIBS+=usr/lib/pam_rootok.so.4 +OLD_LIBS+=usr/lib/pam_securetty.so.4 +OLD_LIBS+=usr/lib/pam_self.so.4 +OLD_LIBS+=usr/lib/pam_ssh.so.4 +OLD_LIBS+=usr/lib/pam_tacplus.so.4 +OLD_LIBS+=usr/lib/pam_unix.so.4 +OLD_LIBS+=usr/lib/snmp_atm.so.5 +OLD_LIBS+=usr/lib/snmp_bridge.so.5 +OLD_LIBS+=usr/lib/snmp_hostres.so.5 +OLD_LIBS+=usr/lib/snmp_mibII.so.5 +OLD_LIBS+=usr/lib/snmp_netgraph.so.5 +OLD_LIBS+=usr/lib/snmp_pf.so.5 +.if ${TARGET_ARCH} == "amd64" +OLD_LIBS+=usr/lib32/libalias.so.6 +OLD_LIBS+=usr/lib32/libarchive.so.4 +OLD_LIBS+=usr/lib32/libauditd.so.4 +OLD_LIBS+=usr/lib32/libavl.so.1 +OLD_LIBS+=usr/lib32/libbegemot.so.3 +OLD_LIBS+=usr/lib32/libbluetooth.so.3 +OLD_LIBS+=usr/lib32/libbsdxml.so.3 +OLD_LIBS+=usr/lib32/libbsm.so.2 +OLD_LIBS+=usr/lib32/libbsnmp.so.4 +OLD_LIBS+=usr/lib32/libbz2.so.3 +OLD_LIBS+=usr/lib32/libcalendar.so.4 +OLD_LIBS+=usr/lib32/libcam.so.4 +OLD_LIBS+=usr/lib32/libcom_err.so.4 +OLD_LIBS+=usr/lib32/libcrypt.so.4 +OLD_LIBS+=usr/lib32/libcrypto.so.5 +OLD_LIBS+=usr/lib32/libctf.so.1 +OLD_LIBS+=usr/lib32/libdevinfo.so.4 +OLD_LIBS+=usr/lib32/libdevstat.so.6 +OLD_LIBS+=usr/lib32/libdialog.so.6 +OLD_LIBS+=usr/lib32/libdtrace.so.1 +OLD_LIBS+=usr/lib32/libdwarf.so.1 +OLD_LIBS+=usr/lib32/libedit.so.6 +OLD_LIBS+=usr/lib32/libfetch.so.5 +OLD_LIBS+=usr/lib32/libform.so.4 +OLD_LIBS+=usr/lib32/libformw.so.4 +OLD_LIBS+=usr/lib32/libftpio.so.7 +OLD_LIBS+=usr/lib32/libgeom.so.4 +OLD_LIBS+=usr/lib32/libgnuregex.so.4 +OLD_LIBS+=usr/lib32/libgpib.so.2 +OLD_LIBS+=usr/lib32/libhistory.so.7 +OLD_LIBS+=usr/lib32/libipsec.so.3 +OLD_LIBS+=usr/lib32/libipx.so.4 +OLD_LIBS+=usr/lib32/libkiconv.so.3 +OLD_LIBS+=usr/lib32/libkvm.so.4 +OLD_LIBS+=usr/lib32/libmagic.so.3 +OLD_LIBS+=usr/lib32/libmd.so.4 +OLD_LIBS+=usr/lib32/libmemstat.so.2 +OLD_LIBS+=usr/lib32/libmenu.so.4 +OLD_LIBS+=usr/lib32/libmenuw.so.4 +OLD_LIBS+=usr/lib32/libmilter.so.4 +OLD_LIBS+=usr/lib32/libncp.so.3 +OLD_LIBS+=usr/lib32/libncurses.so.7 +OLD_LIBS+=usr/lib32/libncursesw.so.7 +OLD_LIBS+=usr/lib32/libnetgraph.so.3 +OLD_LIBS+=usr/lib32/libngatm.so.3 +OLD_LIBS+=usr/lib32/libnvpair.so.1 +OLD_LIBS+=usr/lib32/libobjc.so.3 +OLD_LIBS+=usr/lib32/libopie.so.5 +OLD_LIBS+=usr/lib32/libpam.so.4 +OLD_LIBS+=usr/lib32/libpanel.so.4 +OLD_LIBS+=usr/lib32/libpanelw.so.4 +OLD_LIBS+=usr/lib32/libpcap.so.6 +OLD_LIBS+=usr/lib32/libpmc.so.4 +OLD_LIBS+=usr/lib32/libproc.so.1 +OLD_LIBS+=usr/lib32/libradius.so.3 +OLD_LIBS+=usr/lib32/libreadline.so.7 +OLD_LIBS+=usr/lib32/librpcsvc.so.4 +OLD_LIBS+=usr/lib32/libsbuf.so.4 +OLD_LIBS+=usr/lib32/libsdp.so.3 +OLD_LIBS+=usr/lib32/libsmb.so.3 +OLD_LIBS+=usr/lib32/libssh.so.4 +OLD_LIBS+=usr/lib32/libssl.so.5 +OLD_LIBS+=usr/lib32/libtacplus.so.3 +OLD_LIBS+=usr/lib32/libufs.so.4 +OLD_LIBS+=usr/lib32/libugidfw.so.3 +OLD_LIBS+=usr/lib32/libumem.so.1 +OLD_LIBS+=usr/lib32/libusb.so.1 +OLD_LIBS+=usr/lib32/libusbhid.so.3 +OLD_LIBS+=usr/lib32/libutil.so.7 +OLD_LIBS+=usr/lib32/libuutil.so.1 +OLD_LIBS+=usr/lib32/libvgl.so.5 +OLD_LIBS+=usr/lib32/libwrap.so.5 +OLD_LIBS+=usr/lib32/libypclnt.so.3 +OLD_LIBS+=usr/lib32/libz.so.4 +OLD_LIBS+=usr/lib32/libzfs.so.1 +OLD_LIBS+=usr/lib32/libzpool.so.1 +OLD_LIBS+=usr/lib32/pam_chroot.so.4 +OLD_LIBS+=usr/lib32/pam_deny.so.4 +OLD_LIBS+=usr/lib32/pam_echo.so.4 +OLD_LIBS+=usr/lib32/pam_exec.so.4 +OLD_LIBS+=usr/lib32/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib32/pam_group.so.4 +OLD_LIBS+=usr/lib32/pam_guest.so.4 +OLD_LIBS+=usr/lib32/pam_krb5.so.4 +OLD_LIBS+=usr/lib32/pam_ksu.so.4 +OLD_LIBS+=usr/lib32/pam_lastlog.so.4 +OLD_LIBS+=usr/lib32/pam_login_access.so.4 +OLD_LIBS+=usr/lib32/pam_nologin.so.4 +OLD_LIBS+=usr/lib32/pam_opie.so.4 +OLD_LIBS+=usr/lib32/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib32/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib32/pam_permit.so.4 +OLD_LIBS+=usr/lib32/pam_radius.so.4 +OLD_LIBS+=usr/lib32/pam_rhosts.so.4 +OLD_LIBS+=usr/lib32/pam_rootok.so.4 +OLD_LIBS+=usr/lib32/pam_securetty.so.4 +OLD_LIBS+=usr/lib32/pam_self.so.4 +OLD_LIBS+=usr/lib32/pam_ssh.so.4 +OLD_LIBS+=usr/lib32/pam_tacplus.so.4 +OLD_LIBS+=usr/lib32/pam_unix.so.4 +.endif # 20090718: the gdm pam.d file is no longer required. OLD_FILES+=etc/pam.d/gdm # 20090713: vimage container structs removed. OLD_FILES+=usr/include/netinet/vinet.h OLD_FILES+=usr/include/netinet6/vinet6.h OLD_FILES+=usr/include/netipsec/vipsec.h +# 20090712: ieee80211.4 -> net80211.4 +OLD_FILES+=usr/share/man/man4/ieee80211.4.gz +# 20090711: typo fixed, kproc_resume,.9 -> kproc_resume.9 +OLD_FILES+=usr/share/man/man9/kproc_resume,.9.gz # 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved OLD_FILES+=usr/share/man/man3/msgctl.3.gz OLD_FILES+=usr/share/man/man3/msgget.3.gz @@ -274,8 +487,6 @@ OLD_FILES+=usr/include/dev/usb/usb_port.h OLD_FILES+=usr/include/dev/usb/usb_quirks.h OLD_FILES+=usr/include/dev/usb/usbcdc.h -OLD_FILES+=usr/include/dev/usb/usbdi.h -OLD_FILES+=usr/include/dev/usb/usbdi_util.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h # 20090203: removal of pccard header files @@ -1863,7 +2074,6 @@ OLD_FILES+=usr/bin/kenv OLD_FILES+=usr/sbin/elf2aout # 200210XX -OLD_FILES+=usr/include/libusb.h OLD_FILES+=usr/include/libusbhid.h OLD_FILES+=usr/share/man/man3/All_FreeBSD.3.gz OLD_FILES+=usr/share/man/man3/CheckRules.3.gz ==== //depot/projects/scottl-camlock/src/UPDATING#11 (text+ko) ==== @@ -22,6 +22,11 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090719: + Bump the shared library version numbers for all libraries that + do not use symbol versioning as part of the 8.0-RELEASE cycle. + Bump __FreeBSD_version to 800105. + 20090714: Due to changes in the implementation of virtual network stack support, all network-related kernel modules must be recompiled. @@ -1660,4 +1665,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.630 2009/07/14 22:48:30 rwatson Exp $ +$FreeBSD: src/UPDATING,v 1.631 2009/07/19 17:25:24 kensmith Exp $ ==== //depot/projects/scottl-camlock/src/bin/ln/ln.1#3 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)ln.1 8.2 (Berkeley) 12/30/93 -.\" $FreeBSD: src/bin/ln/ln.1,v 1.34 2009/01/13 15:24:35 trhodes Exp $ +.\" $FreeBSD: src/bin/ln/ln.1,v 1.35 2009/07/19 17:35:23 jilles Exp $ .\" -.Dd June 6, 2008 +.Dd July 17, 2009 .Dt LN 1 .Os .Sh NAME @@ -41,13 +41,13 @@ .Nd link files .Sh SYNOPSIS .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file .Op Ar target_file .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file ... @@ -77,16 +77,6 @@ .Pp The options are as follows: .Bl -tag -width flag -.It Fl f -If the target file already exists, -then unlink it so that the link may occur. -(The -.Fl f -option overrides any previous -.Fl i -and -.Fl w -options.) .It Fl F If the target file already exists and is a directory, then remove it so that the link may occur. @@ -105,6 +95,29 @@ option is a no-op unless .Fl s option is specified. +.It Fl L +When creating a hard link to a symbolic link, +create a hard link to the target of the symbolic link. +This is the default. +This option cancels the +.Fl P +option. +.It Fl P +When creating a hard link to a symbolic link, +create a hard link to the symbolic link itself. +This option cancels the +.Fl L +option. +.It Fl f +If the target file already exists, +then unlink it so that the link may occur. +(The +.Fl f +option overrides any previous +.Fl i +and +.Fl w +options.) .It Fl h If the .Ar target_file ==== //depot/projects/scottl-camlock/src/bin/ln/ln.c#3 (text+ko) ==== @@ -39,13 +39,14 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.38 2008/06/07 09:37:30 keramida Exp $"); +__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.39 2009/07/19 17:35:23 jilles Exp $"); #include #include #include #include +#include #include #include #include @@ -56,12 +57,11 @@ int Fflag; /* Remove empty directories also. */ int hflag; /* Check new name for symlink first. */ int iflag; /* Interactive mode. */ +int Pflag; /* Create hard links to symlinks. */ int sflag; /* Symbolic, not hard, link. */ int vflag; /* Verbose output. */ int wflag; /* Warn if symlink target does not * exist, and -f is not enabled. */ - /* System link call. */ -int (*linkf)(const char *, const char *); char linkch; int linkit(const char *, const char *, int); @@ -90,15 +90,20 @@ argv += optind; if (argc != 2) usage(); - linkf = link; exit(linkit(argv[0], argv[1], 0)); } - while ((ch = getopt(argc, argv, "Ffhinsvw")) != -1) + while ((ch = getopt(argc, argv, "FLPfhinsvw")) != -1) switch (ch) { case 'F': Fflag = 1; break; + case 'L': + Pflag = 0; + break; + case 'P': + Pflag = 1; + break; case 'f': fflag = 1; iflag = 0; @@ -129,7 +134,6 @@ argv += optind; argc -= optind; - linkf = sflag ? symlink : link; linkch = sflag ? '-' : '='; if (sflag == 0) Fflag = 0; @@ -179,7 +183,7 @@ if (!sflag) { /* If source doesn't exist, quit now. */ - if (stat(source, &sb)) { + if ((Pflag ? lstat : stat)(source, &sb)) { warn("%s", source); return (1); } @@ -276,7 +280,9 @@ } /* Attempt the link. */ - if ((*linkf)(source, target)) { + if (sflag ? symlink(source, target) : + linkat(AT_FDCWD, source, AT_FDCWD, target, + Pflag ? 0 : AT_SYMLINK_FOLLOW)) { warn("%s", target); return (1); } @@ -289,8 +295,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n%s\n", - "usage: ln [-s [-F]] [-f | -i] [-hnv] source_file [target_file]", - " ln [-s [-F]] [-f | -i] [-hnv] source_file ... target_dir", + "usage: ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file [target_file]", + " ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file ... target_dir", " link source_file target_file"); exit(1); } ==== //depot/projects/scottl-camlock/src/bin/ps/ps.c#3 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.116 2009/05/18 01:45:52 brian Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.117 2009/07/23 10:20:12 brian Exp $"); #include #include @@ -1331,7 +1331,7 @@ static void usage(void) { -#define SINGLE_OPTS "[-aCce" OPT_LAZY_f "HhjlmrSTuvwXxZ]" +#define SINGLE_OPTS "[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]" (void)fprintf(stderr, "%s\n%s\n%s\n%s\n", "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]", ==== //depot/projects/scottl-camlock/src/cddl/lib/Makefile.inc#3 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.2 2007/04/16 21:20:24 ru Exp $ +# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.3 2009/07/19 17:25:24 kensmith Exp $ SHLIBDIR?= /lib -SHLIB_MAJOR?= 1 +SHLIB_MAJOR?= 2 .include "../Makefile.inc" ==== //depot/projects/scottl-camlock/src/cddl/lib/libctf/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= ctf -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 SRCS= ctf_create.c \ ctf_decl.c \ ==== //depot/projects/scottl-camlock/src/cddl/lib/libdtrace/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= dtrace -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 WARNS= 1 ==== //depot/projects/scottl-camlock/src/contrib/gcc/dwarf2out.c#3 (text+ko) ==== @@ -10007,7 +10007,7 @@ return NULL_TREE; else if (!cgraph_global_info_ready && (TREE_CODE (*tp) == VAR_DECL || TREE_CODE (*tp) == FUNCTION_DECL)) - gcc_unreachable (); + return *tp; else if (DECL_P (*tp) && TREE_CODE (*tp) == VAR_DECL) { struct cgraph_varpool_node *node = cgraph_varpool_node (*tp); ==== //depot/projects/scottl-camlock/src/gnu/lib/libdialog/Makefile#3 (text+ko) ==== @@ -1,5 +1,5 @@ # Makefile for libdialog -# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.45 2007/06/18 18:47:52 rafan Exp $ +# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.46 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ INCS= dialog.h MAN= dialog.3 -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 SRCS= kernel.c rc.c checklist.c inputbox.c menubox.c msgbox.c \ lineedit.c radiolist.c textbox.c yesno.c prgbox.c raw_popen.c \ fselect.c ui_objects.c dir.c notify.c help.c gauge.c tree.c ==== //depot/projects/scottl-camlock/src/gnu/lib/libg2c/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.17 2006/03/18 21:37:03 ru Exp $ +# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.18 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ .PATH: ${SRCDIR} ${SRCDIR}/libU77 ${SRCDIR}/libF77 ${SRCDIR}/libI77 LIB= g2c -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 # Traditional FORTRAN Library members defined in libF77 ==== //depot/projects/scottl-camlock/src/gnu/lib/libobjc/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.33 2007/11/20 04:20:31 kensmith Exp $ +# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ OBJCDIR=${.CURDIR}/../../../contrib/libobjc GCCDIR= ${.CURDIR}/../../../contrib/gcc @@ -7,7 +7,7 @@ .PATH: ${OBJCDIR}/objc ${OBJCDIR} LIB= objc -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= archive.c class.c encoding.c gc.c hash.c init.c linking.m misc.c \ nil_method.c NXConstStr.m Object.m objects.c Protocol.m sarray.c \ ==== //depot/projects/scottl-camlock/src/gnu/lib/libreadline/Makefile.inc#3 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.15 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.16 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR=7 +SHLIB_MAJOR=8 RL_LIBRARY_VERSION=5.2 SRCDIR= ${.CURDIR}/../../../../contrib/libreadline ==== //depot/projects/scottl-camlock/src/gnu/lib/libregex/Makefile#3 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.33 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ SUBDIR= doc LIB= gnuregex -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 SRCS= gnuregex.c INCSGROUPS= INCS WRINCS PXINCS ==== //depot/projects/scottl-camlock/src/lib/Makefile.inc#3 (text+ko) ==== @@ -1,3 +1,3 @@ -# $FreeBSD: src/lib/Makefile.inc,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/Makefile.inc,v 1.5 2009/07/19 17:25:24 kensmith Exp $ # Default version for system libs (override in /Makefile if necessary) -SHLIB_MAJOR?= 4 +SHLIB_MAJOR?= 5 ==== //depot/projects/scottl-camlock/src/lib/libalias/libalias/Makefile#3 (text+ko) ==== @@ -1,10 +1,10 @@ -# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.5 2008/03/12 11:58:28 piso Exp $ +# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ .PATH: ${.CURDIR}/../../../sys/netinet/libalias LIB= alias SHLIBDIR?= /lib -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 MAN= libalias.3 SRCS= alias.c alias_db.c alias_proxy.c alias_util.c alias_mod.c INCS= alias.h ==== //depot/projects/scottl-camlock/src/lib/libarchive/Makefile#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/Makefile,v 1.97 2009/05/30 17:26:55 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/Makefile,v 1.98 2009/07/19 17:25:24 kensmith Exp $ .include LIB= archive @@ -7,7 +7,7 @@ # FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system. # It has no real relation to the libarchive version number. -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I${.OBJDIR} ==== //depot/projects/scottl-camlock/src/lib/libautofs/Makefile#3 (text+ko) ==== @@ -1,8 +1,8 @@ # $Id: Makefile,v 1.5 2004/09/08 08:12:21 bright Exp $ -# $FreeBSD: src/lib/libautofs/Makefile,v 1.5 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libautofs/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ LIB= autofs -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 WARNS?= 4 SRCS= libautofs.c ==== //depot/projects/scottl-camlock/src/lib/libbegemot/Makefile#3 (text+ko) ==== @@ -1,11 +1,11 @@ -# $FreeBSD: src/lib/libbegemot/Makefile,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libbegemot/Makefile,v 1.5 2009/07/19 17:25:24 kensmith Exp $ LIBBEGEMOT_DIR=${.CURDIR}/../../contrib/libbegemot .PATH: ${LIBBEGEMOT_DIR} LIB= begemot -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SHLIBDIR?= /lib # WARNS?= 6 ==== //depot/projects/scottl-camlock/src/lib/libbluetooth/Makefile#3 (text+ko) ==== @@ -1,5 +1,5 @@ # $Id: Makefile,v 1.5 2003/07/22 18:38:04 max Exp $ -# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.6 2009/04/22 15:50:03 emax Exp $ +# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.7 2009/07/19 17:25:24 kensmith Exp $ LIB= bluetooth MAN= bluetooth.3 @@ -7,7 +7,7 @@ WARNS?= 2 CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../../sys -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= bluetooth.c dev.c hci.c INCS= bluetooth.h ==== //depot/projects/scottl-camlock/src/lib/libbsm/Makefile#3 (text+ko) ==== @@ -1,12 +1,12 @@ # -# $FreeBSD: src/lib/libbsm/Makefile,v 1.11 2009/04/19 16:17:13 rwatson Exp $ +# $FreeBSD: src/lib/libbsm/Makefile,v 1.12 2009/07/19 17:25:24 kensmith Exp $ # OPENBSMDIR= ${.CURDIR}/../../contrib/openbsm LIBBSMDIR= ${OPENBSMDIR}/libbsm LIB= bsm -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 .PATH: ${LIBBSMDIR} .PATH: ${OPENBSMDIR}/bsm ==== //depot/projects/scottl-camlock/src/lib/libbsnmp/Makefile.inc#3 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.7 2007/06/18 18:47:54 rafan Exp $ +# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.8 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 WARNS?= 6 NO_WERROR= INCSDIR= ${INCLUDEDIR}/bsnmp ==== //depot/projects/scottl-camlock/src/lib/libbz2/Makefile#3 (text+ko) ==== @@ -1,10 +1,10 @@ -# $FreeBSD: src/lib/libbz2/Makefile,v 1.7 2007/05/21 02:49:03 deischen Exp $ +# $FreeBSD: src/lib/libbz2/Makefile,v 1.8 2009/07/19 17:25:24 kensmith Exp $ BZ2DIR= ${.CURDIR}/../../contrib/bzip2 .PATH: ${BZ2DIR} LIB= bz2 -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= bzlib.c blocksort.c compress.c crctable.c decompress.c \ huffman.c randtable.c INCS= bzlib.h ==== //depot/projects/scottl-camlock/src/lib/libc/gen/pw_scan.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ static char sccsid[] = "@(#)pw_scan.c 8.3 (Berkeley) 4/2/94"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/pw_scan.c,v 1.26 2007/01/09 00:27:55 imp Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/pw_scan.c,v 1.27 2009/07/22 20:46:17 kensmith Exp $"); /* * This module is used to "verify" password entries by chpass(1) and @@ -58,8 +58,14 @@ * * If pw_big_ids_warning is -1 on entry to pw_scan(), it will be set based * on the existence of PW_SCAN_BIG_IDS in the environment. + * + * It is believed all baseline system software that can not handle the + * normal ID sizes is now gone so pw_big_ids_warning is disabled for now. + * But the code has been left in place in case end-users want to re-enable + * it and/or for the next time the ID sizes get bigger but pieces of the + * system lag behind. */ -static int pw_big_ids_warning = -1; +static int pw_big_ids_warning = 0; int __pw_scan(char *bp, struct passwd *pw, int flags) @@ -67,6 +73,7 @@ uid_t id; int root; char *ep, *p, *sh; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jul 25 10:55:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A23771065673; Sat, 25 Jul 2009 10:55:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C28D106566C for ; Sat, 25 Jul 2009 10:55:02 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4A8A98FC13 for ; Sat, 25 Jul 2009 10:55:02 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PAt2Y5081837 for ; Sat, 25 Jul 2009 10:55:02 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PAt2IC081835 for perforce@freebsd.org; Sat, 25 Jul 2009 10:55:02 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 10:55:02 GMT Message-Id: <200907251055.n6PAt2IC081835@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166545 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 10:55:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=166545 Change 166545 by mav@mav_mavbook on 2009/07/25 10:54:06 Reduce diff from HEAD. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#13 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#27 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.h#3 delete .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#4 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#14 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.h#5 delete Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#13 (text+ko) ==== @@ -22,6 +22,8 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD: head/sys/cam/ata/ata_all.h 195534 2009-07-10 08:18:08Z scottl $ */ #ifndef CAM_ATA_ALL_H ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#27 (text+ko) ==== @@ -63,7 +63,6 @@ #include #include #include -#include #include #include /* for xpt_print below */ #include "opt_cam.h" ==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#4 (text+ko) ==== @@ -1,3 +1,35 @@ +/*- + * Copyright 2009 Scott Long + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: head/sys/cam/cam_xpt_internal.h 195534 2009-07-10 08:18:08Z scottl $ + */ + +#ifndef _CAM_CAM_XPT_INTERNAL_H +#define _CAM_CAM_XPT_INTERNAL_H 1 + +/* Forward Declarations */ struct cam_eb; struct cam_et; struct cam_ed; @@ -170,3 +202,4 @@ MALLOC_DECLARE(M_CAMXPT); +#endif ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#14 (text+ko) ==== @@ -65,7 +65,6 @@ #include #include #include -#include #include /* for xpt_print below */ #include "opt_cam.h" From owner-p4-projects@FreeBSD.ORG Sat Jul 25 11:00:08 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6C4BC1065676; Sat, 25 Jul 2009 11:00:08 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28DA7106564A for ; Sat, 25 Jul 2009 11:00:08 +0000 (UTC) (envelope-from tatsianka@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 14CE28FC17 for ; Sat, 25 Jul 2009 11:00:08 +0000 (UTC) (envelope-from tatsianka@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PB07cF082153 for ; Sat, 25 Jul 2009 11:00:07 GMT (envelope-from tatsianka@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PB076h082151 for perforce@freebsd.org; Sat, 25 Jul 2009 11:00:07 GMT (envelope-from tatsianka@FreeBSD.org) Date: Sat, 25 Jul 2009 11:00:07 GMT Message-Id: <200907251100.n6PB076h082151@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to tatsianka@FreeBSD.org using -f From: Tatsiana Severyna To: Perforce Change Reviews Cc: Subject: PERFORCE change 166546 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 11:00:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=166546 Change 166546 by tatsianka@tatsianka_zonder on 2009/07/25 10:59:42 Lock vfs and vnodes in puffsop_flush. Unconditionally use vop_stdgetpages/vop_stdputpages. Mark puffs mpsafe. Return EINVAL if vop_pathconf is not implemented. Do not wait for reply in vop_inactive to prevent deadlock. Fix long standing cc stack alignment bug in lubpuffs. Initialize fi.flags before calling fuse.create in librefuse. Reduce debug. Affected files ... .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/callcontext.c#4 edit .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/dispatcher.c#3 edit .. //depot/projects/soc2009/tatsianka_puffs/librefuse/Makefile#2 edit .. //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse_opt.c#2 edit .. //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_msgif.c#6 edit .. //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_node.c#8 edit .. //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vfsops.c#7 edit .. //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vnops.c#8 edit Differences ... ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/callcontext.c#4 (text+ko) ==== @@ -180,16 +180,25 @@ struct puffs_cc *volatile pcc; void *sp; size_t stacksize = 1<pu_cc_stackshift; + size_t stackalign; long psize = sysconf(_SC_PAGESIZE); if (puffs_fakecc) return &fakecc; /* XXX_TS MAP_ALIGNED(pu->pu_cc_stackshift) */ - sp = mmap(NULL, stacksize, PROT_READ|PROT_WRITE, + sp = mmap(NULL, stacksize * 2, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0); if (sp == MAP_FAILED) return NULL; + stackalign = ((uintptr_t)sp) & (stacksize-1); + if (stackalign != 0) { + munmap(sp, stacksize - stackalign); + sp = (uint8_t *)sp + stacksize - stackalign; + munmap((uint8_t *)sp + stacksize, stackalign); + } else { + munmap((uint8_t *)sp + stacksize, stacksize); + } pcc = sp; memset(pcc, 0, sizeof(struct puffs_cc)); @@ -247,7 +256,7 @@ * swapcontext(). However, it gets lost. So reinit it. */ st = &pcc->pcc_uc.uc_stack; - st->ss_sp = pcc; + st->ss_sp = (void *)pcc; st->ss_size = stacksize; st->ss_flags = 0; ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/dispatcher.c#3 (text+ko) ==== @@ -69,12 +69,6 @@ struct puffs_cc *pcc = puffs_cc_getcc(pu); struct puffs_req *preq; - /* XXX_TS */ - if (!pcc->pcc_pu) { - printf("XXX puffs__ml_dispatch: pcc->pcc_pu == NULL\n"); - pcc->pcc_pu = pu; - } - pcc->pcc_pb = pb; pcc->pcc_flags |= PCC_MLCONT; dispatch(pcc); @@ -798,7 +792,7 @@ { struct puffs_vnmsg_pathconf *auxt = auxbuf; if (pops->puffs_node_pathconf == NULL) { - error = 0; + error = EINVAL; break; } ==== //depot/projects/soc2009/tatsianka_puffs/librefuse/Makefile#2 (text+ko) ==== @@ -7,11 +7,12 @@ MOUNT= /usr/src/sbin/mount .PATH: ${MOUNT} +CFLAGS+= -DMULTITHREADED_REFUSE CFLAGS+= ${FUSE_OPT_DEBUG_FLAGS} CFLAGS+= -g -I${.CURDIR}/../libpuffs -I${.CURDIR}/../putter -I${.CURDIR}/../puffs -I${MOUNT} SRCS= refuse.c refuse_opt.c MAN= refuse.3 -#WARNS= 4 +WARNS= 2 #SHLIB_MAJOR= 1 .include ==== //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse.c#2 (text+ko) ==== @@ -611,6 +611,9 @@ set_fuse_context_uid_gid(pcn->pcn_cred); + if (fuse->op.getattr == NULL) { + return ENOSYS; + } ret = fuse->op.getattr(path, &st); if (ret != 0) { @@ -770,6 +773,8 @@ created = 0; if (fuse->op.create) { + bzero(&fi, sizeof(fi)); + fi.flags = O_CREAT | O_EXCL | O_WRONLY; ret = fuse->op.create(path, mode | S_IFREG, &fi); if (ret == 0) created = 1; ==== //depot/projects/soc2009/tatsianka_puffs/librefuse/refuse_opt.c#2 (text+ko) ==== @@ -141,6 +141,8 @@ args->argv = a; args->allocated = na; } + + return 0; } void ==== //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_msgif.c#6 (text+ko) ==== @@ -788,16 +788,19 @@ puffsop_flush(struct puffs_mount *pmp, struct puffs_flush *pf) { struct vnode *vp; - int rv; + int rv, vfslocked; if (pf->pf_req.preq_pth.pth_framelen != sizeof(struct puffs_flush)) { rv = EINVAL; goto out; } + vfslocked = VFS_LOCK_GIANT(PMPTOMP(pmp)); + /* XXX: slurry */ if (pf->pf_op == PUFFS_INVAL_NAMECACHE_ALL) { cache_purgevfs(PMPTOMP(pmp)); + VFS_UNLOCK_GIANT(vfslocked); rv = 0; goto out; } @@ -810,9 +813,12 @@ * userspace waiting for us to complete ==> deadlock. Another * reason we need to eventually bump locking to userspace, as we * will need to lock the node if we wish to do flushes. + * + * XXX_TS: Lock vnode, there is no locks held while in userspace */ - rv = puffs_cookie2vnode(pmp, pf->pf_cookie, 0, 0, &vp); + rv = puffs_cookie2vnode(pmp, pf->pf_cookie, LK_EXCLUSIVE, 0, &vp); if (rv) { + VFS_UNLOCK_GIANT(vfslocked); if (rv == PUFFS_NOSUCHCOOKIE) rv = ENOENT; goto out; @@ -855,7 +861,9 @@ rv = EINVAL; } + VOP_UNLOCK(vp, 0); vrele(vp); + VFS_UNLOCK_GIANT(vfslocked); out: puffs_msg_sendresp(pmp, &pf->pf_req, rv); ==== //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_node.c#8 (text+ko) ==== @@ -465,7 +465,6 @@ mtx_assert(&pn->pn_mtx, MA_OWNED); pn->pn_refcount++; - DPRINTF(("puffs_referencenode: pn_refcount=%d pn_vp=%p\n", pn->pn_refcount, pn->pn_vp)); } /* @@ -487,7 +486,6 @@ knlist_destroy(&pn->pn_sel.si_note); uma_zfree(puffs_pnpool, pn); } else { - DPRINTF(("puffs_releasenode: pn_refcount=%d pn_vp=%p\n", pn->pn_refcount, pn->pn_vp)); mtx_unlock(&pn->pn_mtx); } } @@ -527,7 +525,6 @@ mtx_lock(&pn->pn_mtx); puffs_referencenode(pn); mtx_unlock(&pn->pn_mtx); - DPRINTF(("puffs_unlockvnode: unlocking vnode %p; vrefcnt=%d\n", vp, vrefcnt(vp))); vref(vp); if (ltype) *ltype = VOP_ISLOCKED(vp); ==== //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vfsops.c#7 (text+ko) ==== @@ -198,6 +198,7 @@ MNT_ILOCK(mp); mp->mnt_flag &= ~MNT_LOCAL; /* we don't really know, so ... */ + mp->mnt_kern_flag |= MNTK_MPSAFE; MNT_IUNLOCK(mp); pmp->pmp_status = PUFFSTAT_MOUNTING; ==== //depot/projects/soc2009/tatsianka_puffs/puffs/puffs_vnops.c#8 (text+ko) ==== @@ -199,29 +199,21 @@ isdot = cnp->cn_namelen == 1 && *cnp->cn_nameptr == '.'; - DPRINTF(("puffs_lookup: \"%s\", parent vnode %p, op: %jx\n", - cnp->cn_nameptr, dvp, (intmax_t) cnp->cn_nameiop)); - /* * Check if someone fed it into the cache */ if (PUFFS_USE_NAMECACHE(pmp)) { - DPRINTF(("puffs_lookup: use name cache\n")); error = cache_lookup(dvp, ap->a_vpp, cnp); if (error == -1) { - DPRINTF(("puffs_lookup: cache_lookup(%s): vp=%p\n", cnp->cn_nameptr, *ap->a_vpp)); return 0; } if (error == ENOENT) { - DPRINTF(("puffs_lookup: cache_lookup(%s): negative\n", cnp->cn_nameptr)); return error; } - DPRINTF(("puffs_lookup: cache_lookup(%s): failed\n", cnp->cn_nameptr)); } if (isdot) { - DPRINTF(("puffs_lookup: isdot: %.*s\n", (int) cnp->cn_namelen, cnp->cn_nameptr)); vp = ap->a_dvp; vref(vp); *ap->a_vpp = vp; @@ -232,10 +224,6 @@ puffs_makecn(&lookup_msg->pvnr_cn, &lookup_msg->pvnr_cn_cred, cnp, PUFFS_USE_FULLPNBUF(pmp)); - if (cnp->cn_flags & ISDOTDOT) { - DPRINTF(("puffs_lookup: ISDOTDOT\n")); - } - puffs_msg_setinfo(park_lookup, PUFFSOP_VN, PUFFS_VN_LOOKUP, VPTOPNC(dvp)); @@ -324,7 +312,6 @@ out: PUFFS_MSG_RELEASE(lookup); - DPRINTF(("puffs_lookup: returning %d %p\n", error, *ap->a_vpp)); return error; } @@ -340,9 +327,6 @@ int dltype; int error; - DPRINTF(("puffs_create: dvp %p, cnp: %s\n", - dvp, ap->a_cnp->cn_nameptr)); - PUFFS_MSG_ALLOC(vn, create); puffs_makecn(&create_msg->pvnr_cn, &create_msg->pvnr_cn_cred, cnp, PUFFS_USE_FULLPNBUF(pmp)); @@ -376,7 +360,6 @@ out: PUFFS_MSG_RELEASE(create); - DPRINTF(("puffs_create: return %d\n", error)); return error; } @@ -421,7 +404,6 @@ out: PUFFS_MSG_RELEASE(mknod); - DPRINTF(("puff_mknod: returning %d\n", error)); return error; } @@ -436,8 +418,6 @@ int ltype; int error; - DPRINTF(("puffs_open: vp %p, mode 0x%x\n", vp, mode)); - if (vp->v_type == VREG && mode & FWRITE && !EXISTSOP(pmp, WRITE)) return EROFS; @@ -461,7 +441,6 @@ /* calls VOP_GETATTR */ vnode_create_vobject(vp, 0, ap->a_td); } - DPRINTF(("puffs_open: returning %d\n", error)); return error; } @@ -540,7 +519,6 @@ int ltype; int error = 0; - DPRINTF(("puffs_getattr: vp %p\n", vp)); vap = ap->a_vap; PUFFS_MSG_ALLOC(vn, getattr); @@ -703,20 +681,23 @@ struct vnode *vp = ap->a_vp; struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount); struct puffs_node *pnode; - int error; pnode = vp->v_data; if (doinact(pmp, pnode->pn_stat & PNODE_DOINACT)) { + /* + * do not wait for reply from userspace, otherwise it may + * deadlock. + */ PUFFS_MSG_ALLOC(vn, inactive); + puffs_msg_setfaf(park_inactive); puffs_msg_setinfo(park_inactive, PUFFSOP_VN, PUFFS_VN_INACTIVE, VPTOPNC(vp)); - PUFFS_MSG_ENQUEUEWAIT2(pmp, park_inactive, vp->v_data, - NULL, error); + puffs_msg_enqueue(pmp, park_inactive); PUFFS_MSG_RELEASE(inactive); } - DPRINTF(("puffs_vnop_inactive: vp=%p; lock_class=%p\n", vp, LOCK_CLASS(&vp->v_lock.lock_object))); + DPRINTF(("puffs_vnop_inactive: vp=%p\n", vp)); pnode->pn_stat &= ~PNODE_DOINACT; /* @@ -1038,8 +1019,6 @@ int dltype; int error; - DPRINTF(("puffs_vnop_mkdir: %.*s\n", (int) cnp->cn_namelen, cnp->cn_nameptr)); - PUFFS_MSG_ALLOC(vn, mkdir); puffs_makecn(&mkdir_msg->pvnr_cn, &mkdir_msg->pvnr_cn_cred, cnp, PUFFS_USE_FULLPNBUF(pmp)); @@ -1631,6 +1610,9 @@ int ltype; int error; + if (!EXISTSOP(pmp, PATHCONF)) + return EINVAL; + PUFFS_MSG_ALLOC(vn, pathconf); pathconf_msg->pvnr_name = ap->a_name; puffs_msg_setinfo(park_pathconf, PUFFSOP_VN, @@ -1869,28 +1851,6 @@ #endif static int -puffs_vnop_getpages(struct vop_getpages_args *ap) -{ - struct vnode *vp = ap->a_vp; - struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount); - - if (!PUFFS_USE_PAGECACHE(pmp)) - return EOPNOTSUPP; - return vop_stdgetpages(ap); -} - -static int -puffs_vnop_putpages(struct vop_putpages_args *ap) -{ - struct vnode *vp = ap->a_vp; - struct puffs_mount *pmp = MPTOPUFFSMP(vp->v_mount); - - if (!PUFFS_USE_PAGECACHE(pmp)) - return EOPNOTSUPP; - return vop_stdputpages(ap); -} - -static int puffs_fifo_close(struct vop_close_args *ap) { puffs_updatenode(VPTOPP(ap->a_vp), PUFFS_UPDATEATIME | PUFFS_UPDATEMTIME, 0); @@ -1931,8 +1891,8 @@ .vop_vptofh = puffs_vnop_vptofh, .vop_strategy = VOP_PANIC, .vop_bmap = VOP_EOPNOTSUPP, - .vop_getpages = puffs_vnop_getpages, - .vop_putpages = puffs_vnop_putpages, + .vop_getpages = vop_stdgetpages, + .vop_putpages = vop_stdputpages, }; /* From owner-p4-projects@FreeBSD.ORG Sat Jul 25 11:01:09 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A82551065670; Sat, 25 Jul 2009 11:01:09 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5E9D7106566B for ; Sat, 25 Jul 2009 11:01:09 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4C8E98FC21 for ; Sat, 25 Jul 2009 11:01:09 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PB19lo082279 for ; Sat, 25 Jul 2009 11:01:09 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PB19o2082277 for perforce@freebsd.org; Sat, 25 Jul 2009 11:01:09 GMT (envelope-from syl@FreeBSD.org) Date: Sat, 25 Jul 2009 11:01:09 GMT Message-Id: <200907251101.n6PB19o2082277@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 166547 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 11:01:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=166547 Change 166547 by syl@syl_atuin on 2009/07/25 11:01:01 Fix some errors, typo and style. Spotted by a diff between s3c24xxdci.c and at91dci.c. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#15 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#11 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#15 (text+ko) ==== @@ -107,7 +107,7 @@ .support_bulk = 1, .support_interrupt = 1, .support_in = 1, - .support_out = 1 , + .support_out = 1, }, [2] = { .max_in_frame_size = 64, @@ -116,7 +116,7 @@ .support_bulk = 1, .support_interrupt = 1, .support_in = 1, - .support_out = 1 , + .support_out = 1, }, [3] = { .max_in_frame_size = 64, @@ -125,7 +125,7 @@ .support_bulk = 1, .support_interrupt = 1, .support_in = 1, - .support_out = 1 , + .support_out = 1, }, [4] = { .max_in_frame_size = 64, @@ -134,7 +134,7 @@ .support_bulk = 1, .support_interrupt = 1, .support_in = 1, - .support_out = 1 , + .support_out = 1, }, }; @@ -142,10 +142,11 @@ s3c24dci_get_hw_ep_profile(struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr) { - if (ep_addr < S3C24XX_DCI_EP_MAX) + if (ep_addr < S3C24XX_DCI_EP_MAX) { *ppf = (s3c24dci_ep_profile + ep_addr); - else + } else { *ppf = NULL; + } } static void @@ -208,6 +209,7 @@ } S3C24XX_DCI_WRITE_4(sc, S3C24_DCI_PWR, S3C24_DCI_MCU_RESUME); + /* wait 8 milliseconds */ /* Wait for reset to complete. */ usb_pause_mtx(&sc->sc_bus.bus_mtx, hz / 125); @@ -249,9 +251,9 @@ td = xfer->td_transfer_cache; while (1) { - if ((td->func)(td)) { + if ((td->func) (td)) { /* operation in progress */ - break ; + break; } if (((void *)td) == xfer->td_transfer_last) { goto done; @@ -267,17 +269,17 @@ goto done; } } - /* + /* * Fetch the next transfer descriptor and transfer - * some flags to the next transfer descriptor. + * some flags to the next transfer descriptor */ td = td->obj_next; xfer->td_transfer_cache = td; } - return (1); + return (1); /* not complete */ done: s3c24dci_standard_done(xfer); - return (0); + return (0); /* complete */ } static void @@ -328,8 +330,8 @@ uint8_t need_sync; DPRINTFN(9, "addr=%d endpt=%d sumlen=%d speed=%d\n", - xfer->address, UE_GET_ADDR(xfer->endpointno), - xfer->sumlen, usbd_get_speed(xfer->xroot->udev)); + xfer->address, UE_GET_ADDR(xfer->endpointno), + xfer->sumlen, usbd_get_speed(xfer->xroot->udev)); temp.max_frame_size = xfer->max_frame_size; @@ -340,7 +342,7 @@ /* setup temp */ temp.td = NULL; - temp.td_next = xfer->td_start[0]; + temp.td_next = xfer->td_start[0]; temp.offset = 0; temp.setup_alt_next = xfer->flags_int.short_frames_ok; temp.did_stall = !xfer->flags_int.control_stall; @@ -352,6 +354,7 @@ if (xfer->flags_int.control_xfr) { if (xfer->flags_int.control_hdr) { + temp.func = &s3c24dci_setup_rx; temp.len = xfer->frlengths[0]; temp.pc = xfer->frbuffers + 0; @@ -362,6 +365,7 @@ if (xfer->flags_int.control_act) temp.setup_alt_next = 0; } + s3c24dci_setup_standard_chain_sub(&temp); } x = 1; @@ -375,7 +379,7 @@ need_sync = 1; } else { temp.func = &s3c24dci_data_rx; - need_sync = 1; + need_sync = 0; } /* setup "pc" pointer */ @@ -386,7 +390,9 @@ while (x != xfer->nframes) { /* DATA0 / DATA2 message */ + temp.len = xfer->frlengths[x]; + x++; if (x == xfer->nframes) { @@ -406,9 +412,11 @@ } else { - /* regular data pointer */ + /* regular data transfer */ + temp.short_pkt = (xfer->flags.force_short_xfer) ? 0 : 1; } + s3c24dci_setup_standard_chain_sub(&temp); if (xfer->flags_int.isochronous_xfr) { @@ -423,24 +431,24 @@ if (xfer->flags_int.control_xfr) { /* always setup a valid "pc" pointer for status and sync */ - temp.pc = xfer->frbuffers + 0 ; + temp.pc = xfer->frbuffers + 0; temp.len = 0; temp.short_pkt = 0; temp.setup_alt_next = 0; /* check if we need to sync */ if (need_sync) { - /* we need a SYNC point afer TX */ + /* we need a SYNC point after TX */ temp.func = &s3c24dci_data_tx_sync; s3c24dci_setup_standard_chain_sub(&temp); - } /* check if we should append a status stage */ if (!xfer->flags_int.control_act) { + /* - * Sen a DATA1 message and invert the current - * endpoint direction + * Send a DATA1 message and invert the current + * endpoint direction. */ if (xfer->endpointno & UE_DIR_IN) { temp.func = &s3c24dci_data_rx; @@ -459,7 +467,7 @@ } } - /* must have at least one frame ! */ + /* must have at least one frame! */ td = temp.td; xfer->td_transfer_last = td; } @@ -484,6 +492,7 @@ /* poll one time */ if (s3c24dci_xfer_do_fifo(xfer)) { + struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(xfer->xroot->bus); uint8_t ep_no = xfer->endpointno & UE_ADDR; uint32_t ittmp; @@ -580,22 +589,26 @@ usb_error_t err = 0; DPRINTFN(13, "xfer=%p endpoint=%p transfer done\n", - xfer, xfer->endpoint); + xfer, xfer->endpoint); /* reset scanner */ xfer->td_transfer_cache = xfer->td_transfer_first; if (xfer->flags_int.control_xfr) { + if (xfer->flags_int.control_hdr) { + err = s3c24dci_standard_done_sub(xfer); } xfer->aframes = 1; + if (xfer->td_transfer_cache == NULL) { goto done; } } while (xfer->aframes != xfer->nframes) { + err = s3c24dci_standard_done_sub(xfer); xfer->aframes++; @@ -606,6 +619,7 @@ if (xfer->flags_int.control_xfr && !xfer->flags_int.control_act) { + err = s3c24dci_standard_done_sub(xfer); } done: @@ -639,7 +653,7 @@ DPRINTFN(15, "disable interrupts on endpoint %d\n", ep_no); } - + /* dequeue transfer and start next transfer */ usbd_transfer_done(xfer, error); } @@ -765,17 +779,20 @@ DPRINTFN(5, "endpoint=%p\n", ep); + USB_BUS_LOCK_ASSERT(udev->bus, MA_OWNED); + /* check mode */ if (udev->flags.usb_mode != USB_MODE_DEVICE) { /* not supported */ - return ; + return; } /* get softc */ sc = S3C24_DCI_BUS2SC(udev->bus); - /* get endpoint descriptors */ + /* get endpoint descriptor */ ed = ep->edesc; + /* reset endpoint */ s3c24dci_clear_stall_sub(sc, (ed->bEndpointAddress & UE_ADDR), (ed->bmAttributes & UE_XFERTYPE), @@ -880,7 +897,6 @@ .bDeviceProtocol = UDPROTO_FSHUB, .bMaxPacketSize0 = 0, .bNumConfigurations = 0, - }; static const struct s3c24dci_config_desc s3c24dci_confd = { @@ -1204,8 +1220,6 @@ tr_handle_clear_halt: goto tr_valid; - return (USB_ERR_STALLED); - tr_handle_clear_port_feature: if (index != 1) { goto tr_stalled; @@ -1359,14 +1373,24 @@ usbd_transfer_setup_sub(parm); + /* + * compute maximum number of TDs + */ if (parm->methods == &s3c24dci_device_ctrl_methods) { - ntd = xfer->nframes + 1 /* STATUS */ + 1 /* SYNC 1 */ - + 1 /* SYNC 2 */; + + ntd = xfer->nframes + 1 /* STATUS */ + 1 /* SYNC 1 */ + + 1 /* SYNC 2 */ ; + } else if (parm->methods == &s3c24dci_device_bulk_methods) { - ntd = xfer->nframes + 1 /* SYNC */; + + ntd = xfer->nframes + 1 /* SYNC */ ; + } else if (parm->methods == &s3c24dci_device_intr_methods) { - ntd = xfer->nframes + 1 /* SYNC */; + + ntd = xfer->nframes + 1 /* SYNC */ ; + } else { + ntd = 0; } @@ -1374,30 +1398,40 @@ * check if "usbd_transfer_setup_sub" set an error */ if (parm->err) { - return ; + return; } - + /* + * allocate transfer descriptors + */ last_obj = NULL; + /* + * get profile stuff + */ if (ntd) { + ep_no = xfer->endpointno & UE_ADDR; s3c24dci_get_hw_ep_profile(parm->udev, &pf, ep_no); if (pf == NULL) { + /* should not happen */ parm->err = USB_ERR_INVAL; - return ; + return; } } else { ep_no = 0; pf = NULL; } + /* align data */ parm->size[0] += ((-parm->size[0]) & (USB_HOST_ALIGN - 1)); - for (n = 0 ; n != ntd ; n++) { + for (n = 0; n != ntd; n++) { + struct s3c24dci_td *td; if (parm->buf) { + td = USB_ADD_BYTES(parm->buf, parm->size[0]); /* init TD */ @@ -1406,7 +1440,7 @@ td->max_packet_size = xfer->max_packet_size; td->ep_no = ep_no; td->obj_next = last_obj; - + last_obj = td; } parm->size[0] += sizeof(*td); @@ -1418,7 +1452,7 @@ static void s3c24dci_xfer_unsetup(struct usb_xfer *xfer) { - return ; + return; } static void @@ -1428,28 +1462,30 @@ struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(udev->bus); DPRINTFN(2, "endpoint=%p, addr=%d, endpt=%d, mode=%d (%d)\n", - ep, udev->address, edesc->bEndpointAddress, - udev->flags.usb_mode, sc->sc_rt_addr); + ep, udev->address, + edesc->bEndpointAddress, udev->flags.usb_mode, + sc->sc_rt_addr); if (udev->device_index != sc->sc_rt_addr) { + if (udev->flags.usb_mode != USB_MODE_DEVICE) { /* not supported */ - return ; + return; } if (udev->speed != USB_SPEED_FULL) { /* not supported */ - return ; + return; } switch (edesc->bmAttributes & UE_XFERTYPE) { case UE_CONTROL: ep->methods = &s3c24dci_device_ctrl_methods; - break ; + break; case UE_INTERRUPT: ep->methods = &s3c24dci_device_intr_methods; - break ; + break; case UE_BULK: ep->methods = &s3c24dci_device_bulk_methods; - break ; + break; default: break; } ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#11 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sat Jul 25 11:05:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4EFF0106566C; Sat, 25 Jul 2009 11:05:14 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EA36E1065676 for ; Sat, 25 Jul 2009 11:05:13 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D79F18FC08 for ; Sat, 25 Jul 2009 11:05:13 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PB5D0Y083564 for ; Sat, 25 Jul 2009 11:05:13 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PB5DNb083562 for perforce@freebsd.org; Sat, 25 Jul 2009 11:05:13 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 11:05:13 GMT Message-Id: <200907251105.n6PB5DNb083562@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166548 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 11:05:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=166548 Change 166548 by mav@mav_mavbook on 2009/07/25 11:04:17 Factor-out PMP support from ata_xpt into separate periph module. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#1 add .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#28 edit .. //depot/projects/scottl-camlock/src/sys/conf/files#41 edit .. //depot/projects/scottl-camlock/src/sys/modules/cam/Makefile#14 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#28 (text+ko) ==== @@ -97,11 +97,6 @@ PROBE_FULL_INQUIRY, PROBE_PM_PID, PROBE_PM_PRV, - PROBE_PM_PORTS, - PROBE_PM_RESET, - PROBE_PM_CONNECT, - PROBE_PM_CHECK, - PROBE_PM_CLEAR, PROBE_INVALID } probe_action; @@ -113,11 +108,6 @@ "PROBE_FULL_INQUIRY", "PROBE_PM_PID", "PROBE_PM_PRV", - "PROBE_PM_PORTS", - "PROBE_PM_RESET", - "PROBE_PM_CONNECT", - "PROBE_PM_CHECK", - "PROBE_PM_CLEAR", "PROBE_INVALID" }; @@ -143,9 +133,6 @@ u_int8_t digest[16]; uint32_t pm_pid; uint32_t pm_prv; - int pm_ports; - int pm_step; - int pm_try; struct cam_periph *periph; } probe_softc; @@ -431,68 +418,6 @@ 10 * 1000); ata_pm_read_cmd(ataio, 1, 15); break; - case PROBE_PM_PORTS: - cam_fill_ataio(ataio, - 1, - probedone, - /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/NULL, - /*dxfer_len*/0, - 10 * 1000); - ata_pm_read_cmd(ataio, 2, 15); - break; - case PROBE_PM_RESET: - { - struct ata_params *ident_buf = - &periph->path->device->ident_data; - cam_fill_ataio(ataio, - 1, - probedone, - /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/NULL, - /*dxfer_len*/0, - 10 * 1000); - ata_pm_write_cmd(ataio, 2, softc->pm_step, - (ident_buf->cylinders & (1 << softc->pm_step)) ? 0 : 1); -printf("PM RESET %d %04x %d\n", softc->pm_step, ident_buf->cylinders, - (ident_buf->cylinders & (1 << softc->pm_step)) ? 0 : 1); - break; - } - case PROBE_PM_CONNECT: - cam_fill_ataio(ataio, - 1, - probedone, - /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/NULL, - /*dxfer_len*/0, - 10 * 1000); - ata_pm_write_cmd(ataio, 2, softc->pm_step, 0); - break; - case PROBE_PM_CHECK: - cam_fill_ataio(ataio, - 1, - probedone, - /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/NULL, - /*dxfer_len*/0, - 10 * 1000); - ata_pm_read_cmd(ataio, 0, softc->pm_step); - break; - case PROBE_PM_CLEAR: - cam_fill_ataio(ataio, - 1, - probedone, - /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, - /*data_ptr*/NULL, - /*dxfer_len*/0, - 10 * 1000); - ata_pm_write_cmd(ataio, 1, softc->pm_step, 0xFFFFFFFF); - break; case PROBE_INVALID: CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_INFO, ("probestart: invalid action state\n")); @@ -631,7 +556,7 @@ probe_softc *softc; struct cam_path *path; u_int32_t priority; - int found = 0; + int found = 1; CAM_DEBUG(done_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("probedone\n")); @@ -673,6 +598,7 @@ xpt_print(path, "Unexpected signature 0x%04x\n", sign); } + found = 0; xpt_release_ccb(done_ccb); break; } @@ -786,7 +712,7 @@ if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0) /* Send the async notification. */ xpt_async(AC_LOST_DEVICE, path, NULL); - + found = 0; xpt_release_ccb(done_ccb); break; } @@ -882,6 +808,7 @@ (done_ccb->ataio.res.lba_mid << 16) + (done_ccb->ataio.res.lba_low << 8) + done_ccb->ataio.res.sector_count; + ((uint32_t *)ident_buf)[0] = softc->pm_pid; printf("PM Product ID: %08x\n", softc->pm_pid); snprintf(ident_buf->model, sizeof(ident_buf->model), "Port Multiplier %08x", softc->pm_pid); @@ -904,164 +831,24 @@ (done_ccb->ataio.res.lba_mid << 16) + (done_ccb->ataio.res.lba_low << 8) + done_ccb->ataio.res.sector_count; + ((uint32_t *)ident_buf)[1] = softc->pm_prv; printf("PM Revision: %08x\n", softc->pm_prv); snprintf(ident_buf->revision, sizeof(ident_buf->revision), "%04x", softc->pm_prv); - PROBE_SET_ACTION(softc, PROBE_PM_PORTS); - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } else if (cam_periph_error(done_ccb, 0, 0, - &softc->saved_ccb) == ERESTART) { - return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge the queue */ - xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, - /*run_queue*/TRUE); - } - goto device_fail; - case PROBE_PM_PORTS: - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - softc->pm_ports = (done_ccb->ataio.res.lba_high << 24) + - (done_ccb->ataio.res.lba_mid << 16) + - (done_ccb->ataio.res.lba_low << 8) + - done_ccb->ataio.res.sector_count; - /* This PM declares 6 ports, while only 5 of them are real. - * Port 5 is enclosure management bridge port, which has implementation - * problems, causing probe faults. Hide it for now. */ - if (softc->pm_pid == 0x37261095 && softc->pm_ports == 6) - softc->pm_ports = 5; - /* This PM declares 7 ports, while only 5 of them are real. - * Port 5 is some fake "Config Disk" with 640 sectors size, - * port 6 is enclosure management bridge port. - * Both fake ports has implementation problems, causing - * probe faults. Hide them for now. */ - if (softc->pm_pid == 0x47261095 && softc->pm_ports == 7) - softc->pm_ports = 5; - printf("PM ports: %d\n", softc->pm_ports); - ident_buf->config = softc->pm_ports; path->device->flags |= CAM_DEV_INQUIRY_DATA_VALID; - softc->pm_step = 0; - PROBE_SET_ACTION(softc, PROBE_PM_RESET); - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } else if (cam_periph_error(done_ccb, 0, 0, - &softc->saved_ccb) == ERESTART) { - return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge the queue */ - xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, - /*run_queue*/TRUE); - } - goto device_fail; - case PROBE_PM_RESET: - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - softc->pm_step++; - if (softc->pm_step < softc->pm_ports) { - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } else { - softc->pm_step = 0; - DELAY(5000); - printf("PM reset done\n"); - PROBE_SET_ACTION(softc, PROBE_PM_CONNECT); - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } - } else if (cam_periph_error(done_ccb, 0, 0, - &softc->saved_ccb) == ERESTART) { - return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge the queue */ - xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, - /*run_queue*/TRUE); - } - goto device_fail; - case PROBE_PM_CONNECT: - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - softc->pm_step++; - if (softc->pm_step < softc->pm_ports) { - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } else { - softc->pm_step = 0; - softc->pm_try = 0; - printf("PM connect done\n"); - PROBE_SET_ACTION(softc, PROBE_PM_CHECK); - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } - } else if (cam_periph_error(done_ccb, 0, 0, - &softc->saved_ccb) == ERESTART) { - return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge the queue */ - xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, - /*run_queue*/TRUE); - } - goto device_fail; - case PROBE_PM_CHECK: - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - int res = (done_ccb->ataio.res.lba_high << 24) + - (done_ccb->ataio.res.lba_mid << 16) + - (done_ccb->ataio.res.lba_low << 8) + - done_ccb->ataio.res.sector_count; - if ((res & 0xf0f) == 0x103 && (res & 0x0f0) != 0) { - printf("PM status: %d - %08x\n", softc->pm_step, res); - ident_buf->cylinders |= (1 << softc->pm_step); - softc->pm_step++; - } else { - if (softc->pm_try < 100) { - DELAY(10000); - softc->pm_try++; - } else { - printf("PM status: %d - %08x\n", softc->pm_step, res); - ident_buf->cylinders &= ~(1 << softc->pm_step); - softc->pm_step++; - } - } - if (softc->pm_step < softc->pm_ports) { - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } else { - softc->pm_step = 0; - PROBE_SET_ACTION(softc, PROBE_PM_CLEAR); - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } - } else if (cam_periph_error(done_ccb, 0, 0, - &softc->saved_ccb) == ERESTART) { - return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { - /* Don't wedge the queue */ - xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, - /*run_queue*/TRUE); - } - goto device_fail; - case PROBE_PM_CLEAR: - if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { - softc->pm_step++; - if (softc->pm_step < softc->pm_ports) { - xpt_release_ccb(done_ccb); - xpt_schedule(periph, priority); - return; - } - found = ident_buf->cylinders | 0x8000; - if (path->device->flags & CAM_DEV_UNCONFIGURED) { + if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) { path->device->flags &= ~CAM_DEV_UNCONFIGURED; done_ccb->ccb_h.func_code = XPT_GDEV_TYPE; xpt_action(done_ccb); xpt_async(AC_FOUND_DEVICE, done_ccb->ccb_h.path, done_ccb); - xpt_release_ccb(done_ccb); + } else { + done_ccb->ccb_h.func_code = XPT_GDEV_TYPE; + xpt_action(done_ccb); + xpt_async(AC_SCSI_AEN, done_ccb->ccb_h.path, + done_ccb); } + xpt_release_ccb(done_ccb); break; } else if (cam_periph_error(done_ccb, 0, 0, &softc->saved_ccb) == ERESTART) { @@ -1170,7 +957,10 @@ } scan_info->request_ccb = request_ccb; scan_info->cpi = &work_ccb->cpi; - scan_info->found = 0x8001; + if (scan_info->cpi->transport == XPORT_ATA) + scan_info->found = 0x0003; + else + scan_info->found = 0x8001; scan_info->counter = 0; /* If PM supported, probe it first. */ if (scan_info->cpi->hba_inquiry & PI_SATAPM) @@ -1190,11 +980,11 @@ scan_info = (ata_scan_bus_info *)work_ccb->ccb_h.ppriv_ptr0; /* Free the current request path- we're done with it. */ xpt_free_path(work_ccb->ccb_h.path); - /* If there is PM... */ + /* If there is PMP... */ if (scan_info->counter == 15) { if (work_ccb->ccb_h.ppriv_field1 != 0) { - /* Save PM probe result. */ - scan_info->found = work_ccb->ccb_h.ppriv_field1; + /* everything else willbe probed by it */ + scan_info->found = 0x8000; } else { struct ccb_trans_settings cts; @@ -1222,6 +1012,8 @@ break; } scan_next: + if ((scan_info->found & (1 << scan_info->counter)) == 0) + goto take_next; status = xpt_create_path(&path, xpt_periph, scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); @@ -1237,11 +1029,6 @@ xpt_done(request_ccb); break; } - if ((scan_info->found & (1 << scan_info->counter)) == 0) { - xpt_async(AC_LOST_DEVICE, path, NULL); - xpt_free_path(path); - goto take_next; - } xpt_setup_ccb(&work_ccb->ccb_h, path, scan_info->request_ccb->ccb_h.pinfo.priority); work_ccb->ccb_h.func_code = XPT_SCAN_LUN; ==== //depot/projects/scottl-camlock/src/sys/conf/files#41 (text+ko) ==== @@ -117,6 +117,7 @@ cam/scsi/scsi_cd.c optional cd cam/scsi/scsi_ch.c optional ch cam/ata/ata_da.c optional da +cam/ata/ata_pmp.c optional da cam/scsi/scsi_da.c optional da cam/scsi/scsi_low.c optional ct | ncv | nsp | stg cam/scsi/scsi_low_pisa.c optional ct | ncv | nsp | stg ==== //depot/projects/scottl-camlock/src/sys/modules/cam/Makefile#14 (text+ko) ==== @@ -28,6 +28,7 @@ SRCS+= ata_all.c SRCS+= ata_xpt.c SRCS+= ata_da.c +SRCS+= ata_pmp.c EXPORT_SYMS= YES # XXX evaluate From owner-p4-projects@FreeBSD.ORG Sat Jul 25 11:23:34 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 696911065674; Sat, 25 Jul 2009 11:23:34 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 25EDC1065670 for ; Sat, 25 Jul 2009 11:23:34 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 13FFD8FC18 for ; Sat, 25 Jul 2009 11:23:34 +0000 (UTC) (envelope-from jona@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PBNX5B084936 for ; Sat, 25 Jul 2009 11:23:33 GMT (envelope-from jona@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PBNXlg084934 for perforce@freebsd.org; Sat, 25 Jul 2009 11:23:33 GMT (envelope-from jona@FreeBSD.org) Date: Sat, 25 Jul 2009 11:23:33 GMT Message-Id: <200907251123.n6PBNXlg084934@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jona@FreeBSD.org using -f From: Jonathan Anderson To: Perforce Change Reviews Cc: Subject: PERFORCE change 166550 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 11:23:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=166550 Change 166550 by jona@jona-trustedbsd-belle-vmware on 2009/07/25 11:22:58 This seems to be the right place to unwrap capability file structs Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_descrip.c#26 edit .. //depot/projects/trustedbsd/capabilities/src/sys/sys/file.h#14 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_descrip.c#26 (text+ko) ==== @@ -404,7 +404,7 @@ } static inline struct file * -fdtofp(int fd, struct filedesc *fdp) +fdtofp(int fd, cap_rights_t rights, struct filedesc *fdp) { struct file *fp; @@ -412,6 +412,13 @@ if ((unsigned)fd >= fdp->fd_nfiles || (fp = fdp->fd_ofiles[fd]) == NULL) return (NULL); + +#ifdef CAPABILITIES + if (fp->f_type == DTYPE_CAPABILITY) + if(cap_fextract(fp, rights, &fp)) + return (NULL); +#endif /* CAPABILITIES */ + return (fp); } @@ -446,7 +453,7 @@ case F_GETFD: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -458,7 +465,7 @@ case F_SETFD: FILEDESC_XLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_WRITE, fdp)) == NULL) { FILEDESC_XUNLOCK(fdp); error = EBADF; break; @@ -471,7 +478,7 @@ case F_GETFL: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -482,7 +489,7 @@ case F_SETFL: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_FCHFLAGS, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -514,7 +521,7 @@ case F_GETOWN: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -529,7 +536,7 @@ case F_SETOWN: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_FCHOWN, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -555,7 +562,7 @@ case F_SETLK: do_setlk: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_FLOCK, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -650,7 +657,7 @@ case F_GETLK: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, fdp)) == NULL) { + if ((fp = fdtofp(fd, CAP_FLOCK, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; ==== //depot/projects/trustedbsd/capabilities/src/sys/sys/file.h#14 (text+ko) ==== @@ -44,10 +44,6 @@ #include #include -#ifdef CAPABILITIES -#include -#endif /* CAPABILITIES */ - struct stat; struct thread; struct uio; @@ -276,20 +272,7 @@ struct ucred *active_cred; struct thread *td; { - struct file *p = fp; - -#ifdef CAPABILITIES - int error; - - if (fp->f_type == DTYPE_CAPABILITY) - { - error = cap_fextract(fp, CAP_IOCTL, &p); - if (error) - return error; - } -#endif /* CAPABILITIES */ - - return ((*p->f_ops->fo_ioctl)(p, com, data, active_cred, td)); + return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td)); } static __inline int From owner-p4-projects@FreeBSD.ORG Sat Jul 25 12:19:36 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B767A1065672; Sat, 25 Jul 2009 12:19:35 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76BD0106566C for ; Sat, 25 Jul 2009 12:19:35 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 62FCC8FC0A for ; Sat, 25 Jul 2009 12:19:35 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PCJZHX089890 for ; Sat, 25 Jul 2009 12:19:35 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PCJZ72089888 for perforce@freebsd.org; Sat, 25 Jul 2009 12:19:35 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 12:19:35 GMT Message-Id: <200907251219.n6PCJZ72089888@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166552 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 12:19:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=166552 Change 166552 by mav@mav_mavbook on 2009/07/25 12:19:00 Define and use formal constants instead of raw numeric values for priority levels. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#20 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#2 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#29 edit .. //depot/projects/scottl-camlock/src/sys/cam/cam.h#7 edit .. //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#33 edit .. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#94 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.c#10 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#26 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#18 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#43 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_low.c#16 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#14 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#20 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sg.c#15 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_targ_bh.c#12 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_target.c#17 edit .. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#15 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#20 (text+ko) ==== @@ -274,7 +274,7 @@ /* We only sync the cache if the drive is capable of it. */ if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) { - ccb = cam_periph_getccb(periph, /*priority*/1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); cam_fill_ataio(&ccb->ataio, 1, adadone, @@ -361,7 +361,7 @@ /* * Schedule ourselves for performing the work. */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); cam_periph_unlock(periph); return; @@ -395,7 +395,7 @@ if (length > 0) { periph->flags |= CAM_PERIPH_POLLED; - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); ccb.ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ccb.ataio, 0, @@ -426,7 +426,7 @@ } if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) { - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); ccb.ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ccb.ataio, @@ -687,7 +687,7 @@ /* Check if the SIM does not want queued commands */ bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); if (cpi.ccb_h.status != CAM_REQ_CMP || @@ -765,7 +765,7 @@ * the end of probe. */ // (void)cam_periph_hold(periph, PRIBIO); -// xpt_schedule(periph, /*priority*/5); +// xpt_schedule(periph, CAM_PRIORITY_DEV); /* * Schedule a periodic event to occasionally send an @@ -905,7 +905,7 @@ if (bp != NULL) { /* Have more work to do, so ensure we stay scheduled */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } break; } @@ -1111,7 +1111,7 @@ continue; } - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); ccb.ccb_h.ccb_state = ADA_CCB_DUMP; cam_fill_ataio(&ccb.ataio, ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#2 (text+ko) ==== @@ -273,7 +273,7 @@ case AC_SCSI_AEN: softc = (struct pmp_softc *)periph->softc; softc->state = PMP_STATE_PORTS; - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, CAM_PRIORITY_BUS); break; default: cam_periph_async(periph, code, path, arg); @@ -360,7 +360,7 @@ /* Check if the SIM does not want queued commands */ bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -387,7 +387,7 @@ * the end of probe. */ // (void)cam_periph_hold(periph, PRIBIO); - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, CAM_PRIORITY_BUS); return(CAM_REQ_CMP); } ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#29 (text+ko) ==== @@ -258,7 +258,7 @@ softc = (probe_softc *)periph->softc; ccb = (union ccb *)TAILQ_FIRST(&softc->request_ccbs); - xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -297,7 +297,8 @@ if (start_ccb->ccb_h.target_id == 15) { /* Report SIM that we have no knowledge about PM presence. */ bzero(&cts, sizeof(cts)); - xpt_setup_ccb(&cts.ccb_h, start_ccb->ccb_h.path, 1); + xpt_setup_ccb(&cts.ccb_h, start_ccb->ccb_h.path, + CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; cts.xport_specific.sata.pm_present = 0; @@ -432,7 +433,7 @@ { struct ccb_trans_settings cts; - xpt_setup_ccb(&cts.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cts.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cts.type = CTS_TYPE_USER_SETTINGS; xpt_action((union ccb *)&cts); @@ -454,7 +455,7 @@ struct ccb_trans_settings_spi *spi; memset(&cts, 0, sizeof (cts)); - xpt_setup_ccb(&cts.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cts.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; xpt_action((union ccb *)&cts); @@ -581,7 +582,7 @@ /* Report SIM that PM is present. */ bzero(&cts, sizeof(cts)); - xpt_setup_ccb(&cts.ccb_h, path, 1); + xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; cts.xport_specific.sata.pm_present = 1; @@ -1054,7 +1055,7 @@ CAM_DEBUG(request_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_scan_lun\n")); - xpt_setup_ccb(&cpi.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -1092,7 +1093,7 @@ free(new_path, M_CAMXPT); return; } - xpt_setup_ccb(&request_ccb->ccb_h, new_path, /*priority*/ 1); + xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_NORMAL); request_ccb->ccb_h.cbfcnp = xptscandone; request_ccb->ccb_h.func_code = XPT_SCAN_LUN; request_ccb->crcn.flags = flags; @@ -1190,7 +1191,7 @@ struct scsi_inquiry_data *inq_buf; /* Get transport information from the SIM */ - xpt_setup_ccb(&cpi.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -1250,7 +1251,7 @@ */ /* Tell the controller what we think */ - xpt_setup_ccb(&cts.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; cts.transport = path->device->transport; @@ -1379,7 +1380,7 @@ inq_data = &device->inq_data; scsi = &cts->proto_specific.scsi; - xpt_setup_ccb(&cpi.ccb_h, cts->ccb_h.path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, cts->ccb_h.path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -1400,7 +1401,7 @@ * Perform sanity checking against what the * controller and device can do. */ - xpt_setup_ccb(&cur_cts.ccb_h, cts->ccb_h.path, /*priority*/1); + xpt_setup_ccb(&cur_cts.ccb_h, cts->ccb_h.path, CAM_PRIORITY_NORMAL); cur_cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cur_cts.type = cts->type; xpt_action((union ccb *)&cur_cts); @@ -1568,7 +1569,7 @@ device->tag_delay_count = 0; xpt_setup_ccb(&crs.ccb_h, cts->ccb_h.path, - /*priority*/1); + CAM_PRIORITY_NORMAL); crs.ccb_h.func_code = XPT_REL_SIMQ; crs.release_flags = RELSIM_RELEASE_AFTER_QEMPTY; crs.openings @@ -1601,7 +1602,7 @@ && (dev->inq_flags & (SID_Sync|SID_WBus16|SID_WBus32)) != 0)) { struct ccb_trans_settings cts; - xpt_setup_ccb(&cts.ccb_h, path, 1); + xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.protocol = PROTO_SCSI; cts.protocol_version = PROTO_VERSION_UNSPECIFIED; cts.transport = XPORT_UNSPECIFIED; ==== //depot/projects/scottl-camlock/src/sys/cam/cam.h#7 (text+ko) ==== @@ -66,6 +66,11 @@ */ typedef struct { u_int32_t priority; +#define CAM_PRIORITY_HOST 100 +#define CAM_PRIORITY_BUS 200 +#define CAM_PRIORITY_DEV 300 +#define CAM_PRIORITY_HIGH 400 +#define CAM_PRIORITY_NORMAL 500 #define CAM_PRIORITY_NONE (u_int32_t)-1 u_int32_t generation; int index; ==== //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#33 (text+ko) ==== @@ -534,13 +534,13 @@ switch (periph->deferred_ac) { case AC_FOUND_DEVICE: ccb.ccb_h.func_code = XPT_GDEV_TYPE; - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/ 1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); xpt_action(&ccb); arg = &ccb; break; case AC_PATH_REGISTERED: ccb.ccb_h.func_code = XPT_PATH_INQ; - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/ 1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); xpt_action(&ccb); arg = &ccb; break; @@ -831,10 +831,10 @@ switch(cmd){ case CAMGETPASSTHRU: - ccb = cam_periph_getccb(periph, /* priority */ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, - /*priority*/1); + CAM_PRIORITY_NORMAL); ccb->ccb_h.func_code = XPT_GDEVLIST; /* @@ -939,7 +939,7 @@ { struct ccb_hdr ccb_h; - xpt_setup_ccb(&ccb_h, path, /*priority*/1); + xpt_setup_ccb(&ccb_h, path, CAM_PRIORITY_NORMAL); ccb_h.func_code = XPT_NOOP; ccb_h.flags = CAM_DEV_QFREEZE; xpt_action((union ccb *)&ccb_h); @@ -952,8 +952,7 @@ { struct ccb_relsim crs; - xpt_setup_ccb(&crs.ccb_h, path, - /*priority*/1); + xpt_setup_ccb(&crs.ccb_h, path, CAM_PRIORITY_NORMAL); crs.ccb_h.func_code = XPT_REL_SIMQ; crs.ccb_h.flags = getcount_only ? CAM_DEV_QFREEZE : 0; crs.release_flags = relsim_flags; @@ -1065,7 +1064,7 @@ * Grab the inquiry data for this device. */ xpt_setup_ccb(&cgd.ccb_h, done_ccb->ccb_h.path, - /*priority*/ 1); + CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); err_action = scsi_error_action(&done_ccb->csio, @@ -1207,7 +1206,7 @@ { struct ccb_getdevstats cgds; - xpt_setup_ccb(&cgds.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cgds.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cgds.ccb_h.func_code = XPT_GDEV_STATS; xpt_action((union ccb *)&cgds); cam_periph_freeze_after_event(periph, &cgds.last_reset, bus_settle); @@ -1275,7 +1274,7 @@ */ xpt_setup_ccb(&cgds.ccb_h, ccb->ccb_h.path, - /*priority*/1); + CAM_PRIORITY_NORMAL); cgds.ccb_h.func_code = XPT_GDEV_STATS; xpt_action((union ccb *)&cgds); @@ -1398,7 +1397,7 @@ /* * Grab the inquiry data for this device. */ - xpt_setup_ccb(&cgd.ccb_h, ccb->ccb_h.path, /*priority*/ 1); + xpt_setup_ccb(&cgd.ccb_h, ccb->ccb_h.path, CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); @@ -1538,14 +1537,14 @@ if ((err_action & SS_MASK) >= SS_START) { /* - * Drop the priority to 0 so that the recovery + * Drop the priority, so that the recovery * CCB is the first to execute. Freeze the queue * after this command is sent so that we can * restore the old csio and have it queued in * the proper order before we release normal * transactions to the device. */ - ccb->ccb_h.pinfo.priority = 0; + ccb->ccb_h.pinfo.priority = CAM_PRIORITY_DEV; ccb->ccb_h.flags |= CAM_DEV_QFREEZE; ccb->ccb_h.saved_ccb_ptr = save_ccb; error = ERESTART; ==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#94 (text+ko) ==== @@ -808,7 +808,7 @@ ccb->ccb_h.func_code = XPT_SCAN_BUS; ccb->ccb_h.cbfcnp = xptdone; - xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, 5); + xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, CAM_PRIORITY_BUS); cam_periph_runccb(ccb, NULL, 0, 0, NULL); xpt_free_path(ccb->ccb_h.path); xpt_free_ccb(ccb); @@ -1053,7 +1053,7 @@ printf("%s%d: Serial Number %.60s\n", periph->periph_name, periph->unit_number, path->device->serial_num); } - xpt_setup_ccb(&cts.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; cts.type = CTS_TYPE_CURRENT_SETTINGS; xpt_action((union ccb*)&cts); @@ -1062,7 +1062,7 @@ } /* Ask the SIM for its base transfer speed */ - xpt_setup_ccb(&cpi.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -2329,7 +2329,7 @@ device->target->bus->path_id, device->target->target_id, device->lun_id); - xpt_setup_ccb(&cgd.ccb_h, &path, /*priority*/1); + xpt_setup_ccb(&cgd.ccb_h, &path, CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); cur_entry->callback(cur_entry->callback_arg, @@ -2353,7 +2353,7 @@ bus->sim->path_id, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); - xpt_setup_ccb(&cpi.ccb_h, &path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); cur_entry->callback(cur_entry->callback_arg, @@ -3789,7 +3789,7 @@ if (status != CAM_REQ_CMP) printf("xpt_compile_path returned %d\n", status); - xpt_setup_ccb(&cpi.ccb_h, &path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -4535,7 +4535,7 @@ newopenings = min(device->maxtags, sim->max_tagged_dev_openings); xpt_dev_ccbq_resize(path, newopenings); - xpt_setup_ccb(&crs.ccb_h, path, /*priority*/1); + xpt_setup_ccb(&crs.ccb_h, path, CAM_PRIORITY_NORMAL); crs.ccb_h.func_code = XPT_REL_SIMQ; crs.release_flags = RELSIM_RELEASE_AFTER_QEMPTY; crs.openings @@ -4562,7 +4562,7 @@ busses_to_config++; xpt_compile_path(&path, NULL, bus->path_id, CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD); - xpt_setup_ccb(&cpi.ccb_h, &path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); can_negotiate = cpi.hba_inquiry; @@ -4605,7 +4605,7 @@ xpt_finishconfig(xpt_periph, NULL); return(0); } - xpt_setup_ccb(&work_ccb->ccb_h, path, /*priority*/1); + xpt_setup_ccb(&work_ccb->ccb_h, path, CAM_PRIORITY_NORMAL); work_ccb->ccb_h.func_code = XPT_PATH_INQ; xpt_action(work_ccb); if (work_ccb->ccb_h.status != CAM_REQ_CMP) { @@ -4620,7 +4620,7 @@ can_negotiate &= (PI_WIDE_32|PI_WIDE_16|PI_SDTR_ABLE); if ((work_ccb->cpi.hba_misc & PIM_NOBUSRESET) == 0 && (can_negotiate != 0)) { - xpt_setup_ccb(&work_ccb->ccb_h, path, /*priority*/1); + xpt_setup_ccb(&work_ccb->ccb_h, path, CAM_PRIORITY_NORMAL); work_ccb->ccb_h.func_code = XPT_RESET_BUS; work_ccb->ccb_h.cbfcnp = NULL; CAM_DEBUG(path, CAM_DEBUG_SUBTRACE, @@ -4799,7 +4799,7 @@ xptpath = 1; } - xpt_setup_ccb(&csa.ccb_h, path, /*priority*/5); + xpt_setup_ccb(&csa.ccb_h, path, CAM_PRIORITY_NORMAL); csa.ccb_h.func_code = XPT_SASYNC_CB; csa.event_enable = event; csa.callback = cbfunc; ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.c#10 (text+ko) ==== @@ -3004,7 +3004,7 @@ */ xpt_setup_ccb(&cgd.ccb_h, csio->ccb_h.path, - /*priority*/ 1); + CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); @@ -3088,7 +3088,7 @@ */ xpt_setup_ccb(&cgd.ccb_h, csio->ccb_h.path, - /*priority*/ 1); + CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#26 (text+ko) ==== @@ -673,7 +673,7 @@ softc->quirks = CD_Q_NONE; /* Check if the SIM does not want 6 byte commands */ - xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); if (cpi.ccb_h.status == CAM_REQ_CMP && (cpi.hba_misc & PIM_NO_6_BYTE)) @@ -965,9 +965,9 @@ (void)cam_periph_hold(periph, PRIBIO); if ((softc->flags & CD_FLAG_CHANGER) == 0) - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, CAM_PRIORITY_DEV); else - cdschedule(periph, /*priority*/ 5); + cdschedule(periph, CAM_PRIORITY_DEV); return(CAM_REQ_CMP); } @@ -1105,7 +1105,7 @@ * We don't do anything with the priority here. * This is strictly a fifo queue. */ - softc->pinfo.priority = 1; + softc->pinfo.priority = CAM_PRIORITY_NORMAL; softc->pinfo.generation = ++softc->changer->devq.generation; camq_insert(&softc->changer->devq, (cam_pinfo *)softc); @@ -1206,7 +1206,7 @@ /* Just in case this device is waiting */ wakeup(&softc->changer); - xpt_schedule(softc->periph, /*priority*/ 1); + xpt_schedule(softc->periph, CAM_PRIORITY_NORMAL); /* * Get rid of any pending timeouts, and set a flag to schedule new @@ -1344,7 +1344,7 @@ * If this changer isn't already queued, queue it up. */ if (softc->pinfo.index == CAM_UNQUEUED_INDEX) { - softc->pinfo.priority = 1; + softc->pinfo.priority = CAM_PRIORITY_NORMAL; softc->pinfo.generation = ++softc->changer->devq.generation; camq_insert(&softc->changer->devq, @@ -1421,9 +1421,9 @@ * differently for changers. */ if ((softc->flags & CD_FLAG_CHANGER) == 0) - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); else - cdschedule(periph, /* priority */ 1); + cdschedule(periph, CAM_PRIORITY_NORMAL); cam_periph_unlock(periph); return; @@ -1493,7 +1493,7 @@ } if (bp != NULL) { /* Have more work to do, so ensure we stay scheduled */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } break; } @@ -1668,7 +1668,7 @@ xpt_setup_ccb(&cgd.ccb_h, done_ccb->ccb_h.path, - /* priority */ 1); + CAM_PRIORITY_NORMAL); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); @@ -2727,7 +2727,7 @@ return; } - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); scsi_prevent(&ccb->csio, /*retries*/ 1, @@ -2901,7 +2901,7 @@ softc = (struct cd_softc *)periph->softc; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); /* XXX Should be M_WAITOK */ rcap_buf = malloc(sizeof(struct scsi_read_capacity_data), @@ -3153,7 +3153,7 @@ ntoc = len; error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3200,7 +3200,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3252,7 +3252,7 @@ softc = (struct cd_softc *)periph->softc; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3351,7 +3351,7 @@ softc = (struct cd_softc *)periph->softc; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3443,7 +3443,7 @@ u_int8_t cdb_len; error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; /* * Use the smallest possible command to perform the operation. @@ -3500,7 +3500,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3546,7 +3546,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3588,7 +3588,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; @@ -3625,7 +3625,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); scsi_start_stop(&ccb->csio, /* retries */ 1, @@ -3653,7 +3653,7 @@ error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); scsi_start_stop(&ccb->csio, /* retries */ 1, @@ -3682,7 +3682,7 @@ int error; error = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; /* Preserve old behavior: units in multiples of CDROM speed */ @@ -3730,7 +3730,7 @@ databuf = NULL; lba = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); switch (authinfo->format) { case DVD_REPORT_AGID: @@ -3887,7 +3887,7 @@ error = 0; databuf = NULL; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); switch(authinfo->format) { case DVD_SEND_CHALLENGE: { @@ -3983,7 +3983,7 @@ /* The address is reserved for many of the formats */ address = 0; - ccb = cdgetccb(periph, /* priority */ 1); + ccb = cdgetccb(periph, CAM_PRIORITY_NORMAL); switch(dvdstruct->format) { case DVD_STRUCT_PHYSICAL: ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#18 (text+ko) ==== @@ -376,7 +376,7 @@ * This first call can't block */ (void)cam_periph_hold(periph, PRIBIO); - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, CAM_PRIORITY_DEV); return(CAM_REQ_CMP); } @@ -809,7 +809,7 @@ fromelem = softc->sc_firsts[cm->cm_fromtype] + cm->cm_fromunit; toelem = softc->sc_firsts[cm->cm_totype] + cm->cm_tounit; - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_move_medium(&ccb->csio, /* retries */ 1, @@ -868,7 +868,7 @@ dst1 = softc->sc_firsts[ce->ce_fdsttype] + ce->ce_fdstunit; dst2 = softc->sc_firsts[ce->ce_sdsttype] + ce->ce_sdstunit; - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_exchange_medium(&ccb->csio, /* retries */ 1, @@ -918,7 +918,7 @@ */ dst = softc->sc_firsts[cp->cp_type] + cp->cp_unit; - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_position_to_element(&ccb->csio, /* retries */ 1, @@ -1075,7 +1075,7 @@ data = (caddr_t)malloc(1024, M_DEVBUF, M_WAITOK); cam_periph_lock(periph); - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_read_element_status(&ccb->csio, /* retries */ 1, @@ -1201,7 +1201,7 @@ error = 0; softc = (struct ch_softc *)periph->softc; - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_initialize_element_status(&ccb->csio, /* retries */ 1, @@ -1285,7 +1285,7 @@ min(strlen(csvr->csvr_voltag.cv_volid), sizeof(ssvtp.vitf))); scsi_ulto2b(csvr->csvr_voltag.cv_serial, ssvtp.minvsn); - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_send_volume_tag(&ccb->csio, /* retries */ 1, @@ -1323,7 +1323,7 @@ softc = (struct ch_softc *)periph->softc; - ccb = cam_periph_getccb(periph, /*priority*/ 1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); /* * The scsi_mode_sense_data structure is just a convenience ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#43 (text+ko) ==== @@ -721,7 +721,7 @@ if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) { union ccb *ccb; - ccb = cam_periph_getccb(periph, /*priority*/1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_synchronize_cache(&ccb->csio, /*retries*/1, @@ -835,7 +835,7 @@ /* * Schedule ourselves for performing the work. */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); cam_periph_unlock(periph); return; @@ -865,7 +865,7 @@ if (length > 0) { periph->flags |= CAM_PERIPH_POLLED; - xpt_setup_ccb(&csio.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&csio.ccb_h, periph->path, CAM_PRIORITY_NORMAL); csio.ccb_h.ccb_state = DA_CCB_DUMP; scsi_read_write(&csio, /*retries*/1, @@ -902,7 +902,7 @@ */ if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) { - xpt_setup_ccb(&csio.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&csio.ccb_h, periph->path, CAM_PRIORITY_NORMAL); csio.ccb_h.ccb_state = DA_CCB_DUMP; scsi_synchronize_cache(&csio, /*retries*/1, @@ -1199,7 +1199,7 @@ /* Check if the SIM does not want 6 byte commands */ bzero(&cpi, sizeof(cpi)); - xpt_setup_ccb(&cpi.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); if (cpi.ccb_h.status == CAM_REQ_CMP && (cpi.hba_misc & PIM_NO_6_BYTE)) @@ -1278,7 +1278,7 @@ * the end of probe. */ (void)cam_periph_hold(periph, PRIBIO); - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, CAM_PRIORITY_DEV); /* * Schedule a periodic event to occasionally send an @@ -1384,7 +1384,7 @@ if (bp != NULL) { /* Have more work to do, so ensure we stay scheduled */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } break; } @@ -1494,8 +1494,10 @@ { struct da_softc *softc; struct ccb_scsiio *csio; + u_int32_t priority; softc = (struct da_softc *)periph->softc; + priority = done_ccb->ccb_h.pinfo.priority; csio = &done_ccb->csio; switch (csio->ccb_h.ccb_state & DA_CCB_TYPE_MASK) { case DA_CCB_BUFFER_IO: @@ -1613,7 +1615,7 @@ softc->state = DA_STATE_PROBE2; free(rdcap, M_SCSIDA); xpt_release_ccb(done_ccb); - xpt_schedule(periph, /*priority*/5); + xpt_schedule(periph, priority); return; } } else { @@ -1681,7 +1683,7 @@ xpt_setup_ccb(&cgd.ccb_h, done_ccb->ccb_h.path, - /* priority */ 1); + priority); cgd.ccb_h.func_code = XPT_GDEV_TYPE; xpt_action((union ccb *)&cgd); @@ -1835,7 +1837,7 @@ return; } - ccb = cam_periph_getccb(periph, /*priority*/1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_prevent(&ccb->csio, /*retries*/1, @@ -1885,7 +1887,7 @@ if (rcap == NULL) return (ENOMEM); - ccb = cam_periph_getccb(periph, /*priority*/1); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); scsi_read_capacity(&ccb->csio, /*retries*/4, /*cbfncp*/dadone, @@ -1979,7 +1981,7 @@ * up with something that will make this a bootable * device. */ - xpt_setup_ccb(&ccg.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&ccg.ccb_h, periph->path, CAM_PRIORITY_NORMAL); ccg.ccb_h.func_code = XPT_CALC_GEOMETRY; ccg.block_size = dp->secsize; ccg.volume_size = dp->sectors; @@ -2053,7 +2055,7 @@ continue; } - xpt_setup_ccb(&ccb.ccb_h, periph->path, /*priority*/1); + xpt_setup_ccb(&ccb.ccb_h, periph->path, CAM_PRIORITY_NORMAL); ccb.ccb_h.ccb_state = DA_CCB_DUMP; scsi_synchronize_cache(&ccb.csio, ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_low.c#16 (text+ko) ==== @@ -976,7 +976,7 @@ ccb = xpt_alloc_ccb(); bzero(ccb, sizeof(union ccb)); - xpt_setup_ccb(&ccb->ccb_h, path, 5); + xpt_setup_ccb(&ccb->ccb_h, path, CAM_PRIORITY_BUS); ccb->ccb_h.func_code = XPT_SCAN_BUS; ccb->ccb_h.cbfcnp = scsi_low_cam_rescan_callback; ccb->crcn.flags = CAM_FLAG_NONE; ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pt.c#14 (text+ko) ==== @@ -224,7 +224,7 @@ /* * Schedule ourselves for performing the work. */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); cam_periph_unlock(periph); return; @@ -464,7 +464,7 @@ if (bp != NULL) { /* Have more work to do, so ensure we stay scheduled */ - xpt_schedule(periph, /* XXX priority */1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } } } ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sa.c#20 (text+ko) ==== @@ -786,7 +786,7 @@ /* * Schedule ourselves for performing the work. */ - xpt_schedule(periph, 1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); cam_periph_unlock(periph); return; @@ -1689,7 +1689,7 @@ if (bp != NULL) { /* Have more work to do, so ensure we stay scheduled */ - xpt_schedule(periph, 1); + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } break; } ==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_sg.c#15 (text+ko) ==== @@ -510,7 +510,7 @@ break; } - ccb = cam_periph_getccb(periph, /*priority*/5); + ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); csio = &ccb->csio; error = copyin(req.cmdp, &csio->cdb_io.cdb_bytes, @@ -729,7 +729,7 @@ cam_periph_lock(periph); sc = periph->softc; - xpt_setup_ccb(&ccb->ccb_h, periph->path, /*priority*/5); + xpt_setup_ccb(&ccb->ccb_h, periph->path, CAM_PRIORITY_NORMAL); cam_fill_csio(csio, /*retries*/1, sgdone, >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jul 25 13:12:33 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 914181065672; Sat, 25 Jul 2009 13:12:33 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50396106566B for ; Sat, 25 Jul 2009 13:12:33 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3E77A8FC1A for ; Sat, 25 Jul 2009 13:12:33 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PDCXnS004877 for ; Sat, 25 Jul 2009 13:12:33 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PDCXmm004875 for perforce@freebsd.org; Sat, 25 Jul 2009 13:12:33 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 13:12:33 GMT Message-Id: <200907251312.n6PDCXmm004875@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166553 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 13:12:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=166553 Change 166553 by andre@andre_flirtbox on 2009/07/25 13:12:31 For sysctl_zonelimit() the zone has to be passed by reference. Affected files ... .. //depot/projects/tcp_reass/kern/kern_sysctl.c#9 edit .. //depot/projects/tcp_reass/netinet/tcp_reass.c#50 edit Differences ... ==== //depot/projects/tcp_reass/kern/kern_sysctl.c#9 (text+ko) ==== @@ -972,9 +972,10 @@ sysctl_zonelimit(SYSCTL_HANDLER_ARGS) { int error, nitems; - uma_zone_t zone = (uma_zone_t)arg1; + uma_zone_t *zone; + zone = (uma_zone_t *)arg1; - nitems = uma_zone_get_max(zone); + nitems = uma_zone_get_max(*zone); error = sysctl_handle_int(oidp, &nitems, 0, req); if (error || !req->newptr) @@ -983,7 +984,7 @@ if (nitems < 1) return (EINVAL); - uma_zone_set_max(zone, nitems); + uma_zone_set_max(*zone, nitems); return (error); } ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#50 (text+ko) ==== @@ -63,7 +63,6 @@ * * TODO: * - Improve comments and annotate RFC references. - * - Resizing of tcp_reass_globalmaxblocks through sysctl. * - Style improvements. * - Lots of testing. */ @@ -99,7 +98,7 @@ #include #include -VNET_DEFINE(uma_zone_t, tcp_reass_zone); +uma_zone_t tcp_reass_zone; SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0, "TCP Segment Reassembly Queue"); @@ -116,8 +115,8 @@ static int tcp_reass_globalmaxblocks = 65535; SYSCTL_PROC(_net_inet_tcp_reass, OID_AUTO, globalmaxblocks, - CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_TUN, tcp_reass_zone, - 0, sysctl_zonelimit, "I", + CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_TUN, &tcp_reass_zone, 0, + sysctl_zonelimit, "I", "Global limit of TCP segment blocks in reassembly queue"); static int tcp_reass_timeout = 0; From owner-p4-projects@FreeBSD.ORG Sat Jul 25 13:17:39 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 67802106568E; Sat, 25 Jul 2009 13:17:39 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1E414106568B for ; Sat, 25 Jul 2009 13:17:39 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0A02B8FC16 for ; Sat, 25 Jul 2009 13:17:39 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PDHdgp005255 for ; Sat, 25 Jul 2009 13:17:39 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PDHct7005253 for perforce@freebsd.org; Sat, 25 Jul 2009 13:17:38 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 13:17:38 GMT Message-Id: <200907251317.n6PDHct7005253@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166554 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 13:17:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=166554 Change 166554 by andre@andre_flirtbox on 2009/07/25 13:16:53 IFC. Affected files ... .. //depot/projects/tcp_reass/amd64/amd64/pmap.c#11 integrate .. //depot/projects/tcp_reass/arm/arm/pmap.c#9 integrate .. //depot/projects/tcp_reass/conf/files#11 integrate .. //depot/projects/tcp_reass/dev/e1000/e1000_ich8lan.c#4 integrate .. //depot/projects/tcp_reass/dev/e1000/if_em.c#5 integrate .. //depot/projects/tcp_reass/dev/e1000/if_igb.c#6 integrate .. //depot/projects/tcp_reass/dev/ixgbe/ixgbe.c#5 integrate .. //depot/projects/tcp_reass/fs/procfs/procfs_map.c#5 integrate .. //depot/projects/tcp_reass/i386/i386/pmap.c#10 integrate .. //depot/projects/tcp_reass/i386/xen/pmap.c#6 integrate .. //depot/projects/tcp_reass/ia64/ia64/pmap.c#8 integrate .. //depot/projects/tcp_reass/kern/kern_proc.c#7 integrate .. //depot/projects/tcp_reass/kern/kern_vimage.c#9 integrate .. //depot/projects/tcp_reass/kern/uipc_domain.c#7 integrate .. //depot/projects/tcp_reass/mips/mips/pmap.c#6 integrate .. //depot/projects/tcp_reass/net/flowtable.c#8 integrate .. //depot/projects/tcp_reass/net/if.c#12 integrate .. //depot/projects/tcp_reass/net/if_clone.c#7 integrate .. //depot/projects/tcp_reass/net/if_clone.h#4 integrate .. //depot/projects/tcp_reass/net/if_gif.c#8 integrate .. //depot/projects/tcp_reass/net/if_loop.c#8 integrate .. //depot/projects/tcp_reass/net/route.c#10 integrate .. //depot/projects/tcp_reass/net/rtsock.c#9 integrate .. //depot/projects/tcp_reass/net/vnet.c#2 integrate .. //depot/projects/tcp_reass/net/vnet.h#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211.c#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_output.c#8 integrate .. //depot/projects/tcp_reass/netgraph/bluetooth/socket/ng_btsocket.c#4 integrate .. //depot/projects/tcp_reass/netgraph/netgraph.h#8 integrate .. //depot/projects/tcp_reass/netgraph/ng_base.c#9 integrate .. //depot/projects/tcp_reass/netgraph/ng_eiface.c#8 integrate .. //depot/projects/tcp_reass/netgraph/ng_ether.c#7 integrate .. //depot/projects/tcp_reass/netgraph/ng_iface.c#9 integrate .. //depot/projects/tcp_reass/netgraph/ng_socket.c#5 integrate .. //depot/projects/tcp_reass/netinet/igmp.c#10 integrate .. //depot/projects/tcp_reass/netinet/in_proto.c#6 integrate .. //depot/projects/tcp_reass/netinet/ipfw/ip_fw2.c#6 integrate .. //depot/projects/tcp_reass/netinet6/in6_proto.c#8 integrate .. //depot/projects/tcp_reass/netinet6/mld6.c#10 integrate .. //depot/projects/tcp_reass/netipsec/ipsec.c#8 integrate .. //depot/projects/tcp_reass/netipsec/keysock.c#7 integrate .. //depot/projects/tcp_reass/powerpc/booke/pmap.c#7 integrate .. //depot/projects/tcp_reass/sparc64/sparc64/pmap.c#6 integrate .. //depot/projects/tcp_reass/sys/domain.h#5 integrate .. //depot/projects/tcp_reass/sys/kernel.h#8 integrate .. //depot/projects/tcp_reass/sys/param.h#11 integrate .. //depot/projects/tcp_reass/sys/sysctl.h#10 integrate .. //depot/projects/tcp_reass/sys/user.h#8 integrate .. //depot/projects/tcp_reass/sys/vimage.h#9 integrate .. //depot/projects/tcp_reass/vm/sg_pager.c#1 branch .. //depot/projects/tcp_reass/vm/vm.h#5 integrate .. //depot/projects/tcp_reass/vm/vm_fault.c#8 integrate .. //depot/projects/tcp_reass/vm/vm_map.c#9 integrate .. //depot/projects/tcp_reass/vm/vm_meter.c#5 integrate .. //depot/projects/tcp_reass/vm/vm_object.c#10 integrate .. //depot/projects/tcp_reass/vm/vm_object.h#7 integrate .. //depot/projects/tcp_reass/vm/vm_page.c#10 integrate .. //depot/projects/tcp_reass/vm/vm_pageout.c#7 integrate .. //depot/projects/tcp_reass/vm/vm_pager.c#5 integrate .. //depot/projects/tcp_reass/vm/vm_pager.h#5 integrate Differences ... ==== //depot/projects/tcp_reass/amd64/amd64/pmap.c#11 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.666 2009/07/22 14:32:38 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.667 2009/07/24 13:50:29 jhb Exp $"); /* * Manages physical address maps. @@ -3359,7 +3359,7 @@ int pat_mode; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object->type == OBJT_DEVICE, + KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG, ("pmap_object_init_pt: non-device object")); if ((addr & (NBPDR - 1)) == 0 && (size & (NBPDR - 1)) == 0) { if (!vm_object_populate(object, pindex, pindex + atop(size))) ==== //depot/projects/tcp_reass/arm/arm/pmap.c#9 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.112 2009/07/20 07:53:07 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.113 2009/07/24 13:50:29 jhb Exp $"); #include #include #include @@ -3101,7 +3101,7 @@ { VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object->type == OBJT_DEVICE, + KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG, ("pmap_object_init_pt: non-device object")); } ==== //depot/projects/tcp_reass/conf/files#11 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1455 2009/07/21 12:32:46 mav Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1456 2009/07/24 13:50:29 jhb Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -2637,6 +2637,7 @@ vm/device_pager.c standard vm/phys_pager.c standard vm/redzone.c optional DEBUG_REDZONE +vm/sg_pager.c standard vm/swap_pager.c standard vm/uma_core.c standard vm/uma_dbg.c standard ==== //depot/projects/tcp_reass/dev/e1000/e1000_ich8lan.c#4 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/e1000/e1000_ich8lan.c,v 1.4 2009/06/24 17:41:29 jfv Exp $*/ +/*$FreeBSD: src/sys/dev/e1000/e1000_ich8lan.c,v 1.5 2009/07/24 16:54:22 jfv Exp $*/ /* * 82562G 10/100 Network Connection @@ -307,7 +307,6 @@ { struct e1000_nvm_info *nvm = &hw->nvm; struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan; - union ich8_hws_flash_status hsfsts; u32 gfpreg, sector_base_addr, sector_end_addr; s32 ret_val = E1000_SUCCESS; u16 i; @@ -346,20 +345,6 @@ /* Adjust to word count */ nvm->flash_bank_size /= sizeof(u16); - /* - * Make sure the flash bank size does not overwrite the 4k - * sector ranges. We may have 64k allotted to us but we only care - * about the first 2 4k sectors. Therefore, if we have anything less - * than 64k set in the HSFSTS register, we will reduce the bank size - * down to 4k and let the rest remain unused. If berasesz == 3, then - * we are working in 64k mode. Otherwise we are not. - */ - if (nvm->flash_bank_size > E1000_SHADOW_RAM_WORDS) { - hsfsts.regval = E1000_READ_FLASH_REG16(hw, ICH_FLASH_HSFSTS); - if (hsfsts.hsf_status.berasesz != 3) - nvm->flash_bank_size = E1000_SHADOW_RAM_WORDS; - } - nvm->word_size = E1000_SHADOW_RAM_WORDS; /* Clear shadow ram */ @@ -1961,13 +1946,8 @@ iteration = 1; break; case 2: - if (hw->mac.type == e1000_ich9lan) { - sector_size = ICH_FLASH_SEG_SIZE_8K; - iteration = flash_bank_size / ICH_FLASH_SEG_SIZE_8K; - } else { - ret_val = -E1000_ERR_NVM; - goto out; - } + sector_size = ICH_FLASH_SEG_SIZE_8K; + iteration = 1; break; case 3: sector_size = ICH_FLASH_SEG_SIZE_64K; ==== //depot/projects/tcp_reass/dev/e1000/if_em.c#5 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.19 2009/06/29 18:17:10 jfv Exp $*/ +/*$FreeBSD: src/sys/dev/e1000/if_em.c,v 1.21 2009/07/24 21:35:52 jfv Exp $*/ #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" @@ -815,9 +815,9 @@ #if __FreeBSD_version >= 700029 /* Register for VLAN events */ adapter->vlan_attach = EVENTHANDLER_REGISTER(vlan_config, - em_register_vlan, 0, EVENTHANDLER_PRI_FIRST); + em_register_vlan, adapter, EVENTHANDLER_PRI_FIRST); adapter->vlan_detach = EVENTHANDLER_REGISTER(vlan_unconfig, - em_unregister_vlan, 0, EVENTHANDLER_PRI_FIRST); + em_unregister_vlan, adapter, EVENTHANDLER_PRI_FIRST); #endif /* Tell the stack that the interface is not active */ @@ -919,9 +919,6 @@ bus_generic_detach(dev); if_free(ifp); -#if __FreeBSD_version >= 800000 - drbr_free(adapter->br, M_DEVBUF); -#endif em_free_transmit_structures(adapter); em_free_receive_structures(adapter); @@ -3644,7 +3641,8 @@ adapter->txtag = NULL; } #if __FreeBSD_version >= 800000 - buf_ring_free(adapter->br, M_DEVBUF); + if (adapter->br != NULL) + buf_ring_free(adapter->br, M_DEVBUF); #endif } @@ -4715,12 +4713,15 @@ * config EVENT */ static void -em_register_vlan(void *unused, struct ifnet *ifp, u16 vtag) +em_register_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u32 index, bit; - if ((vtag == 0) || (vtag > 4095)) /* Invalid */ + if (ifp->if_softc != arg) /* Not our event */ + return; + + if ((vtag == 0) || (vtag > 4095)) /* Invalid ID */ return; index = (vtag >> 5) & 0x7F; @@ -4736,11 +4737,14 @@ * unconfig EVENT */ static void -em_unregister_vlan(void *unused, struct ifnet *ifp, u16 vtag) +em_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u32 index, bit; + if (ifp->if_softc != arg) + return; + if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return; ==== //depot/projects/tcp_reass/dev/e1000/if_igb.c#6 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/e1000/if_igb.c,v 1.19 2009/07/14 19:32:36 bz Exp $*/ +/*$FreeBSD: src/sys/dev/e1000/if_igb.c,v 1.21 2009/07/24 21:35:52 jfv Exp $*/ #ifdef HAVE_KERNEL_OPTION_HEADERS @@ -600,9 +600,9 @@ /* Register for VLAN events */ adapter->vlan_attach = EVENTHANDLER_REGISTER(vlan_config, - igb_register_vlan, 0, EVENTHANDLER_PRI_FIRST); + igb_register_vlan, adapter, EVENTHANDLER_PRI_FIRST); adapter->vlan_detach = EVENTHANDLER_REGISTER(vlan_unconfig, - igb_unregister_vlan, 0, EVENTHANDLER_PRI_FIRST); + igb_unregister_vlan, adapter, EVENTHANDLER_PRI_FIRST); /* Tell the stack that the interface is not active */ adapter->ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); @@ -3068,7 +3068,8 @@ } } #if __FreeBSD_version >= 800000 - buf_ring_free(txr->br, M_DEVBUF); + if (txr->br != NULL) + buf_ring_free(txr->br, M_DEVBUF); #endif if (txr->tx_buffers != NULL) { free(txr->tx_buffers, M_DEVBUF); @@ -4304,11 +4305,14 @@ * config EVENT */ static void -igb_register_vlan(void *unused, struct ifnet *ifp, u16 vtag) +igb_register_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u32 index, bit; + if (ifp->if_softc != arg) /* Not our event */ + return; + if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return; @@ -4325,11 +4329,14 @@ * unconfig EVENT */ static void -igb_unregister_vlan(void *unused, struct ifnet *ifp, u16 vtag) +igb_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u32 index, bit; + if (ifp->if_softc != arg) + return; + if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return; ==== //depot/projects/tcp_reass/dev/ixgbe/ixgbe.c#5 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/ixgbe/ixgbe.c,v 1.15 2009/07/01 16:13:01 jfv Exp $*/ +/*$FreeBSD: src/sys/dev/ixgbe/ixgbe.c,v 1.17 2009/07/24 21:35:52 jfv Exp $*/ #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" @@ -539,9 +539,9 @@ /* Register for VLAN events */ adapter->vlan_attach = EVENTHANDLER_REGISTER(vlan_config, - ixgbe_register_vlan, 0, EVENTHANDLER_PRI_FIRST); + ixgbe_register_vlan, adapter, EVENTHANDLER_PRI_FIRST); adapter->vlan_detach = EVENTHANDLER_REGISTER(vlan_unconfig, - ixgbe_unregister_vlan, 0, EVENTHANDLER_PRI_FIRST); + ixgbe_unregister_vlan, adapter, EVENTHANDLER_PRI_FIRST); /* let hardware know driver is loaded */ ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT); @@ -2961,7 +2961,8 @@ } } #if __FreeBSD_version >= 800000 - buf_ring_free(txr->br, M_DEVBUF); + if (txr->br != NULL) + buf_ring_free(txr->br, M_DEVBUF); #endif if (txr->tx_buffers != NULL) { free(txr->tx_buffers, M_DEVBUF); @@ -4123,11 +4124,14 @@ ** repopulate the real table. */ static void -ixgbe_register_vlan(void *unused, struct ifnet *ifp, u16 vtag) +ixgbe_register_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u16 index, bit; + if (ifp->if_softc != arg) /* Not our event */ + return; + if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return; @@ -4145,11 +4149,14 @@ ** in the soft vfta. */ static void -ixgbe_unregister_vlan(void *unused, struct ifnet *ifp, u16 vtag) +ixgbe_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag) { struct adapter *adapter = ifp->if_softc; u16 index, bit; + if (ifp->if_softc != arg) + return; + if ((vtag == 0) || (vtag > 4095)) /* Invalid */ return; ==== //depot/projects/tcp_reass/fs/procfs/procfs_map.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ * * @(#)procfs_status.c 8.3 (Berkeley) 2/17/94 * - * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.50 2009/06/23 20:45:22 kib Exp $ + * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.51 2009/07/24 13:50:29 jhb Exp $ */ #include "opt_compat.h" @@ -174,6 +174,7 @@ type = "swap"; vp = NULL; break; + case OBJT_SG: case OBJT_DEVICE: type = "device"; vp = NULL; ==== //depot/projects/tcp_reass/i386/i386/pmap.c#10 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.642 2009/07/19 21:40:19 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.644 2009/07/24 13:50:29 jhb Exp $"); /* * Manages physical address maps. @@ -3448,7 +3448,7 @@ int pat_mode; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object->type == OBJT_DEVICE, + KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG, ("pmap_object_init_pt: non-device object")); if (pseflag && (addr & (NBPDR - 1)) == 0 && (size & (NBPDR - 1)) == 0) { @@ -4482,6 +4482,7 @@ pt_entry_t *pte; u_int opte, npte; pd_entry_t *pde; + boolean_t changed; base = trunc_page(va); offset = va & PAGE_MASK; @@ -4505,6 +4506,8 @@ return (EINVAL); } + changed = FALSE; + /* * Ok, all the pages exist and are 4k, so run through them updating * their cache mode. @@ -4522,6 +4525,8 @@ npte |= pmap_cache_bits(mode, 0); } while (npte != opte && !atomic_cmpset_int((u_int *)pte, opte, npte)); + if (npte != opte) + changed = TRUE; tmpva += PAGE_SIZE; size -= PAGE_SIZE; } @@ -4530,10 +4535,12 @@ * Flush CPU caches to make sure any data isn't cached that shouldn't * be, etc. */ - pmap_invalidate_range(kernel_pmap, base, tmpva); - /* If "Self Snoop" is supported, do nothing. */ - if (!(cpu_feature & CPUID_SS)) - pmap_invalidate_cache(); + if (changed) { + pmap_invalidate_range(kernel_pmap, base, tmpva); + /* If "Self Snoop" is supported, do nothing. */ + if (!(cpu_feature & CPUID_SS)) + pmap_invalidate_cache(); + } return (0); } ==== //depot/projects/tcp_reass/i386/xen/pmap.c#6 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/xen/pmap.c,v 1.15 2009/07/19 21:40:19 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/xen/pmap.c,v 1.16 2009/07/24 13:50:29 jhb Exp $"); /* * Manages physical address maps. @@ -3093,7 +3093,7 @@ vm_page_t p; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object->type == OBJT_DEVICE, + KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG, ("pmap_object_init_pt: non-device object")); if (pseflag && ((addr & (NBPDR - 1)) == 0) && ((size & (NBPDR - 1)) == 0)) { ==== //depot/projects/tcp_reass/ia64/ia64/pmap.c#8 (text+ko) ==== @@ -46,7 +46,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.205 2009/07/11 22:27:20 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.206 2009/07/24 13:50:29 jhb Exp $"); #include #include @@ -1751,7 +1751,7 @@ { VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object->type == OBJT_DEVICE, + KASSERT(object->type == OBJT_DEVICE || object->type == OBJT_SG, ("pmap_object_init_pt: non-device object")); } ==== //depot/projects/tcp_reass/kern/kern_proc.c#7 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.282 2009/06/19 17:10:35 brooks Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.285 2009/07/24 19:12:19 brooks Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -730,11 +730,17 @@ kp->ki_uid = cred->cr_uid; kp->ki_ruid = cred->cr_ruid; kp->ki_svuid = cred->cr_svuid; - kp->ki_ngroups = cred->cr_ngroups; - kp->ki_groups = cred->cr_groups; + kp->ki_cr_flags = cred->cr_flags; + /* XXX bde doesn't like KI_NGROUPS */ + if (cred->cr_ngroups > KI_NGROUPS) { + kp->ki_ngroups = KI_NGROUPS; + kp->ki_cr_flags |= KI_CRF_GRP_OVERFLOW; + } else + kp->ki_ngroups = cred->cr_ngroups; + bcopy(cred->cr_groups, kp->ki_groups, + kp->ki_ngroups * sizeof(gid_t)); kp->ki_rgid = cred->cr_rgid; kp->ki_svgid = cred->cr_svgid; - kp->ki_cr_flags = cred->cr_flags; /* If jailed(cred), emulate the old P_JAILED flag. */ if (jailed(cred)) { kp->ki_flag |= P_JAILED; @@ -1486,6 +1492,9 @@ case OBJT_DEAD: kve->kve_type = KVME_TYPE_DEAD; break; + case OBJT_SG: + kve->kve_type = KVME_TYPE_SG; + break; default: kve->kve_type = KVME_TYPE_UNKNOWN; break; @@ -1658,6 +1667,9 @@ case OBJT_DEAD: kve->kve_type = KVME_TYPE_DEAD; break; + case OBJT_SG: + kve->kve_type = KVME_TYPE_SG; + break; default: kve->kve_type = KVME_TYPE_UNKNOWN; break; @@ -1814,6 +1826,43 @@ } #endif +/* + * This sysctl allows a process to retrieve the full list of groups from + * itself or another process. + */ +static int +sysctl_kern_proc_groups(SYSCTL_HANDLER_ARGS) +{ + pid_t *pidp = (pid_t *)arg1; + unsigned int arglen = arg2; + struct proc *p; + struct ucred *cred; + int error; + + if (arglen != 1) + return (EINVAL); + if (*pidp == -1) { /* -1 means this process */ + p = req->td->td_proc; + } else { + p = pfind(*pidp); + if (p == NULL) + return (ESRCH); + if ((error = p_cansee(curthread, p)) != 0) { + PROC_UNLOCK(p); + return (error); + } + } + + cred = crhold(p->p_ucred); + if (*pidp != -1) + PROC_UNLOCK(p); + + error = SYSCTL_OUT(req, cred->cr_groups, + cred->cr_ngroups * sizeof(gid_t)); + crfree(cred); + return (error); +} + SYSCTL_NODE(_kern, KERN_PROC, proc, CTLFLAG_RD, 0, "Process table"); SYSCTL_PROC(_kern_proc, KERN_PROC_ALL, all, CTLFLAG_RD|CTLTYPE_STRUCT| @@ -1898,3 +1947,6 @@ static SYSCTL_NODE(_kern_proc, KERN_PROC_KSTACK, kstack, CTLFLAG_RD | CTLFLAG_MPSAFE, sysctl_kern_proc_kstack, "Process kernel stacks"); #endif + +static SYSCTL_NODE(_kern_proc, KERN_PROC_GROUPS, groups, CTLFLAG_RD | + CTLFLAG_MPSAFE, sysctl_kern_proc_groups, "Process groups"); ==== //depot/projects/tcp_reass/kern/kern_vimage.c#9 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_vimage.c,v 1.16 2009/07/19 17:40:45 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_vimage.c,v 1.17 2009/07/23 20:46:49 rwatson Exp $"); #include "opt_ddb.h" @@ -52,12 +52,6 @@ MALLOC_DEFINE(M_VNET, "vnet", "network stack control block"); -static TAILQ_HEAD(vnet_modlink_head, vnet_modlink) vnet_modlink_head; -static TAILQ_HEAD(vnet_modpending_head, vnet_modlink) vnet_modpending_head; -static void vnet_mod_complete_registration(struct vnet_modlink *); -static int vnet_mod_constructor(struct vnet_modlink *); -static int vnet_mod_destructor(struct vnet_modlink *); - struct rwlock vnet_rwlock; struct sx vnet_sxlock; @@ -130,185 +124,10 @@ return (error); } - -/* - * Kernel interfaces and handlers. - */ - -void -vnet_mod_register(const struct vnet_modinfo *vmi) -{ - - vnet_mod_register_multi(vmi, NULL, NULL); -} - -void -vnet_mod_register_multi(const struct vnet_modinfo *vmi, void *iarg, - char *iname) -{ - struct vnet_modlink *vml, *vml_iter; - - /* Do not register the same {module, iarg} pair more than once. */ - TAILQ_FOREACH(vml_iter, &vnet_modlink_head, vml_mod_le) - if (vml_iter->vml_modinfo == vmi && vml_iter->vml_iarg == iarg) - break; - if (vml_iter != NULL) - panic("registering an already registered vnet module: %s", - vml_iter->vml_modinfo->vmi_name); - vml = malloc(sizeof(struct vnet_modlink), M_VNET, M_NOWAIT); - - /* - * XXX we support only statically assigned module IDs at the time. - * In principle modules should be able to get a dynamically - * assigned ID at registration time. - * - * If a module is registered in multiple instances, then each - * instance must have both iarg and iname set. - */ - if (vmi->vmi_id >= VNET_MOD_MAX) - panic("invalid vnet module ID: %d", vmi->vmi_id); - if (vmi->vmi_name == NULL) - panic("vnet module with no name: %d", vmi->vmi_id); - if ((iarg == NULL) ^ (iname == NULL)) - panic("invalid vnet module instance: %s", vmi->vmi_name); - - vml->vml_modinfo = vmi; - vml->vml_iarg = iarg; - vml->vml_iname = iname; - - /* Check whether the module we depend on is already registered. */ - if (vmi->vmi_dependson != vmi->vmi_id) { - TAILQ_FOREACH(vml_iter, &vnet_modlink_head, vml_mod_le) - if (vml_iter->vml_modinfo->vmi_id == - vmi->vmi_dependson) - break; /* Depencency found, we are done. */ - if (vml_iter == NULL) { -#ifdef DEBUG_ORDERING - printf("dependency %d missing for vnet mod %s," - "postponing registration\n", - vmi->vmi_dependson, vmi->vmi_name); -#endif /* DEBUG_ORDERING */ - TAILQ_INSERT_TAIL(&vnet_modpending_head, vml, - vml_mod_le); - return; - } - } - - vnet_mod_complete_registration(vml); -} - -void -vnet_mod_complete_registration(struct vnet_modlink *vml) -{ - VNET_ITERATOR_DECL(vnet_iter); - struct vnet_modlink *vml_iter; - - TAILQ_INSERT_TAIL(&vnet_modlink_head, vml, vml_mod_le); - - VNET_FOREACH(vnet_iter) { - CURVNET_SET_QUIET(vnet_iter); - vnet_mod_constructor(vml); - CURVNET_RESTORE(); - } - - /* Check for pending modules depending on us. */ - do { - TAILQ_FOREACH(vml_iter, &vnet_modpending_head, vml_mod_le) - if (vml_iter->vml_modinfo->vmi_dependson == - vml->vml_modinfo->vmi_id) - break; - if (vml_iter != NULL) { -#ifdef DEBUG_ORDERING - printf("vnet mod %s now registering," - "dependency %d loaded\n", - vml_iter->vml_modinfo->vmi_name, - vml->vml_modinfo->vmi_id); -#endif /* DEBUG_ORDERING */ - TAILQ_REMOVE(&vnet_modpending_head, vml_iter, - vml_mod_le); - vnet_mod_complete_registration(vml_iter); - } - } while (vml_iter != NULL); -} - -void -vnet_mod_deregister(const struct vnet_modinfo *vmi) -{ - - vnet_mod_deregister_multi(vmi, NULL, NULL); -} - -void -vnet_mod_deregister_multi(const struct vnet_modinfo *vmi, void *iarg, - char *iname) -{ - VNET_ITERATOR_DECL(vnet_iter); - struct vnet_modlink *vml; - - TAILQ_FOREACH(vml, &vnet_modlink_head, vml_mod_le) - if (vml->vml_modinfo == vmi && vml->vml_iarg == iarg) - break; - if (vml == NULL) - panic("cannot deregister unregistered vnet module %s", - vmi->vmi_name); - - VNET_FOREACH(vnet_iter) { - CURVNET_SET_QUIET(vnet_iter); - vnet_mod_destructor(vml); - CURVNET_RESTORE(); - } - - TAILQ_REMOVE(&vnet_modlink_head, vml, vml_mod_le); - free(vml, M_VNET); -} - -static int -vnet_mod_constructor(struct vnet_modlink *vml) -{ - const struct vnet_modinfo *vmi = vml->vml_modinfo; - -#ifdef DEBUG_ORDERING - printf("instantiating vnet_%s", vmi->vmi_name); - if (vml->vml_iarg) - printf("/%s", vml->vml_iname); - printf(": "); - if (vmi->vmi_iattach != NULL) - printf("iattach()"); - printf("\n"); -#endif - - if (vmi->vmi_iattach != NULL) - vmi->vmi_iattach(vml->vml_iarg); - - return (0); -} - -static int -vnet_mod_destructor(struct vnet_modlink *vml) -{ - const struct vnet_modinfo *vmi = vml->vml_modinfo; - -#ifdef DEBUG_ORDERING - printf("destroying vnet_%s", vmi->vmi_name); - if (vml->vml_iarg) - printf("/%s", vml->vml_iname); - printf(": "); - if (vmi->vmi_idetach != NULL) - printf("idetach(); "); - printf("\n"); -#endif - - if (vmi->vmi_idetach) - vmi->vmi_idetach(vml->vml_iarg); - - return (0); -} - struct vnet * vnet_alloc(void) { struct vnet *vnet; - struct vnet_modlink *vml; vnet = malloc(sizeof(struct vnet), M_VNET, M_WAITOK | M_ZERO); vnet->vnet_magic_n = VNET_MAGIC_N; @@ -316,11 +135,12 @@ /* Initialize / attach vnet module instances. */ CURVNET_SET_QUIET(vnet); - TAILQ_FOREACH(vml, &vnet_modlink_head, vml_mod_le) - vnet_mod_constructor(vml); + + sx_xlock(&vnet_sxlock); + vnet_sysinit(); CURVNET_RESTORE(); - VNET_LIST_WLOCK(); + rw_wlock(&vnet_rwlock); LIST_INSERT_HEAD(&vnet_head, vnet, vnet_le); VNET_LIST_WUNLOCK(); @@ -331,14 +151,13 @@ vnet_destroy(struct vnet *vnet) { struct ifnet *ifp, *nifp; - struct vnet_modlink *vml; KASSERT(vnet->vnet_sockcnt == 0, ("%s: vnet still has sockets", __func__)); VNET_LIST_WLOCK(); LIST_REMOVE(vnet, vnet_le); - VNET_LIST_WUNLOCK(); + rw_wunlock(&vnet_rwlock); CURVNET_SET_QUIET(vnet); @@ -348,10 +167,8 @@ if_vmove(ifp, ifp->if_home_vnet); } - /* Detach / free per-module state instances. */ - TAILQ_FOREACH_REVERSE(vml, &vnet_modlink_head, - vnet_modlink_head, vml_mod_le) - vnet_mod_destructor(vml); + vnet_sysuninit(); + sx_xunlock(&vnet_sxlock); CURVNET_RESTORE(); @@ -387,9 +204,6 @@ vnet0_init(void *arg) { - TAILQ_INIT(&vnet_modlink_head); - TAILQ_INIT(&vnet_modpending_head); - /* * We MUST clear curvnet in vi_init_done() before going SMP, * otherwise CURVNET_SET() macros would scream about unnecessary @@ -402,20 +216,8 @@ static void vnet_init_done(void *unused) { - struct vnet_modlink *vml_iter; curvnet = NULL; - - if (TAILQ_EMPTY(&vnet_modpending_head)) - return; - - printf("vnet modules with unresolved dependencies:\n"); - TAILQ_FOREACH(vml_iter, &vnet_modpending_head, vml_mod_le) - printf(" %d:%s depending on %d\n", - vml_iter->vml_modinfo->vmi_id, - vml_iter->vml_modinfo->vmi_name, - vml_iter->vml_modinfo->vmi_dependson); - panic("going nowhere without my vnet modules!"); } SYSINIT(vnet_init_done, SI_SUB_VNET_DONE, SI_ORDER_FIRST, vnet_init_done, ==== //depot/projects/tcp_reass/kern/uipc_domain.c#7 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/uipc_domain.c,v 1.59 2009/07/14 22:48:30 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/uipc_domain.c,v 1.60 2009/07/23 20:46:49 rwatson Exp $"); #include #include @@ -59,17 +59,12 @@ */ static void domaininit(void *); -SYSINIT(domain, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST, domaininit, NULL); +SYSINIT(domain, SI_SUB_PROTO_DOMAININIT, SI_ORDER_ANY, domaininit, NULL); static void domainfinalize(void *); SYSINIT(domainfin, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_FIRST, domainfinalize, NULL); -static vnet_attach_fn net_init_domain; -#ifdef VIMAGE -static vnet_detach_fn net_detach_domain; -#endif - static struct callout pffast_callout; static struct callout pfslow_callout; @@ -106,15 +101,6 @@ .pru_sopoll = pru_sopoll_notsupp, }; -#ifdef VIMAGE -vnet_modinfo_t vnet_domain_modinfo = { - .vmi_id = VNET_MOD_DOMAIN, - .vmi_name = "domain", - .vmi_iattach = net_init_domain, - .vmi_idetach = net_detach_domain, -}; -#endif - static void protosw_init(struct protosw *pr) { @@ -174,10 +160,10 @@ * Note: you cant unload it again because a socket may be using it. * XXX can't fail at this time. */ -static int -net_init_domain(const void *arg) +void +domain_init(void *arg) { - const struct domain *dp = arg; + struct domain *dp = arg; struct protosw *pr; if (dp->dom_init) @@ -191,17 +177,21 @@ max_datalen = MHLEN - max_hdr; if (max_datalen < 1) panic("%s: max_datalen < 1", __func__); - return (0); } #ifdef VIMAGE -/* - * Detach / free a domain instance. - */ -static int -net_detach_domain(const void *arg) +void +vnet_domain_init(void *arg) +{ + + /* Virtualized case is no different -- call init functions. */ + domain_init(arg); +} + +void +vnet_domain_uninit(void *arg) { - const struct domain *dp = arg; + struct domain *dp = arg; struct protosw *pr; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jul 25 14:19:47 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 434C71065675; Sat, 25 Jul 2009 14:19:47 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC4F11065673 for ; Sat, 25 Jul 2009 14:19:46 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DA67C8FC13 for ; Sat, 25 Jul 2009 14:19:46 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PEJkMs010735 for ; Sat, 25 Jul 2009 14:19:46 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PEJkuY010733 for perforce@freebsd.org; Sat, 25 Jul 2009 14:19:46 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 14:19:46 GMT Message-Id: <200907251419.n6PEJkuY010733@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166555 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 14:19:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=166555 Change 166555 by mav@mav_mavbook on 2009/07/25 14:19:15 Teach siis driver to report device async notifications. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/siis/siis.c#2 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/siis/siis.c#2 (text+ko) ==== @@ -647,6 +647,30 @@ } static void +siis_notify_events(device_t dev) +{ + struct siis_channel *ch = device_get_softc(dev); + struct cam_path *dpath; + u_int32_t status; + int i; + + status = ATA_INL(ch->r_mem, SIIS_P_SNTF); + ATA_OUTL(ch->r_mem, SIIS_P_SNTF, status); + if (bootverbose) + device_printf(dev, "SNTF 0x%04x\n", status); + for (i = 0; i < 16; i++) { + if ((status & (1 << i)) == 0) + continue; + if (xpt_create_path(&dpath, NULL, + xpt_path_path_id(ch->path), i, 0) == CAM_REQ_CMP) { + xpt_async(AC_SCSI_AEN, dpath, NULL); + xpt_free_path(dpath); + } + } + +} + +static void siis_phy_check_events(device_t dev) { struct siis_channel *ch = device_get_softc(dev); @@ -707,6 +731,9 @@ /* Process PHY events */ if (istatus & SIIS_P_IX_PHYRDYCHG) siis_phy_check_events(dev); + /* Process NOTIFY events */ + if (istatus & SIIS_P_IX_SDBN) + siis_notify_events(dev); /* Process command errors */ if (istatus & SIIS_P_IX_COMMERR) { estatus = ATA_INL(ch->r_mem, SIIS_P_CMDERR); From owner-p4-projects@FreeBSD.ORG Sat Jul 25 15:05:38 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 55B2F1065673; Sat, 25 Jul 2009 15:05:38 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D28C6106566B for ; Sat, 25 Jul 2009 15:05:37 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A6D078FC20 for ; Sat, 25 Jul 2009 15:05:37 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PF5bXW015083 for ; Sat, 25 Jul 2009 15:05:37 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PF5bof015081 for perforce@freebsd.org; Sat, 25 Jul 2009 15:05:37 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 15:05:37 GMT Message-Id: <200907251505.n6PF5bof015081@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166557 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 15:05:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=166557 Change 166557 by mav@mav_mavbook on 2009/07/25 15:04:48 Add PMP async notification support for doing automatic PMP rescan on device hot-plug. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#3 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#3 (text+ko) ==== @@ -63,6 +63,7 @@ typedef enum { PMP_STATE_NORMAL, PMP_STATE_PORTS, + PMP_STATE_CONFIG, PMP_STATE_RESET, PMP_STATE_CONNECT, PMP_STATE_CHECK, @@ -265,13 +266,15 @@ "due to status 0x%x\n", status); break; } + case AC_SCSI_AEN: case AC_SENT_BDR: case AC_BUS_RESET: softc = (struct pmp_softc *)periph->softc; cam_periph_async(periph, code, path, arg); - softc->found = 0; /* We have to reset everything. */ - case AC_SCSI_AEN: - softc = (struct pmp_softc *)periph->softc; + if (code == AC_SENT_BDR || code == AC_BUS_RESET) + softc->found = 0; /* We have to reset everything. */ + else if (softc->state != PMP_STATE_NORMAL) + break; softc->state = PMP_STATE_PORTS; xpt_schedule(periph, CAM_PRIORITY_BUS); break; @@ -413,6 +416,17 @@ 10 * 1000); ata_pm_read_cmd(ataio, 2, 15); break; + case PMP_STATE_CONFIG: + cam_fill_ataio(ataio, + 1, + pmpdone, + /*flags*/CAM_DIR_NONE, + 0, + /*data_ptr*/NULL, + /*dxfer_len*/0, + 10 * 1000); + ata_pm_write_cmd(ataio, 0x60, 15, 0xf); + break; case PMP_STATE_RESET: cam_fill_ataio(ataio, 1, @@ -503,6 +517,24 @@ if (softc->pm_pid == 0x47261095 && softc->pm_ports == 7) softc->pm_ports = 5; printf("PM ports: %d\n", softc->pm_ports); + softc->state = PMP_STATE_CONFIG; + xpt_release_ccb(done_ccb); + xpt_schedule(periph, priority); + return; + } else if (cam_periph_error(done_ccb, 0, 0, + &softc->saved_ccb) == ERESTART) { + return; + } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { + cam_release_devq(done_ccb->ccb_h.path, + /*relsim_flags*/0, + /*reduction*/0, + /*timeout*/0, + /*getcount_only*/0); + } + xpt_release_ccb(done_ccb); + break; + case PMP_STATE_CONFIG: + if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { softc->pm_step = 0; softc->state = PMP_STATE_RESET; xpt_release_ccb(done_ccb); @@ -686,10 +718,11 @@ work_ccb->ccb_h.ppriv_ptr0 = done_ccb; work_ccb->crcn.flags = done_ccb->crcn.flags; xpt_action(work_ccb); - break; + return; default: break; } + softc->state = PMP_STATE_NORMAL; } #endif /* _KERNEL */ From owner-p4-projects@FreeBSD.ORG Sat Jul 25 16:04:43 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B57E31065674; Sat, 25 Jul 2009 16:04:42 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75AEC106566C for ; Sat, 25 Jul 2009 16:04:42 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 635778FC12 for ; Sat, 25 Jul 2009 16:04:42 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PG4gRM020172 for ; Sat, 25 Jul 2009 16:04:42 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PG4gAl020170 for perforce@freebsd.org; Sat, 25 Jul 2009 16:04:42 GMT (envelope-from hselasky@FreeBSD.org) Date: Sat, 25 Jul 2009 16:04:42 GMT Message-Id: <200907251604.n6PG4gAl020170@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 166559 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 16:04:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=166559 Change 166559 by hselasky@hselasky_laptop001 on 2009/07/25 16:04:38 USB CORE - compat Linux: - Patch request from Tim Borgeaud: - add automatic locking - add refcount for killing URB's Affected files ... .. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#45 edit .. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.h#21 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#45 (text+ko) ==== @@ -398,15 +398,32 @@ usb_submit_urb(struct urb *urb, uint16_t mem_flags) { struct usb_host_endpoint *uhe; + uint8_t do_unlock; + int err; - if (urb == NULL) { + if (urb == NULL) return (-EINVAL); + + do_unlock = mtx_owned(&Giant) ? 0 : 1; + if (do_unlock) + mtx_lock(&Giant); + + if (urb->endpoint == NULL) { + err = -EINVAL; + goto done; } - mtx_assert(&Giant, MA_OWNED); - if (urb->endpoint == NULL) { - return (-EINVAL); + /* + * Check to see if the urb is in the process of being killed + * and stop a urb that is in the process of being killed from + * being re-submitted (e.g. from its completion callback + * function). + */ + if (urb->kill_count != 0) { + err = -EPERM; + goto done; } + uhe = urb->endpoint; /* @@ -424,12 +441,16 @@ usbd_transfer_start(uhe->bsd_xfer[0]); usbd_transfer_start(uhe->bsd_xfer[1]); + err = 0; } else { /* no pipes have been setup yet! */ urb->status = -EINVAL; - return (-EINVAL); + err = -EINVAL; } - return (0); +done: + if (do_unlock) + mtx_unlock(&Giant); + return (err); } /*------------------------------------------------------------------------* @@ -448,9 +469,11 @@ usb_unlink_bsd(struct usb_xfer *xfer, struct urb *urb, uint8_t drain) { - if (xfer && - usbd_transfer_pending(xfer) && - (xfer->priv_fifo == (void *)urb)) { + if (xfer == NULL) + return; + if (!usbd_transfer_pending(xfer)) + return; + if (xfer->priv_fifo == (void *)urb) { if (drain) { mtx_unlock(&Giant); usbd_transfer_drain(xfer); @@ -467,14 +490,21 @@ { struct usb_host_endpoint *uhe; uint16_t x; + uint8_t do_unlock; + int err; - if (urb == NULL) { + if (urb == NULL) return (-EINVAL); - } - mtx_assert(&Giant, MA_OWNED); + + do_unlock = mtx_owned(&Giant) ? 0 : 1; + if (do_unlock) + mtx_lock(&Giant); + if (drain) + urb->kill_count++; if (urb->endpoint == NULL) { - return (-EINVAL); + err = -EINVAL; + goto done; } uhe = urb->endpoint; @@ -504,7 +534,13 @@ usb_unlink_bsd(uhe->bsd_xfer[0], urb, drain); usb_unlink_bsd(uhe->bsd_xfer[1], urb, drain); } - return (0); + err = 0; +done: + if (drain) + urb->kill_count--; + if (do_unlock) + mtx_unlock(&Giant); + return (err); } /*------------------------------------------------------------------------* @@ -555,6 +591,7 @@ usb_start_wait_urb(struct urb *urb, usb_timeout_t timeout, uint16_t *p_actlen) { int err; + uint8_t do_unlock; /* you must have a timeout! */ if (timeout == 0) { @@ -565,6 +602,9 @@ urb->transfer_flags |= URB_WAIT_WAKEUP; urb->transfer_flags &= ~URB_IS_SLEEPING; + do_unlock = mtx_owned(&Giant) ? 0 : 1; + if (do_unlock) + mtx_lock(&Giant); err = usb_submit_urb(urb, 0); if (err) goto done; @@ -582,6 +622,8 @@ err = urb->status; done: + if (do_unlock) + mtx_unlock(&Giant); if (err) { *p_actlen = 0; } else { @@ -638,7 +680,7 @@ * transfers on control endpoint zero: */ err = usbd_do_request_flags(dev, - &Giant, &req, data, USB_SHORT_XFER_OK, + NULL, &req, data, USB_SHORT_XFER_OK, &actlen, timeout); if (err) { err = -EPIPE; @@ -1216,9 +1258,7 @@ void usb_kill_urb(struct urb *urb) { - if (usb_unlink_urb_sub(urb, 1)) { - /* ignore */ - } + usb_unlink_urb_sub(urb, 1); } /*------------------------------------------------------------------------* ==== //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.h#21 (text+ko) ==== @@ -262,6 +262,7 @@ uint8_t setup_dma; /* (in) not used on FreeBSD */ uint8_t transfer_dma; /* (in) not used on FreeBSD */ uint8_t bsd_isread; + uint8_t kill_count; /* FreeBSD specific */ struct usb_iso_packet_descriptor iso_frame_desc[]; /* (in) ISO ONLY */ }; From owner-p4-projects@FreeBSD.ORG Sat Jul 25 17:18:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 672971065675; Sat, 25 Jul 2009 17:18:03 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 263AB1065673 for ; Sat, 25 Jul 2009 17:18:03 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 11F1C8FC08 for ; Sat, 25 Jul 2009 17:18:03 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PHI3q3036415 for ; Sat, 25 Jul 2009 17:18:03 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PHI29Y036413 for perforce@freebsd.org; Sat, 25 Jul 2009 17:18:02 GMT (envelope-from trasz@freebsd.org) Date: Sat, 25 Jul 2009 17:18:02 GMT Message-Id: <200907251718.n6PHI29Y036413@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 166560 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 17:18:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=166560 Change 166560 by trasz@trasz_victim on 2009/07/25 17:17:13 IFC. Affected files ... .. //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#32 integrate .. //depot/projects/soc2008/trasz_nfs4acl/UPDATING#37 integrate .. //depot/projects/soc2008/trasz_nfs4acl/bin/ln/ln.1#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/bin/ln/ln.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/bin/ps/ps.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/libctf/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/libdtrace/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/contrib/gcc/dwarf2out.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/pam.d/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/etc/pam.d/gdm#2 delete .. //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libdialog/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libg2c/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libobjc/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libreadline/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libregex/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/include/dlfcn.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libalias/libalias/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libarchive/Makefile#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libautofs/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libbegemot/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libbluetooth/Makefile#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libbsm/Makefile#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libbsnmp/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libbz2/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/gen/dlopen.3#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/gen/pw_scan.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libc/sys/link.2#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libcrypt/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libdevstat/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libdwarf/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libdwarf/dwarf_loc.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libedit/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libexpat/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libfetch/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libftpio/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libgpib/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libipsec/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libjail/jail.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libjail/jail.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkiconv/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkse/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkvm/Makefile#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkvm/kvm.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkvm/kvm_private.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkvm/kvm_proc.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libkvm/kvm_vnet.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/lib/libmagic/Makefile#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libmemstat/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libncp/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libnetgraph/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libngatm/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libopie/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libpam/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libpcap/Makefile#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libproc/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libradius/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libsdp/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libsmb/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libtacplus/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libugidfw/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusb/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libusbhid/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libutil/Makefile#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libvgl/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libwrap/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/libypclnt/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/lib/ncurses/ncurses/Makefile#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/libexec/rtld-elf/rtld.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/dhclient/dispatch.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sbin/ifconfig/ifieee80211.c#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/secure/lib/libcrypto/Makefile#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/secure/lib/libssh/Makefile#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/secure/lib/libssl/Makefile#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/Makefile#24 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/mxge.4#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/share/man/man4/siis.4#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/share/misc/committers-ports.dot#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/initcpu.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/amd64/pmap.c#19 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/include/cpufunc.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/amd64/include/md_var.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/busdma_machdep.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/cpufunc.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/pmap.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/arm/arm/vm_machdep.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cam/ata/ata_da.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#30 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/compat/linux/linux_mib.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/conf/files#46 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/if_ath.c#24 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ath/if_athvar.h#19 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ciss/ciss.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/e1000/e1000_ich8lan.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/e1000/if_em.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/e1000/if_igb.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/if_ndis/if_ndis.c#20 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/ixgbe/ixgbe.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/mxge/if_mxge.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/pci/pci.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/siis/siis.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/siis/siis.h#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/dev/uart/uart_cpu_powerpc.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfs/nfsport.h#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfsclient/nfs_clbio.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfsclient/nfs_clrpcops.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfsclient/nfs_clstate.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfsclient/nfs_clvfsops.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/nfsclient/nfs_clvnops.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/fs/procfs/procfs_map.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/geom/vinum/geom_vinum.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/i386/pmap.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/i386/xen/pmap.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/ia64/ia64/pmap.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_jail.c#23 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_linker.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_proc.c#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_sysctl.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/kern_vimage.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/link_elf_obj.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/uipc_domain.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/uipc_socket.c#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/kern/vfs_bio.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/mips/mips/pmap.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/Makefile#29 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/siis/Makefile#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/modules/wlan/Makefile#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/flowtable.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if.c#27 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_clone.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_clone.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_gif.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/if_loop.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/route.c#18 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/rtsock.c#20 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/vnet.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net/vnet.h#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211.c#19 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_crypto.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_crypto.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_freebsd.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_input.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_input.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_ioctl.h#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/net80211/ieee80211_output.c#20 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/bluetooth/socket/ng_btsocket.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/netgraph.h#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_base.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_eiface.c#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_ether.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_gif.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_iface.c#13 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netgraph/ng_socket.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/igmp.c#16 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/in_pcb.c#24 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/in_proto.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/in_rmx.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ip_input.c#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/ipfw/ip_fw2.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/tcp_subr.c#24 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet/tcp_timer.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/frag6.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_mcast.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/in6_proto.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/ip6_input.c#20 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netinet6/mld6.c#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/ipsec.c#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/key.c#17 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/keysock.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/xform_ipcomp.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/netipsec/xform_ipip.c#12 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/powerpc/booke/pmap.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/powerpc/mpc85xx/lbc.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sparc64/include/param.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sparc64/sparc64/pmap.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/domain.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/jail.h#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/kernel.h#10 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/param.h#34 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/sysctl.h#15 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/user.h#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/sys/vimage.h#16 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/device_pager.c#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/sg_pager.c#1 branch .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm.h#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_fault.c#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_map.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_meter.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_object.c#14 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_object.h#6 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_page.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_pageout.c#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_pager.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/vm/vm_pager.h#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/sys/xen/evtchn/evtchn.c#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/stumbler/stumbler.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/README#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/ap/ap.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/assoc/assoc.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/expand/expand.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/prga/prga.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/w00t/redir/redir.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/wesside/wesside/wesside.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/wlaninject/wlaninject.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/tools/tools/net80211/wlanstats/wlanstats.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/calendar/calendars/calendar.freebsd#11 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/kdump/mkioctls#8 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/locate/locate/fastfind.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/locate/locate/locate.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/procstat/procstat_cred.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.bin/procstat/procstat_vm.c#5 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/bsnmpd/modules/Makefile.inc#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/jail/jail.8#9 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/jls/jls.c#7 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/ppp/nat_cmd.c#2 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/sysinstall/disks.c#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/sysinstall/help/usage.hlp#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/sysinstall/label.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/sysinstall/user.c#4 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/wlandebug/wlandebug.8#3 integrate .. //depot/projects/soc2008/trasz_nfs4acl/usr.sbin/wlandebug/wlandebug.c#5 integrate Differences ... ==== //depot/projects/soc2008/trasz_nfs4acl/ObsoleteFiles.inc#32 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.201 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.204 2009/07/20 19:51:47 antoine Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,10 +14,225 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090719: library version bump for 8.0 +OLD_LIBS+=lib/libalias.so.6 +OLD_LIBS+=lib/libavl.so.1 +OLD_LIBS+=lib/libbegemot.so.3 +OLD_LIBS+=lib/libbsdxml.so.3 +OLD_LIBS+=lib/libbsnmp.so.4 +OLD_LIBS+=lib/libcam.so.4 +OLD_LIBS+=lib/libcrypt.so.4 +OLD_LIBS+=lib/libcrypto.so.5 +OLD_LIBS+=lib/libctf.so.1 +OLD_LIBS+=lib/libdevstat.so.6 +OLD_LIBS+=lib/libdtrace.so.1 +OLD_LIBS+=lib/libedit.so.6 +OLD_LIBS+=lib/libgeom.so.4 +OLD_LIBS+=lib/libipsec.so.3 +OLD_LIBS+=lib/libipx.so.4 +OLD_LIBS+=lib/libkiconv.so.3 +OLD_LIBS+=lib/libkvm.so.4 +OLD_LIBS+=lib/libmd.so.4 +OLD_LIBS+=lib/libncurses.so.7 +OLD_LIBS+=lib/libncursesw.so.7 +OLD_LIBS+=lib/libnvpair.so.1 +OLD_LIBS+=lib/libpcap.so.6 +OLD_LIBS+=lib/libreadline.so.7 +OLD_LIBS+=lib/libsbuf.so.4 +OLD_LIBS+=lib/libufs.so.4 +OLD_LIBS+=lib/libumem.so.1 +OLD_LIBS+=lib/libutil.so.7 +OLD_LIBS+=lib/libuutil.so.1 +OLD_LIBS+=lib/libz.so.4 +OLD_LIBS+=lib/libzfs.so.1 +OLD_LIBS+=lib/libzpool.so.1 +OLD_LIBS+=usr/lib/libarchive.so.4 +OLD_LIBS+=usr/lib/libauditd.so.4 +OLD_LIBS+=usr/lib/libbluetooth.so.3 +OLD_LIBS+=usr/lib/libbsm.so.2 +OLD_LIBS+=usr/lib/libbz2.so.3 +OLD_LIBS+=usr/lib/libcalendar.so.4 +OLD_LIBS+=usr/lib/libcom_err.so.4 +OLD_LIBS+=usr/lib/libdevinfo.so.4 +OLD_LIBS+=usr/lib/libdialog.so.6 +OLD_LIBS+=usr/lib/libdwarf.so.1 +OLD_LIBS+=usr/lib/libfetch.so.5 +OLD_LIBS+=usr/lib/libform.so.4 +OLD_LIBS+=usr/lib/libformw.so.4 +OLD_LIBS+=usr/lib/libftpio.so.7 +OLD_LIBS+=usr/lib/libgnuregex.so.4 +OLD_LIBS+=usr/lib/libgpib.so.2 +OLD_LIBS+=usr/lib/libhistory.so.7 +OLD_LIBS+=usr/lib/libmagic.so.3 +OLD_LIBS+=usr/lib/libmemstat.so.2 +OLD_LIBS+=usr/lib/libmenu.so.4 +OLD_LIBS+=usr/lib/libmenuw.so.4 +OLD_LIBS+=usr/lib/libmilter.so.4 +OLD_LIBS+=usr/lib/libncp.so.3 +OLD_LIBS+=usr/lib/libnetgraph.so.3 +OLD_LIBS+=usr/lib/libngatm.so.3 +OLD_LIBS+=usr/lib/libobjc.so.3 +OLD_LIBS+=usr/lib/libopie.so.5 +OLD_LIBS+=usr/lib/libpam.so.4 +OLD_LIBS+=usr/lib/libpanel.so.4 +OLD_LIBS+=usr/lib/libpanelw.so.4 +OLD_LIBS+=usr/lib/libpmc.so.4 +OLD_LIBS+=usr/lib/libproc.so.1 +OLD_LIBS+=usr/lib/libradius.so.3 +OLD_LIBS+=usr/lib/librpcsvc.so.4 +OLD_LIBS+=usr/lib/libsdp.so.3 +OLD_LIBS+=usr/lib/libsmb.so.3 +OLD_LIBS+=usr/lib/libssh.so.4 +OLD_LIBS+=usr/lib/libssl.so.5 +OLD_LIBS+=usr/lib/libtacplus.so.3 +OLD_LIBS+=usr/lib/libugidfw.so.3 +OLD_LIBS+=usr/lib/libusb.so.1 +OLD_LIBS+=usr/lib/libusbhid.so.3 +OLD_LIBS+=usr/lib/libvgl.so.5 +OLD_LIBS+=usr/lib/libwrap.so.5 +OLD_LIBS+=usr/lib/libypclnt.so.3 +OLD_LIBS+=usr/lib/pam_chroot.so.4 +OLD_LIBS+=usr/lib/pam_deny.so.4 +OLD_LIBS+=usr/lib/pam_echo.so.4 +OLD_LIBS+=usr/lib/pam_exec.so.4 +OLD_LIBS+=usr/lib/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib/pam_group.so.4 +OLD_LIBS+=usr/lib/pam_guest.so.4 +OLD_LIBS+=usr/lib/pam_krb5.so.4 +OLD_LIBS+=usr/lib/pam_ksu.so.4 +OLD_LIBS+=usr/lib/pam_lastlog.so.4 +OLD_LIBS+=usr/lib/pam_login_access.so.4 +OLD_LIBS+=usr/lib/pam_nologin.so.4 +OLD_LIBS+=usr/lib/pam_opie.so.4 +OLD_LIBS+=usr/lib/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib/pam_permit.so.4 +OLD_LIBS+=usr/lib/pam_radius.so.4 +OLD_LIBS+=usr/lib/pam_rhosts.so.4 +OLD_LIBS+=usr/lib/pam_rootok.so.4 +OLD_LIBS+=usr/lib/pam_securetty.so.4 +OLD_LIBS+=usr/lib/pam_self.so.4 +OLD_LIBS+=usr/lib/pam_ssh.so.4 +OLD_LIBS+=usr/lib/pam_tacplus.so.4 +OLD_LIBS+=usr/lib/pam_unix.so.4 +OLD_LIBS+=usr/lib/snmp_atm.so.5 +OLD_LIBS+=usr/lib/snmp_bridge.so.5 +OLD_LIBS+=usr/lib/snmp_hostres.so.5 +OLD_LIBS+=usr/lib/snmp_mibII.so.5 +OLD_LIBS+=usr/lib/snmp_netgraph.so.5 +OLD_LIBS+=usr/lib/snmp_pf.so.5 +.if ${TARGET_ARCH} == "amd64" +OLD_LIBS+=usr/lib32/libalias.so.6 +OLD_LIBS+=usr/lib32/libarchive.so.4 +OLD_LIBS+=usr/lib32/libauditd.so.4 +OLD_LIBS+=usr/lib32/libavl.so.1 +OLD_LIBS+=usr/lib32/libbegemot.so.3 +OLD_LIBS+=usr/lib32/libbluetooth.so.3 +OLD_LIBS+=usr/lib32/libbsdxml.so.3 +OLD_LIBS+=usr/lib32/libbsm.so.2 +OLD_LIBS+=usr/lib32/libbsnmp.so.4 +OLD_LIBS+=usr/lib32/libbz2.so.3 +OLD_LIBS+=usr/lib32/libcalendar.so.4 +OLD_LIBS+=usr/lib32/libcam.so.4 +OLD_LIBS+=usr/lib32/libcom_err.so.4 +OLD_LIBS+=usr/lib32/libcrypt.so.4 +OLD_LIBS+=usr/lib32/libcrypto.so.5 +OLD_LIBS+=usr/lib32/libctf.so.1 +OLD_LIBS+=usr/lib32/libdevinfo.so.4 +OLD_LIBS+=usr/lib32/libdevstat.so.6 +OLD_LIBS+=usr/lib32/libdialog.so.6 +OLD_LIBS+=usr/lib32/libdtrace.so.1 +OLD_LIBS+=usr/lib32/libdwarf.so.1 +OLD_LIBS+=usr/lib32/libedit.so.6 +OLD_LIBS+=usr/lib32/libfetch.so.5 +OLD_LIBS+=usr/lib32/libform.so.4 +OLD_LIBS+=usr/lib32/libformw.so.4 +OLD_LIBS+=usr/lib32/libftpio.so.7 +OLD_LIBS+=usr/lib32/libgeom.so.4 +OLD_LIBS+=usr/lib32/libgnuregex.so.4 +OLD_LIBS+=usr/lib32/libgpib.so.2 +OLD_LIBS+=usr/lib32/libhistory.so.7 +OLD_LIBS+=usr/lib32/libipsec.so.3 +OLD_LIBS+=usr/lib32/libipx.so.4 +OLD_LIBS+=usr/lib32/libkiconv.so.3 +OLD_LIBS+=usr/lib32/libkvm.so.4 +OLD_LIBS+=usr/lib32/libmagic.so.3 +OLD_LIBS+=usr/lib32/libmd.so.4 +OLD_LIBS+=usr/lib32/libmemstat.so.2 +OLD_LIBS+=usr/lib32/libmenu.so.4 +OLD_LIBS+=usr/lib32/libmenuw.so.4 +OLD_LIBS+=usr/lib32/libmilter.so.4 +OLD_LIBS+=usr/lib32/libncp.so.3 +OLD_LIBS+=usr/lib32/libncurses.so.7 +OLD_LIBS+=usr/lib32/libncursesw.so.7 +OLD_LIBS+=usr/lib32/libnetgraph.so.3 +OLD_LIBS+=usr/lib32/libngatm.so.3 +OLD_LIBS+=usr/lib32/libnvpair.so.1 +OLD_LIBS+=usr/lib32/libobjc.so.3 +OLD_LIBS+=usr/lib32/libopie.so.5 +OLD_LIBS+=usr/lib32/libpam.so.4 +OLD_LIBS+=usr/lib32/libpanel.so.4 +OLD_LIBS+=usr/lib32/libpanelw.so.4 +OLD_LIBS+=usr/lib32/libpcap.so.6 +OLD_LIBS+=usr/lib32/libpmc.so.4 +OLD_LIBS+=usr/lib32/libproc.so.1 +OLD_LIBS+=usr/lib32/libradius.so.3 +OLD_LIBS+=usr/lib32/libreadline.so.7 +OLD_LIBS+=usr/lib32/librpcsvc.so.4 +OLD_LIBS+=usr/lib32/libsbuf.so.4 +OLD_LIBS+=usr/lib32/libsdp.so.3 +OLD_LIBS+=usr/lib32/libsmb.so.3 +OLD_LIBS+=usr/lib32/libssh.so.4 +OLD_LIBS+=usr/lib32/libssl.so.5 +OLD_LIBS+=usr/lib32/libtacplus.so.3 +OLD_LIBS+=usr/lib32/libufs.so.4 +OLD_LIBS+=usr/lib32/libugidfw.so.3 +OLD_LIBS+=usr/lib32/libumem.so.1 +OLD_LIBS+=usr/lib32/libusb.so.1 +OLD_LIBS+=usr/lib32/libusbhid.so.3 +OLD_LIBS+=usr/lib32/libutil.so.7 +OLD_LIBS+=usr/lib32/libuutil.so.1 +OLD_LIBS+=usr/lib32/libvgl.so.5 +OLD_LIBS+=usr/lib32/libwrap.so.5 +OLD_LIBS+=usr/lib32/libypclnt.so.3 +OLD_LIBS+=usr/lib32/libz.so.4 +OLD_LIBS+=usr/lib32/libzfs.so.1 +OLD_LIBS+=usr/lib32/libzpool.so.1 +OLD_LIBS+=usr/lib32/pam_chroot.so.4 +OLD_LIBS+=usr/lib32/pam_deny.so.4 +OLD_LIBS+=usr/lib32/pam_echo.so.4 +OLD_LIBS+=usr/lib32/pam_exec.so.4 +OLD_LIBS+=usr/lib32/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib32/pam_group.so.4 +OLD_LIBS+=usr/lib32/pam_guest.so.4 +OLD_LIBS+=usr/lib32/pam_krb5.so.4 +OLD_LIBS+=usr/lib32/pam_ksu.so.4 +OLD_LIBS+=usr/lib32/pam_lastlog.so.4 +OLD_LIBS+=usr/lib32/pam_login_access.so.4 +OLD_LIBS+=usr/lib32/pam_nologin.so.4 +OLD_LIBS+=usr/lib32/pam_opie.so.4 +OLD_LIBS+=usr/lib32/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib32/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib32/pam_permit.so.4 +OLD_LIBS+=usr/lib32/pam_radius.so.4 +OLD_LIBS+=usr/lib32/pam_rhosts.so.4 +OLD_LIBS+=usr/lib32/pam_rootok.so.4 +OLD_LIBS+=usr/lib32/pam_securetty.so.4 +OLD_LIBS+=usr/lib32/pam_self.so.4 +OLD_LIBS+=usr/lib32/pam_ssh.so.4 +OLD_LIBS+=usr/lib32/pam_tacplus.so.4 +OLD_LIBS+=usr/lib32/pam_unix.so.4 +.endif +# 20090718: the gdm pam.d file is no longer required. +OLD_FILES+=etc/pam.d/gdm # 20090713: vimage container structs removed. OLD_FILES+=usr/include/netinet/vinet.h OLD_FILES+=usr/include/netinet6/vinet6.h OLD_FILES+=usr/include/netipsec/vipsec.h +# 20090712: ieee80211.4 -> net80211.4 +OLD_FILES+=usr/share/man/man4/ieee80211.4.gz +# 20090711: typo fixed, kproc_resume,.9 -> kproc_resume.9 +OLD_FILES+=usr/share/man/man9/kproc_resume,.9.gz # 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved OLD_FILES+=usr/share/man/man3/msgctl.3.gz OLD_FILES+=usr/share/man/man3/msgget.3.gz @@ -272,8 +487,6 @@ OLD_FILES+=usr/include/dev/usb/usb_port.h OLD_FILES+=usr/include/dev/usb/usb_quirks.h OLD_FILES+=usr/include/dev/usb/usbcdc.h -OLD_FILES+=usr/include/dev/usb/usbdi.h -OLD_FILES+=usr/include/dev/usb/usbdi_util.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h # 20090203: removal of pccard header files @@ -1861,7 +2074,6 @@ OLD_FILES+=usr/bin/kenv OLD_FILES+=usr/sbin/elf2aout # 200210XX -OLD_FILES+=usr/include/libusb.h OLD_FILES+=usr/include/libusbhid.h OLD_FILES+=usr/share/man/man3/All_FreeBSD.3.gz OLD_FILES+=usr/share/man/man3/CheckRules.3.gz ==== //depot/projects/soc2008/trasz_nfs4acl/UPDATING#37 (text+ko) ==== @@ -22,6 +22,11 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090719: + Bump the shared library version numbers for all libraries that + do not use symbol versioning as part of the 8.0-RELEASE cycle. + Bump __FreeBSD_version to 800105. + 20090714: Due to changes in the implementation of virtual network stack support, all network-related kernel modules must be recompiled. @@ -1660,4 +1665,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.630 2009/07/14 22:48:30 rwatson Exp $ +$FreeBSD: src/UPDATING,v 1.631 2009/07/19 17:25:24 kensmith Exp $ ==== //depot/projects/soc2008/trasz_nfs4acl/bin/ln/ln.1#4 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)ln.1 8.2 (Berkeley) 12/30/93 -.\" $FreeBSD: src/bin/ln/ln.1,v 1.34 2009/01/13 15:24:35 trhodes Exp $ +.\" $FreeBSD: src/bin/ln/ln.1,v 1.35 2009/07/19 17:35:23 jilles Exp $ .\" -.Dd June 6, 2008 +.Dd July 17, 2009 .Dt LN 1 .Os .Sh NAME @@ -41,13 +41,13 @@ .Nd link files .Sh SYNOPSIS .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file .Op Ar target_file .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file ... @@ -77,16 +77,6 @@ .Pp The options are as follows: .Bl -tag -width flag -.It Fl f -If the target file already exists, -then unlink it so that the link may occur. -(The -.Fl f -option overrides any previous -.Fl i -and -.Fl w -options.) .It Fl F If the target file already exists and is a directory, then remove it so that the link may occur. @@ -105,6 +95,29 @@ option is a no-op unless .Fl s option is specified. +.It Fl L +When creating a hard link to a symbolic link, +create a hard link to the target of the symbolic link. +This is the default. +This option cancels the +.Fl P +option. +.It Fl P +When creating a hard link to a symbolic link, +create a hard link to the symbolic link itself. +This option cancels the +.Fl L +option. +.It Fl f +If the target file already exists, +then unlink it so that the link may occur. +(The +.Fl f +option overrides any previous +.Fl i +and +.Fl w +options.) .It Fl h If the .Ar target_file ==== //depot/projects/soc2008/trasz_nfs4acl/bin/ln/ln.c#3 (text+ko) ==== @@ -39,13 +39,14 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.38 2008/06/07 09:37:30 keramida Exp $"); +__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.39 2009/07/19 17:35:23 jilles Exp $"); #include #include #include #include +#include #include #include #include @@ -56,12 +57,11 @@ int Fflag; /* Remove empty directories also. */ int hflag; /* Check new name for symlink first. */ int iflag; /* Interactive mode. */ +int Pflag; /* Create hard links to symlinks. */ int sflag; /* Symbolic, not hard, link. */ int vflag; /* Verbose output. */ int wflag; /* Warn if symlink target does not * exist, and -f is not enabled. */ - /* System link call. */ -int (*linkf)(const char *, const char *); char linkch; int linkit(const char *, const char *, int); @@ -90,15 +90,20 @@ argv += optind; if (argc != 2) usage(); - linkf = link; exit(linkit(argv[0], argv[1], 0)); } - while ((ch = getopt(argc, argv, "Ffhinsvw")) != -1) + while ((ch = getopt(argc, argv, "FLPfhinsvw")) != -1) switch (ch) { case 'F': Fflag = 1; break; + case 'L': + Pflag = 0; + break; + case 'P': + Pflag = 1; + break; case 'f': fflag = 1; iflag = 0; @@ -129,7 +134,6 @@ argv += optind; argc -= optind; - linkf = sflag ? symlink : link; linkch = sflag ? '-' : '='; if (sflag == 0) Fflag = 0; @@ -179,7 +183,7 @@ if (!sflag) { /* If source doesn't exist, quit now. */ - if (stat(source, &sb)) { + if ((Pflag ? lstat : stat)(source, &sb)) { warn("%s", source); return (1); } @@ -276,7 +280,9 @@ } /* Attempt the link. */ - if ((*linkf)(source, target)) { + if (sflag ? symlink(source, target) : + linkat(AT_FDCWD, source, AT_FDCWD, target, + Pflag ? 0 : AT_SYMLINK_FOLLOW)) { warn("%s", target); return (1); } @@ -289,8 +295,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n%s\n", - "usage: ln [-s [-F]] [-f | -i] [-hnv] source_file [target_file]", - " ln [-s [-F]] [-f | -i] [-hnv] source_file ... target_dir", + "usage: ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file [target_file]", + " ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file ... target_dir", " link source_file target_file"); exit(1); } ==== //depot/projects/soc2008/trasz_nfs4acl/bin/ps/ps.c#4 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.116 2009/05/18 01:45:52 brian Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.117 2009/07/23 10:20:12 brian Exp $"); #include #include @@ -1331,7 +1331,7 @@ static void usage(void) { -#define SINGLE_OPTS "[-aCce" OPT_LAZY_f "HhjlmrSTuvwXxZ]" +#define SINGLE_OPTS "[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]" (void)fprintf(stderr, "%s\n%s\n%s\n%s\n", "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]", ==== //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.2 2007/04/16 21:20:24 ru Exp $ +# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.3 2009/07/19 17:25:24 kensmith Exp $ SHLIBDIR?= /lib -SHLIB_MAJOR?= 1 +SHLIB_MAJOR?= 2 .include "../Makefile.inc" ==== //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/libctf/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= ctf -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 SRCS= ctf_create.c \ ctf_decl.c \ ==== //depot/projects/soc2008/trasz_nfs4acl/cddl/lib/libdtrace/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= dtrace -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 WARNS= 1 ==== //depot/projects/soc2008/trasz_nfs4acl/contrib/gcc/dwarf2out.c#2 (text+ko) ==== @@ -10007,7 +10007,7 @@ return NULL_TREE; else if (!cgraph_global_info_ready && (TREE_CODE (*tp) == VAR_DECL || TREE_CODE (*tp) == FUNCTION_DECL)) - gcc_unreachable (); + return *tp; else if (DECL_P (*tp) && TREE_CODE (*tp) == VAR_DECL) { struct cgraph_varpool_node *node = cgraph_varpool_node (*tp); ==== //depot/projects/soc2008/trasz_nfs4acl/etc/pam.d/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/pam.d/Makefile,v 1.16 2007/06/17 17:25:52 yar Exp $ +# $FreeBSD: src/etc/pam.d/Makefile,v 1.17 2009/07/18 16:29:40 marcus Exp $ NO_OBJ= @@ -6,7 +6,6 @@ atrun \ cron \ ftpd \ - gdm \ imap \ kde \ login \ ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libdialog/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # Makefile for libdialog -# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.45 2007/06/18 18:47:52 rafan Exp $ +# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.46 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ INCS= dialog.h MAN= dialog.3 -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 SRCS= kernel.c rc.c checklist.c inputbox.c menubox.c msgbox.c \ lineedit.c radiolist.c textbox.c yesno.c prgbox.c raw_popen.c \ fselect.c ui_objects.c dir.c notify.c help.c gauge.c tree.c ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libg2c/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.17 2006/03/18 21:37:03 ru Exp $ +# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.18 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ .PATH: ${SRCDIR} ${SRCDIR}/libU77 ${SRCDIR}/libF77 ${SRCDIR}/libI77 LIB= g2c -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 # Traditional FORTRAN Library members defined in libF77 ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libobjc/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.33 2007/11/20 04:20:31 kensmith Exp $ +# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ OBJCDIR=${.CURDIR}/../../../contrib/libobjc GCCDIR= ${.CURDIR}/../../../contrib/gcc @@ -7,7 +7,7 @@ .PATH: ${OBJCDIR}/objc ${OBJCDIR} LIB= objc -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= archive.c class.c encoding.c gc.c hash.c init.c linking.m misc.c \ nil_method.c NXConstStr.m Object.m objects.c Protocol.m sarray.c \ ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libreadline/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.15 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.16 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR=7 +SHLIB_MAJOR=8 RL_LIBRARY_VERSION=5.2 SRCDIR= ${.CURDIR}/../../../../contrib/libreadline ==== //depot/projects/soc2008/trasz_nfs4acl/gnu/lib/libregex/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.33 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ SUBDIR= doc LIB= gnuregex -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 SRCS= gnuregex.c INCSGROUPS= INCS WRINCS PXINCS ==== //depot/projects/soc2008/trasz_nfs4acl/include/dlfcn.h#3 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/include/dlfcn.h,v 1.21 2009/03/30 08:47:28 kib Exp $ + * $FreeBSD: src/include/dlfcn.h,v 1.22 2009/07/17 19:45:42 kib Exp $ */ #ifndef _DLFCN_H_ @@ -48,6 +48,7 @@ #define RTLD_LOCAL 0 /* Opposite of RTLD_GLOBAL, and the default. */ #define RTLD_TRACE 0x200 /* Trace loaded objects and exit. */ #define RTLD_NODELETE 0x01000 /* Do not remove members. */ +#define RTLD_NOLOAD 0x02000 /* Do not load if not already loaded. */ /* * Request arguments for dlinfo(). ==== //depot/projects/soc2008/trasz_nfs4acl/lib/Makefile.inc#2 (text+ko) ==== @@ -1,3 +1,3 @@ -# $FreeBSD: src/lib/Makefile.inc,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/Makefile.inc,v 1.5 2009/07/19 17:25:24 kensmith Exp $ # Default version for system libs (override in /Makefile if necessary) -SHLIB_MAJOR?= 4 +SHLIB_MAJOR?= 5 ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libalias/libalias/Makefile#2 (text+ko) ==== @@ -1,10 +1,10 @@ -# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.5 2008/03/12 11:58:28 piso Exp $ +# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ .PATH: ${.CURDIR}/../../../sys/netinet/libalias LIB= alias SHLIBDIR?= /lib -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 MAN= libalias.3 SRCS= alias.c alias_db.c alias_proxy.c alias_util.c alias_mod.c INCS= alias.h ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libarchive/Makefile#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/Makefile,v 1.97 2009/05/30 17:26:55 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/Makefile,v 1.98 2009/07/19 17:25:24 kensmith Exp $ .include LIB= archive @@ -7,7 +7,7 @@ # FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system. # It has no real relation to the libarchive version number. -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I${.OBJDIR} ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libautofs/Makefile#2 (text+ko) ==== @@ -1,8 +1,8 @@ # $Id: Makefile,v 1.5 2004/09/08 08:12:21 bright Exp $ -# $FreeBSD: src/lib/libautofs/Makefile,v 1.5 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libautofs/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ LIB= autofs -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 WARNS?= 4 SRCS= libautofs.c ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libbegemot/Makefile#2 (text+ko) ==== @@ -1,11 +1,11 @@ -# $FreeBSD: src/lib/libbegemot/Makefile,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libbegemot/Makefile,v 1.5 2009/07/19 17:25:24 kensmith Exp $ LIBBEGEMOT_DIR=${.CURDIR}/../../contrib/libbegemot .PATH: ${LIBBEGEMOT_DIR} LIB= begemot -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SHLIBDIR?= /lib # WARNS?= 6 ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libbluetooth/Makefile#5 (text+ko) ==== @@ -1,5 +1,5 @@ # $Id: Makefile,v 1.5 2003/07/22 18:38:04 max Exp $ -# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.6 2009/04/22 15:50:03 emax Exp $ +# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.7 2009/07/19 17:25:24 kensmith Exp $ LIB= bluetooth MAN= bluetooth.3 @@ -7,7 +7,7 @@ WARNS?= 2 CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../../sys -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= bluetooth.c dev.c hci.c INCS= bluetooth.h ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libbsm/Makefile#5 (text+ko) ==== @@ -1,12 +1,12 @@ # -# $FreeBSD: src/lib/libbsm/Makefile,v 1.11 2009/04/19 16:17:13 rwatson Exp $ +# $FreeBSD: src/lib/libbsm/Makefile,v 1.12 2009/07/19 17:25:24 kensmith Exp $ # OPENBSMDIR= ${.CURDIR}/../../contrib/openbsm LIBBSMDIR= ${OPENBSMDIR}/libbsm LIB= bsm -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 .PATH: ${LIBBSMDIR} .PATH: ${OPENBSMDIR}/bsm ==== //depot/projects/soc2008/trasz_nfs4acl/lib/libbsnmp/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.7 2007/06/18 18:47:54 rafan Exp $ +# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.8 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 WARNS?= 6 NO_WERROR= INCSDIR= ${INCLUDEDIR}/bsnmp >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jul 25 17:19:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2F8F51065679; Sat, 25 Jul 2009 17:19:05 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF105106564A for ; Sat, 25 Jul 2009 17:19:04 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CA8A68FC1B for ; Sat, 25 Jul 2009 17:19:04 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PHJ4OG036484 for ; Sat, 25 Jul 2009 17:19:04 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PHJ45X036482 for perforce@freebsd.org; Sat, 25 Jul 2009 17:19:04 GMT (envelope-from trasz@freebsd.org) Date: Sat, 25 Jul 2009 17:19:04 GMT Message-Id: <200907251719.n6PHJ45X036482@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 166561 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 17:19:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=166561 Change 166561 by trasz@trasz_victim on 2009/07/25 17:18:20 IFC. Affected files ... .. //depot/projects/soc2009/trasz_limits/ObsoleteFiles.inc#10 integrate .. //depot/projects/soc2009/trasz_limits/UPDATING#10 integrate .. //depot/projects/soc2009/trasz_limits/bin/ln/ln.1#2 integrate .. //depot/projects/soc2009/trasz_limits/bin/ln/ln.c#2 integrate .. //depot/projects/soc2009/trasz_limits/bin/ps/ps.c#4 integrate .. //depot/projects/soc2009/trasz_limits/cddl/lib/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/cddl/lib/libctf/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/cddl/lib/libdtrace/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/contrib/gcc/dwarf2out.c#2 integrate .. //depot/projects/soc2009/trasz_limits/etc/pam.d/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/etc/pam.d/gdm#2 delete .. //depot/projects/soc2009/trasz_limits/gnu/lib/libdialog/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/gnu/lib/libg2c/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/gnu/lib/libobjc/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/gnu/lib/libreadline/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/gnu/lib/libregex/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/include/dlfcn.h#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libalias/libalias/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libarchive/Makefile#3 integrate .. //depot/projects/soc2009/trasz_limits/lib/libautofs/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libbegemot/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libbluetooth/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libbsm/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libbsnmp/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libbz2/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/gen/dlopen.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/gen/pw_scan.c#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/sys/link.2#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libcrypt/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libdevstat/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libdwarf/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libdwarf/dwarf_loc.c#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libedit/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libexpat/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libfetch/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libftpio/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libgpib/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libipsec/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libjail/jail.c#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libjail/jail.h#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkiconv/Makefile#3 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkse/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm.c#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm_private.h#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm_proc.c#3 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm_vnet.c#1 branch .. //depot/projects/soc2009/trasz_limits/lib/libmagic/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libmemstat/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libncp/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libnetgraph/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libngatm/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libopie/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libpam/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libpcap/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libproc/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libradius/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libsdp/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libsmb/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libtacplus/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libugidfw/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libusb/Makefile#3 integrate .. //depot/projects/soc2009/trasz_limits/lib/libusbhid/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libutil/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libvgl/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libwrap/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libypclnt/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/ncurses/ncurses/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/libexec/rtld-elf/rtld.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sbin/dhclient/dispatch.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sbin/ifconfig/ifieee80211.c#5 integrate .. //depot/projects/soc2009/trasz_limits/secure/lib/libcrypto/Makefile#4 integrate .. //depot/projects/soc2009/trasz_limits/secure/lib/libssh/Makefile#4 integrate .. //depot/projects/soc2009/trasz_limits/secure/lib/libssl/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man4/Makefile#8 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man4/mxge.4#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man4/siis.4#1 branch .. //depot/projects/soc2009/trasz_limits/share/misc/committers-ports.dot#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/initcpu.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/pmap.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/cpufunc.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/md_var.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/arm/arm/cpufunc.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/arm/arm/pmap.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/arm/arm/vm_machdep.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/cam/ata/ata_da.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_mib.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/conf/files#12 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/ath/if_ath.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/ath/if_athvar.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/ciss/ciss.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/e1000_ich8lan.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/if_em.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/e1000/if_igb.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/if_ndis/if_ndis.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/ixgbe/ixgbe.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/mxge/if_mxge.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/pci/pci.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/siis/siis.c#1 branch .. //depot/projects/soc2009/trasz_limits/sys/dev/siis/siis.h#1 branch .. //depot/projects/soc2009/trasz_limits/sys/dev/uart/uart_cpu_powerpc.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfs/nfsport.h#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clbio.c#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clrpcops.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clstate.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clvfsops.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clvnops.c#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/fs/procfs/procfs_map.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/geom/vinum/geom_vinum.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/i386/pmap.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/xen/pmap.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/ia64/ia64/pmap.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_jail.c#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_linker.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_proc.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_sysctl.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_vimage.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/link_elf_obj.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_domain.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/uipc_socket.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/vfs_bio.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/mips/mips/pmap.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/modules/Makefile#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/modules/siis/Makefile#1 branch .. //depot/projects/soc2009/trasz_limits/sys/modules/wlan/Makefile#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/flowtable.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if.c#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if_clone.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if_clone.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if_gif.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if_loop.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/route.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/rtsock.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/vnet.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/vnet.h#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211.c#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_crypto.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_crypto.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_freebsd.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_input.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_input.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_ioctl.h#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211_output.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/bluetooth/socket/ng_btsocket.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/netgraph.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_base.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_eiface.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_ether.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_gif.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_iface.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netgraph/ng_socket.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/igmp.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/in_pcb.c#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/in_proto.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/in_rmx.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/ip_input.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/ipfw/ip_fw2.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/tcp_subr.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/tcp_timer.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/frag6.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/in6_mcast.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/in6_proto.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/ip6_input.c#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/mld6.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/netipsec/ipsec.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/netipsec/key.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netipsec/keysock.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/netipsec/xform_ipcomp.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/netipsec/xform_ipip.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/powerpc/booke/pmap.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/powerpc/mpc85xx/lbc.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/sparc64/include/param.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/sparc64/sparc64/pmap.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/domain.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/jail.h#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/kernel.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/param.h#11 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/sysctl.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/user.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/vimage.h#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/device_pager.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/sg_pager.c#1 branch .. //depot/projects/soc2009/trasz_limits/sys/vm/vm.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_fault.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_map.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_meter.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_object.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_object.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_page.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pageout.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pager.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pager.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/xen/evtchn/evtchn.c#3 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/stumbler/stumbler.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/README#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/ap/ap.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/assoc/assoc.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/expand/expand.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/prga/prga.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/w00t/redir/redir.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/wesside/wesside/wesside.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/wlaninject/wlaninject.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/tools/net80211/wlanstats/wlanstats.c#3 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/calendar/calendars/calendar.freebsd#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/kdump/mkioctls#4 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/locate/locate/fastfind.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/locate/locate/locate.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/procstat/procstat_cred.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/procstat/procstat_vm.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/bsnmpd/modules/Makefile.inc#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/jail/jail.8#6 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/jls/jls.c#6 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/ppp/nat_cmd.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/disks.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/help/usage.hlp#3 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/label.c#3 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/user.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/wlandebug/wlandebug.8#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/wlandebug/wlandebug.c#2 integrate Differences ... ==== //depot/projects/soc2009/trasz_limits/ObsoleteFiles.inc#10 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/ObsoleteFiles.inc,v 1.201 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/ObsoleteFiles.inc,v 1.204 2009/07/20 19:51:47 antoine Exp $ # # This file lists old files (OLD_FILES), libraries (OLD_LIBS) and # directories (OLD_DIRS) which should get removed at an update. Recently @@ -14,10 +14,225 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090719: library version bump for 8.0 +OLD_LIBS+=lib/libalias.so.6 +OLD_LIBS+=lib/libavl.so.1 +OLD_LIBS+=lib/libbegemot.so.3 +OLD_LIBS+=lib/libbsdxml.so.3 +OLD_LIBS+=lib/libbsnmp.so.4 +OLD_LIBS+=lib/libcam.so.4 +OLD_LIBS+=lib/libcrypt.so.4 +OLD_LIBS+=lib/libcrypto.so.5 +OLD_LIBS+=lib/libctf.so.1 +OLD_LIBS+=lib/libdevstat.so.6 +OLD_LIBS+=lib/libdtrace.so.1 +OLD_LIBS+=lib/libedit.so.6 +OLD_LIBS+=lib/libgeom.so.4 +OLD_LIBS+=lib/libipsec.so.3 +OLD_LIBS+=lib/libipx.so.4 +OLD_LIBS+=lib/libkiconv.so.3 +OLD_LIBS+=lib/libkvm.so.4 +OLD_LIBS+=lib/libmd.so.4 +OLD_LIBS+=lib/libncurses.so.7 +OLD_LIBS+=lib/libncursesw.so.7 +OLD_LIBS+=lib/libnvpair.so.1 +OLD_LIBS+=lib/libpcap.so.6 +OLD_LIBS+=lib/libreadline.so.7 +OLD_LIBS+=lib/libsbuf.so.4 +OLD_LIBS+=lib/libufs.so.4 +OLD_LIBS+=lib/libumem.so.1 +OLD_LIBS+=lib/libutil.so.7 +OLD_LIBS+=lib/libuutil.so.1 +OLD_LIBS+=lib/libz.so.4 +OLD_LIBS+=lib/libzfs.so.1 +OLD_LIBS+=lib/libzpool.so.1 +OLD_LIBS+=usr/lib/libarchive.so.4 +OLD_LIBS+=usr/lib/libauditd.so.4 +OLD_LIBS+=usr/lib/libbluetooth.so.3 +OLD_LIBS+=usr/lib/libbsm.so.2 +OLD_LIBS+=usr/lib/libbz2.so.3 +OLD_LIBS+=usr/lib/libcalendar.so.4 +OLD_LIBS+=usr/lib/libcom_err.so.4 +OLD_LIBS+=usr/lib/libdevinfo.so.4 +OLD_LIBS+=usr/lib/libdialog.so.6 +OLD_LIBS+=usr/lib/libdwarf.so.1 +OLD_LIBS+=usr/lib/libfetch.so.5 +OLD_LIBS+=usr/lib/libform.so.4 +OLD_LIBS+=usr/lib/libformw.so.4 +OLD_LIBS+=usr/lib/libftpio.so.7 +OLD_LIBS+=usr/lib/libgnuregex.so.4 +OLD_LIBS+=usr/lib/libgpib.so.2 +OLD_LIBS+=usr/lib/libhistory.so.7 +OLD_LIBS+=usr/lib/libmagic.so.3 +OLD_LIBS+=usr/lib/libmemstat.so.2 +OLD_LIBS+=usr/lib/libmenu.so.4 +OLD_LIBS+=usr/lib/libmenuw.so.4 +OLD_LIBS+=usr/lib/libmilter.so.4 +OLD_LIBS+=usr/lib/libncp.so.3 +OLD_LIBS+=usr/lib/libnetgraph.so.3 +OLD_LIBS+=usr/lib/libngatm.so.3 +OLD_LIBS+=usr/lib/libobjc.so.3 +OLD_LIBS+=usr/lib/libopie.so.5 +OLD_LIBS+=usr/lib/libpam.so.4 +OLD_LIBS+=usr/lib/libpanel.so.4 +OLD_LIBS+=usr/lib/libpanelw.so.4 +OLD_LIBS+=usr/lib/libpmc.so.4 +OLD_LIBS+=usr/lib/libproc.so.1 +OLD_LIBS+=usr/lib/libradius.so.3 +OLD_LIBS+=usr/lib/librpcsvc.so.4 +OLD_LIBS+=usr/lib/libsdp.so.3 +OLD_LIBS+=usr/lib/libsmb.so.3 +OLD_LIBS+=usr/lib/libssh.so.4 +OLD_LIBS+=usr/lib/libssl.so.5 +OLD_LIBS+=usr/lib/libtacplus.so.3 +OLD_LIBS+=usr/lib/libugidfw.so.3 +OLD_LIBS+=usr/lib/libusb.so.1 +OLD_LIBS+=usr/lib/libusbhid.so.3 +OLD_LIBS+=usr/lib/libvgl.so.5 +OLD_LIBS+=usr/lib/libwrap.so.5 +OLD_LIBS+=usr/lib/libypclnt.so.3 +OLD_LIBS+=usr/lib/pam_chroot.so.4 +OLD_LIBS+=usr/lib/pam_deny.so.4 +OLD_LIBS+=usr/lib/pam_echo.so.4 +OLD_LIBS+=usr/lib/pam_exec.so.4 +OLD_LIBS+=usr/lib/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib/pam_group.so.4 +OLD_LIBS+=usr/lib/pam_guest.so.4 +OLD_LIBS+=usr/lib/pam_krb5.so.4 +OLD_LIBS+=usr/lib/pam_ksu.so.4 +OLD_LIBS+=usr/lib/pam_lastlog.so.4 +OLD_LIBS+=usr/lib/pam_login_access.so.4 +OLD_LIBS+=usr/lib/pam_nologin.so.4 +OLD_LIBS+=usr/lib/pam_opie.so.4 +OLD_LIBS+=usr/lib/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib/pam_permit.so.4 +OLD_LIBS+=usr/lib/pam_radius.so.4 +OLD_LIBS+=usr/lib/pam_rhosts.so.4 +OLD_LIBS+=usr/lib/pam_rootok.so.4 +OLD_LIBS+=usr/lib/pam_securetty.so.4 +OLD_LIBS+=usr/lib/pam_self.so.4 +OLD_LIBS+=usr/lib/pam_ssh.so.4 +OLD_LIBS+=usr/lib/pam_tacplus.so.4 +OLD_LIBS+=usr/lib/pam_unix.so.4 +OLD_LIBS+=usr/lib/snmp_atm.so.5 +OLD_LIBS+=usr/lib/snmp_bridge.so.5 +OLD_LIBS+=usr/lib/snmp_hostres.so.5 +OLD_LIBS+=usr/lib/snmp_mibII.so.5 +OLD_LIBS+=usr/lib/snmp_netgraph.so.5 +OLD_LIBS+=usr/lib/snmp_pf.so.5 +.if ${TARGET_ARCH} == "amd64" +OLD_LIBS+=usr/lib32/libalias.so.6 +OLD_LIBS+=usr/lib32/libarchive.so.4 +OLD_LIBS+=usr/lib32/libauditd.so.4 +OLD_LIBS+=usr/lib32/libavl.so.1 +OLD_LIBS+=usr/lib32/libbegemot.so.3 +OLD_LIBS+=usr/lib32/libbluetooth.so.3 +OLD_LIBS+=usr/lib32/libbsdxml.so.3 +OLD_LIBS+=usr/lib32/libbsm.so.2 +OLD_LIBS+=usr/lib32/libbsnmp.so.4 +OLD_LIBS+=usr/lib32/libbz2.so.3 +OLD_LIBS+=usr/lib32/libcalendar.so.4 +OLD_LIBS+=usr/lib32/libcam.so.4 +OLD_LIBS+=usr/lib32/libcom_err.so.4 +OLD_LIBS+=usr/lib32/libcrypt.so.4 +OLD_LIBS+=usr/lib32/libcrypto.so.5 +OLD_LIBS+=usr/lib32/libctf.so.1 +OLD_LIBS+=usr/lib32/libdevinfo.so.4 +OLD_LIBS+=usr/lib32/libdevstat.so.6 +OLD_LIBS+=usr/lib32/libdialog.so.6 +OLD_LIBS+=usr/lib32/libdtrace.so.1 +OLD_LIBS+=usr/lib32/libdwarf.so.1 +OLD_LIBS+=usr/lib32/libedit.so.6 +OLD_LIBS+=usr/lib32/libfetch.so.5 +OLD_LIBS+=usr/lib32/libform.so.4 +OLD_LIBS+=usr/lib32/libformw.so.4 +OLD_LIBS+=usr/lib32/libftpio.so.7 +OLD_LIBS+=usr/lib32/libgeom.so.4 +OLD_LIBS+=usr/lib32/libgnuregex.so.4 +OLD_LIBS+=usr/lib32/libgpib.so.2 +OLD_LIBS+=usr/lib32/libhistory.so.7 +OLD_LIBS+=usr/lib32/libipsec.so.3 +OLD_LIBS+=usr/lib32/libipx.so.4 +OLD_LIBS+=usr/lib32/libkiconv.so.3 +OLD_LIBS+=usr/lib32/libkvm.so.4 +OLD_LIBS+=usr/lib32/libmagic.so.3 +OLD_LIBS+=usr/lib32/libmd.so.4 +OLD_LIBS+=usr/lib32/libmemstat.so.2 +OLD_LIBS+=usr/lib32/libmenu.so.4 +OLD_LIBS+=usr/lib32/libmenuw.so.4 +OLD_LIBS+=usr/lib32/libmilter.so.4 +OLD_LIBS+=usr/lib32/libncp.so.3 +OLD_LIBS+=usr/lib32/libncurses.so.7 +OLD_LIBS+=usr/lib32/libncursesw.so.7 +OLD_LIBS+=usr/lib32/libnetgraph.so.3 +OLD_LIBS+=usr/lib32/libngatm.so.3 +OLD_LIBS+=usr/lib32/libnvpair.so.1 +OLD_LIBS+=usr/lib32/libobjc.so.3 +OLD_LIBS+=usr/lib32/libopie.so.5 +OLD_LIBS+=usr/lib32/libpam.so.4 +OLD_LIBS+=usr/lib32/libpanel.so.4 +OLD_LIBS+=usr/lib32/libpanelw.so.4 +OLD_LIBS+=usr/lib32/libpcap.so.6 +OLD_LIBS+=usr/lib32/libpmc.so.4 +OLD_LIBS+=usr/lib32/libproc.so.1 +OLD_LIBS+=usr/lib32/libradius.so.3 +OLD_LIBS+=usr/lib32/libreadline.so.7 +OLD_LIBS+=usr/lib32/librpcsvc.so.4 +OLD_LIBS+=usr/lib32/libsbuf.so.4 +OLD_LIBS+=usr/lib32/libsdp.so.3 +OLD_LIBS+=usr/lib32/libsmb.so.3 +OLD_LIBS+=usr/lib32/libssh.so.4 +OLD_LIBS+=usr/lib32/libssl.so.5 +OLD_LIBS+=usr/lib32/libtacplus.so.3 +OLD_LIBS+=usr/lib32/libufs.so.4 +OLD_LIBS+=usr/lib32/libugidfw.so.3 +OLD_LIBS+=usr/lib32/libumem.so.1 +OLD_LIBS+=usr/lib32/libusb.so.1 +OLD_LIBS+=usr/lib32/libusbhid.so.3 +OLD_LIBS+=usr/lib32/libutil.so.7 +OLD_LIBS+=usr/lib32/libuutil.so.1 +OLD_LIBS+=usr/lib32/libvgl.so.5 +OLD_LIBS+=usr/lib32/libwrap.so.5 +OLD_LIBS+=usr/lib32/libypclnt.so.3 +OLD_LIBS+=usr/lib32/libz.so.4 +OLD_LIBS+=usr/lib32/libzfs.so.1 +OLD_LIBS+=usr/lib32/libzpool.so.1 +OLD_LIBS+=usr/lib32/pam_chroot.so.4 +OLD_LIBS+=usr/lib32/pam_deny.so.4 +OLD_LIBS+=usr/lib32/pam_echo.so.4 +OLD_LIBS+=usr/lib32/pam_exec.so.4 +OLD_LIBS+=usr/lib32/pam_ftpusers.so.4 +OLD_LIBS+=usr/lib32/pam_group.so.4 +OLD_LIBS+=usr/lib32/pam_guest.so.4 +OLD_LIBS+=usr/lib32/pam_krb5.so.4 +OLD_LIBS+=usr/lib32/pam_ksu.so.4 +OLD_LIBS+=usr/lib32/pam_lastlog.so.4 +OLD_LIBS+=usr/lib32/pam_login_access.so.4 +OLD_LIBS+=usr/lib32/pam_nologin.so.4 +OLD_LIBS+=usr/lib32/pam_opie.so.4 +OLD_LIBS+=usr/lib32/pam_opieaccess.so.4 +OLD_LIBS+=usr/lib32/pam_passwdqc.so.4 +OLD_LIBS+=usr/lib32/pam_permit.so.4 +OLD_LIBS+=usr/lib32/pam_radius.so.4 +OLD_LIBS+=usr/lib32/pam_rhosts.so.4 +OLD_LIBS+=usr/lib32/pam_rootok.so.4 +OLD_LIBS+=usr/lib32/pam_securetty.so.4 +OLD_LIBS+=usr/lib32/pam_self.so.4 +OLD_LIBS+=usr/lib32/pam_ssh.so.4 +OLD_LIBS+=usr/lib32/pam_tacplus.so.4 +OLD_LIBS+=usr/lib32/pam_unix.so.4 +.endif +# 20090718: the gdm pam.d file is no longer required. +OLD_FILES+=etc/pam.d/gdm # 20090713: vimage container structs removed. OLD_FILES+=usr/include/netinet/vinet.h OLD_FILES+=usr/include/netinet6/vinet6.h OLD_FILES+=usr/include/netipsec/vipsec.h +# 20090712: ieee80211.4 -> net80211.4 +OLD_FILES+=usr/share/man/man4/ieee80211.4.gz +# 20090711: typo fixed, kproc_resume,.9 -> kproc_resume.9 +OLD_FILES+=usr/share/man/man9/kproc_resume,.9.gz # 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved OLD_FILES+=usr/share/man/man3/msgctl.3.gz OLD_FILES+=usr/share/man/man3/msgget.3.gz @@ -272,8 +487,6 @@ OLD_FILES+=usr/include/dev/usb/usb_port.h OLD_FILES+=usr/include/dev/usb/usb_quirks.h OLD_FILES+=usr/include/dev/usb/usbcdc.h -OLD_FILES+=usr/include/dev/usb/usbdi.h -OLD_FILES+=usr/include/dev/usb/usbdi_util.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h # 20090203: removal of pccard header files @@ -1861,7 +2074,6 @@ OLD_FILES+=usr/bin/kenv OLD_FILES+=usr/sbin/elf2aout # 200210XX -OLD_FILES+=usr/include/libusb.h OLD_FILES+=usr/include/libusbhid.h OLD_FILES+=usr/share/man/man3/All_FreeBSD.3.gz OLD_FILES+=usr/share/man/man3/CheckRules.3.gz ==== //depot/projects/soc2009/trasz_limits/UPDATING#10 (text+ko) ==== @@ -22,6 +22,11 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090719: + Bump the shared library version numbers for all libraries that + do not use symbol versioning as part of the 8.0-RELEASE cycle. + Bump __FreeBSD_version to 800105. + 20090714: Due to changes in the implementation of virtual network stack support, all network-related kernel modules must be recompiled. @@ -1660,4 +1665,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.630 2009/07/14 22:48:30 rwatson Exp $ +$FreeBSD: src/UPDATING,v 1.631 2009/07/19 17:25:24 kensmith Exp $ ==== //depot/projects/soc2009/trasz_limits/bin/ln/ln.1#2 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)ln.1 8.2 (Berkeley) 12/30/93 -.\" $FreeBSD: src/bin/ln/ln.1,v 1.34 2009/01/13 15:24:35 trhodes Exp $ +.\" $FreeBSD: src/bin/ln/ln.1,v 1.35 2009/07/19 17:35:23 jilles Exp $ .\" -.Dd June 6, 2008 +.Dd July 17, 2009 .Dt LN 1 .Os .Sh NAME @@ -41,13 +41,13 @@ .Nd link files .Sh SYNOPSIS .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file .Op Ar target_file .Nm -.Op Fl s Op Fl F +.Op Fl L | Fl P | Fl s Op Fl F .Op Fl f | iw .Op Fl hnv .Ar source_file ... @@ -77,16 +77,6 @@ .Pp The options are as follows: .Bl -tag -width flag -.It Fl f -If the target file already exists, -then unlink it so that the link may occur. -(The -.Fl f -option overrides any previous -.Fl i -and -.Fl w -options.) .It Fl F If the target file already exists and is a directory, then remove it so that the link may occur. @@ -105,6 +95,29 @@ option is a no-op unless .Fl s option is specified. +.It Fl L +When creating a hard link to a symbolic link, +create a hard link to the target of the symbolic link. +This is the default. +This option cancels the +.Fl P +option. +.It Fl P +When creating a hard link to a symbolic link, +create a hard link to the symbolic link itself. +This option cancels the +.Fl L +option. +.It Fl f +If the target file already exists, +then unlink it so that the link may occur. +(The +.Fl f +option overrides any previous +.Fl i +and +.Fl w +options.) .It Fl h If the .Ar target_file ==== //depot/projects/soc2009/trasz_limits/bin/ln/ln.c#2 (text+ko) ==== @@ -39,13 +39,14 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.38 2008/06/07 09:37:30 keramida Exp $"); +__FBSDID("$FreeBSD: src/bin/ln/ln.c,v 1.39 2009/07/19 17:35:23 jilles Exp $"); #include #include #include #include +#include #include #include #include @@ -56,12 +57,11 @@ int Fflag; /* Remove empty directories also. */ int hflag; /* Check new name for symlink first. */ int iflag; /* Interactive mode. */ +int Pflag; /* Create hard links to symlinks. */ int sflag; /* Symbolic, not hard, link. */ int vflag; /* Verbose output. */ int wflag; /* Warn if symlink target does not * exist, and -f is not enabled. */ - /* System link call. */ -int (*linkf)(const char *, const char *); char linkch; int linkit(const char *, const char *, int); @@ -90,15 +90,20 @@ argv += optind; if (argc != 2) usage(); - linkf = link; exit(linkit(argv[0], argv[1], 0)); } - while ((ch = getopt(argc, argv, "Ffhinsvw")) != -1) + while ((ch = getopt(argc, argv, "FLPfhinsvw")) != -1) switch (ch) { case 'F': Fflag = 1; break; + case 'L': + Pflag = 0; + break; + case 'P': + Pflag = 1; + break; case 'f': fflag = 1; iflag = 0; @@ -129,7 +134,6 @@ argv += optind; argc -= optind; - linkf = sflag ? symlink : link; linkch = sflag ? '-' : '='; if (sflag == 0) Fflag = 0; @@ -179,7 +183,7 @@ if (!sflag) { /* If source doesn't exist, quit now. */ - if (stat(source, &sb)) { + if ((Pflag ? lstat : stat)(source, &sb)) { warn("%s", source); return (1); } @@ -276,7 +280,9 @@ } /* Attempt the link. */ - if ((*linkf)(source, target)) { + if (sflag ? symlink(source, target) : + linkat(AT_FDCWD, source, AT_FDCWD, target, + Pflag ? 0 : AT_SYMLINK_FOLLOW)) { warn("%s", target); return (1); } @@ -289,8 +295,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n%s\n", - "usage: ln [-s [-F]] [-f | -i] [-hnv] source_file [target_file]", - " ln [-s [-F]] [-f | -i] [-hnv] source_file ... target_dir", + "usage: ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file [target_file]", + " ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file ... target_dir", " link source_file target_file"); exit(1); } ==== //depot/projects/soc2009/trasz_limits/bin/ps/ps.c#4 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.116 2009/05/18 01:45:52 brian Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.117 2009/07/23 10:20:12 brian Exp $"); #include #include @@ -1331,7 +1331,7 @@ static void usage(void) { -#define SINGLE_OPTS "[-aCce" OPT_LAZY_f "HhjlmrSTuvwXxZ]" +#define SINGLE_OPTS "[-aCcde" OPT_LAZY_f "HhjlmrSTuvwXxZ]" (void)fprintf(stderr, "%s\n%s\n%s\n%s\n", "usage: ps " SINGLE_OPTS " [-O fmt | -o fmt] [-G gid[,gid...]]", ==== //depot/projects/soc2009/trasz_limits/cddl/lib/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.2 2007/04/16 21:20:24 ru Exp $ +# $FreeBSD: src/cddl/lib/Makefile.inc,v 1.3 2009/07/19 17:25:24 kensmith Exp $ SHLIBDIR?= /lib -SHLIB_MAJOR?= 1 +SHLIB_MAJOR?= 2 .include "../Makefile.inc" ==== //depot/projects/soc2009/trasz_limits/cddl/lib/libctf/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libctf/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= ctf -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 SRCS= ctf_create.c \ ctf_decl.c \ ==== //depot/projects/soc2009/trasz_limits/cddl/lib/libdtrace/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.1 2008/05/22 04:26:42 jb Exp $ +# $FreeBSD: src/cddl/lib/libdtrace/Makefile,v 1.2 2009/07/19 17:25:24 kensmith Exp $ .include "../../Makefile.inc" LIB= dtrace -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 2 WARNS= 1 ==== //depot/projects/soc2009/trasz_limits/contrib/gcc/dwarf2out.c#2 (text+ko) ==== @@ -10007,7 +10007,7 @@ return NULL_TREE; else if (!cgraph_global_info_ready && (TREE_CODE (*tp) == VAR_DECL || TREE_CODE (*tp) == FUNCTION_DECL)) - gcc_unreachable (); + return *tp; else if (DECL_P (*tp) && TREE_CODE (*tp) == VAR_DECL) { struct cgraph_varpool_node *node = cgraph_varpool_node (*tp); ==== //depot/projects/soc2009/trasz_limits/etc/pam.d/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/pam.d/Makefile,v 1.16 2007/06/17 17:25:52 yar Exp $ +# $FreeBSD: src/etc/pam.d/Makefile,v 1.17 2009/07/18 16:29:40 marcus Exp $ NO_OBJ= @@ -6,7 +6,6 @@ atrun \ cron \ ftpd \ - gdm \ imap \ kde \ login \ ==== //depot/projects/soc2009/trasz_limits/gnu/lib/libdialog/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # Makefile for libdialog -# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.45 2007/06/18 18:47:52 rafan Exp $ +# $FreeBSD: src/gnu/lib/libdialog/Makefile,v 1.46 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ INCS= dialog.h MAN= dialog.3 -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 SRCS= kernel.c rc.c checklist.c inputbox.c menubox.c msgbox.c \ lineedit.c radiolist.c textbox.c yesno.c prgbox.c raw_popen.c \ fselect.c ui_objects.c dir.c notify.c help.c gauge.c tree.c ==== //depot/projects/soc2009/trasz_limits/gnu/lib/libg2c/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.17 2006/03/18 21:37:03 ru Exp $ +# $FreeBSD: src/gnu/lib/libg2c/Makefile,v 1.18 2009/07/19 17:25:24 kensmith Exp $ .include @@ -7,7 +7,7 @@ .PATH: ${SRCDIR} ${SRCDIR}/libU77 ${SRCDIR}/libF77 ${SRCDIR}/libI77 LIB= g2c -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 # Traditional FORTRAN Library members defined in libF77 ==== //depot/projects/soc2009/trasz_limits/gnu/lib/libobjc/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.33 2007/11/20 04:20:31 kensmith Exp $ +# $FreeBSD: src/gnu/lib/libobjc/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ OBJCDIR=${.CURDIR}/../../../contrib/libobjc GCCDIR= ${.CURDIR}/../../../contrib/gcc @@ -7,7 +7,7 @@ .PATH: ${OBJCDIR}/objc ${OBJCDIR} LIB= objc -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= archive.c class.c encoding.c gc.c hash.c init.c linking.m misc.c \ nil_method.c NXConstStr.m Object.m objects.c Protocol.m sarray.c \ ==== //depot/projects/soc2009/trasz_limits/gnu/lib/libreadline/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.15 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libreadline/Makefile.inc,v 1.16 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR=7 +SHLIB_MAJOR=8 RL_LIBRARY_VERSION=5.2 SRCDIR= ${.CURDIR}/../../../../contrib/libreadline ==== //depot/projects/soc2009/trasz_limits/gnu/lib/libregex/Makefile#2 (text+ko) ==== @@ -1,9 +1,9 @@ -# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.33 2007/06/18 18:47:53 rafan Exp $ +# $FreeBSD: src/gnu/lib/libregex/Makefile,v 1.34 2009/07/19 17:25:24 kensmith Exp $ SUBDIR= doc LIB= gnuregex -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 SRCS= gnuregex.c INCSGROUPS= INCS WRINCS PXINCS ==== //depot/projects/soc2009/trasz_limits/include/dlfcn.h#2 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/include/dlfcn.h,v 1.21 2009/03/30 08:47:28 kib Exp $ + * $FreeBSD: src/include/dlfcn.h,v 1.22 2009/07/17 19:45:42 kib Exp $ */ #ifndef _DLFCN_H_ @@ -48,6 +48,7 @@ #define RTLD_LOCAL 0 /* Opposite of RTLD_GLOBAL, and the default. */ #define RTLD_TRACE 0x200 /* Trace loaded objects and exit. */ #define RTLD_NODELETE 0x01000 /* Do not remove members. */ +#define RTLD_NOLOAD 0x02000 /* Do not load if not already loaded. */ /* * Request arguments for dlinfo(). ==== //depot/projects/soc2009/trasz_limits/lib/Makefile.inc#2 (text+ko) ==== @@ -1,3 +1,3 @@ -# $FreeBSD: src/lib/Makefile.inc,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/Makefile.inc,v 1.5 2009/07/19 17:25:24 kensmith Exp $ # Default version for system libs (override in /Makefile if necessary) -SHLIB_MAJOR?= 4 +SHLIB_MAJOR?= 5 ==== //depot/projects/soc2009/trasz_limits/lib/libalias/libalias/Makefile#2 (text+ko) ==== @@ -1,10 +1,10 @@ -# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.5 2008/03/12 11:58:28 piso Exp $ +# $FreeBSD: src/lib/libalias/libalias/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ .PATH: ${.CURDIR}/../../../sys/netinet/libalias LIB= alias SHLIBDIR?= /lib -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 MAN= libalias.3 SRCS= alias.c alias_db.c alias_proxy.c alias_util.c alias_mod.c INCS= alias.h ==== //depot/projects/soc2009/trasz_limits/lib/libarchive/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libarchive/Makefile,v 1.97 2009/05/30 17:26:55 kientzle Exp $ +# $FreeBSD: src/lib/libarchive/Makefile,v 1.98 2009/07/19 17:25:24 kensmith Exp $ .include LIB= archive @@ -7,7 +7,7 @@ # FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system. # It has no real relation to the libarchive version number. -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I${.OBJDIR} ==== //depot/projects/soc2009/trasz_limits/lib/libautofs/Makefile#2 (text+ko) ==== @@ -1,8 +1,8 @@ # $Id: Makefile,v 1.5 2004/09/08 08:12:21 bright Exp $ -# $FreeBSD: src/lib/libautofs/Makefile,v 1.5 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libautofs/Makefile,v 1.6 2009/07/19 17:25:24 kensmith Exp $ LIB= autofs -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 WARNS?= 4 SRCS= libautofs.c ==== //depot/projects/soc2009/trasz_limits/lib/libbegemot/Makefile#2 (text+ko) ==== @@ -1,11 +1,11 @@ -# $FreeBSD: src/lib/libbegemot/Makefile,v 1.4 2007/05/21 02:49:02 deischen Exp $ +# $FreeBSD: src/lib/libbegemot/Makefile,v 1.5 2009/07/19 17:25:24 kensmith Exp $ LIBBEGEMOT_DIR=${.CURDIR}/../../contrib/libbegemot .PATH: ${LIBBEGEMOT_DIR} LIB= begemot -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SHLIBDIR?= /lib # WARNS?= 6 ==== //depot/projects/soc2009/trasz_limits/lib/libbluetooth/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # $Id: Makefile,v 1.5 2003/07/22 18:38:04 max Exp $ -# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.6 2009/04/22 15:50:03 emax Exp $ +# $FreeBSD: src/lib/libbluetooth/Makefile,v 1.7 2009/07/19 17:25:24 kensmith Exp $ LIB= bluetooth MAN= bluetooth.3 @@ -7,7 +7,7 @@ WARNS?= 2 CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../../sys -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 4 SRCS= bluetooth.c dev.c hci.c INCS= bluetooth.h ==== //depot/projects/soc2009/trasz_limits/lib/libbsm/Makefile#2 (text+ko) ==== @@ -1,12 +1,12 @@ # -# $FreeBSD: src/lib/libbsm/Makefile,v 1.11 2009/04/19 16:17:13 rwatson Exp $ +# $FreeBSD: src/lib/libbsm/Makefile,v 1.12 2009/07/19 17:25:24 kensmith Exp $ # OPENBSMDIR= ${.CURDIR}/../../contrib/openbsm LIBBSMDIR= ${OPENBSMDIR}/libbsm LIB= bsm -SHLIB_MAJOR= 2 +SHLIB_MAJOR= 3 .PATH: ${LIBBSMDIR} .PATH: ${OPENBSMDIR}/bsm ==== //depot/projects/soc2009/trasz_limits/lib/libbsnmp/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.7 2007/06/18 18:47:54 rafan Exp $ +# $FreeBSD: src/lib/libbsnmp/Makefile.inc,v 1.8 2009/07/19 17:25:24 kensmith Exp $ -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 WARNS?= 6 NO_WERROR= INCSDIR= ${INCLUDEDIR}/bsnmp >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Jul 25 18:01:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5D3481065670; Sat, 25 Jul 2009 18:01:52 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D879106566B for ; Sat, 25 Jul 2009 18:01:52 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0B5888FC0C for ; Sat, 25 Jul 2009 18:01:52 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PI1pmN039548 for ; Sat, 25 Jul 2009 18:01:51 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PI1pT0039546 for perforce@freebsd.org; Sat, 25 Jul 2009 18:01:51 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 18:01:51 GMT Message-Id: <200907251801.n6PI1pT0039546@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166563 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 18:01:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=166563 Change 166563 by andre@andre_t61 on 2009/07/25 18:01:26 Move snd_sacked reduction tracking from tcp_sack_flush to tcp_sack_free. Affected files ... .. //depot/projects/tcp_new/netinet/tcp_sack.c#13 edit Differences ... ==== //depot/projects/tcp_new/netinet/tcp_sack.c#13 (text+ko) ==== @@ -157,6 +157,7 @@ sb = RB_REMOVE(tcp_sackblocks, &tp->snd_sackblocks, tsb); KASSERT(sb != NULL, ("%s: RB_REMOVE failed", __func__)); + tp->snd_sacked -= SEQ_DELTA(tsb->tsb_blk.start, tsb->tsb_blk.end); uma_zfree(tcp_sackblock_zone, tsb); } @@ -166,7 +167,6 @@ struct tcp_sack_block *tsb, *tsbn; RB_FOREACH_SAFE(tsb, tcp_sackblocks, &tp->snd_sackblocks, tsbn) { - tp->snd_sacked -= SEQ_DELTA(tsb->tsb_blk.start, tsb->tsb_blk.end); tcp_sack_free(tp, tsb); } KASSERT(tp->snd_sacked == 0, ("%s: snd_sacked not zero", __func__)); @@ -200,7 +200,7 @@ } /* - * SACK header but no blocks or no SACK information even though + * SACK header but no blocks nor SACK information even though * it was sent before. */ if ((to->to_flags & TOF_SACK) && to->to_nsacks == 0) From owner-p4-projects@FreeBSD.ORG Sat Jul 25 18:37:32 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 612E91065674; Sat, 25 Jul 2009 18:37:31 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 232D9106564A for ; Sat, 25 Jul 2009 18:37:31 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1130C8FC0C for ; Sat, 25 Jul 2009 18:37:31 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PIbUp4043155 for ; Sat, 25 Jul 2009 18:37:30 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PIbUNC043153 for perforce@freebsd.org; Sat, 25 Jul 2009 18:37:30 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 18:37:30 GMT Message-Id: <200907251837.n6PIbUNC043153@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166565 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 18:37:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=166565 Change 166565 by andre@andre_flirtbox on 2009/07/25 18:36:53 Updating rcv_reass_size on block insert helps to maintain consistency. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#51 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#51 (text+ko) ==== @@ -460,6 +460,7 @@ trbn = RB_INSERT(tcp_ra, &tp->rcv_reass, trb); KASSERT(trbn == NULL, ("%s: RB_INSERT failed", __func__)); LIST_INSERT_HEAD(&tp->rcv_reass_sack, trb, trb_sack); + tp->rcv_reass_size += SEQ_DELTA(trbs.trb_seqs, trbs.trb_seqe); tp->rcv_reass_blocks++; TCPSTAT_INC(tcps_reass_blocks); } else { From owner-p4-projects@FreeBSD.ORG Sat Jul 25 18:42:40 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1DDAF1065677; Sat, 25 Jul 2009 18:42:39 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A12AB1065672 for ; Sat, 25 Jul 2009 18:42:36 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 813828FC14 for ; Sat, 25 Jul 2009 18:42:36 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PIgaw2043528 for ; Sat, 25 Jul 2009 18:42:36 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PIgaxg043526 for perforce@freebsd.org; Sat, 25 Jul 2009 18:42:36 GMT (envelope-from andre@freebsd.org) Date: Sat, 25 Jul 2009 18:42:36 GMT Message-Id: <200907251842.n6PIgaxg043526@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166566 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 18:42:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=166566 Change 166566 by andre@andre_t61 on 2009/07/25 18:41:42 Remove local implementation of m_storagesize(). It's no longer necessary. Affected files ... .. //depot/projects/tcp_reass/netinet/tcp_reass.c#52 edit Differences ... ==== //depot/projects/tcp_reass/netinet/tcp_reass.c#52 (text+ko) ==== @@ -143,19 +143,6 @@ return (m); } -#if 0 -static u_int -m_storagesize(struct mbuf *m) -{ - u_int mcnt; - - for (mcnt = 0; m != NULL; m = m->m_next) - mcnt += (m->m_flags & M_EXT) ? - m->m_ext.ext_size + MSIZE : MSIZE; - return (mcnt); -} -#endif - /* * Initialize TCP reassembly zone on startup. */ From owner-p4-projects@FreeBSD.ORG Sat Jul 25 20:29:34 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E7FB11065675; Sat, 25 Jul 2009 20:29:33 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A47D0106566B for ; Sat, 25 Jul 2009 20:29:33 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 87C7B8FC0A for ; Sat, 25 Jul 2009 20:29:33 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6PKTXtY052983 for ; Sat, 25 Jul 2009 20:29:33 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6PKTXjX052981 for perforce@freebsd.org; Sat, 25 Jul 2009 20:29:33 GMT (envelope-from mav@freebsd.org) Date: Sat, 25 Jul 2009 20:29:33 GMT Message-Id: <200907252029.n6PKTXjX052981@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 166569 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Jul 2009 20:29:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=166569 Change 166569 by mav@mav_mavbook on 2009/07/25 20:28:57 Cleanup code. Fix ordered request insertion for ada. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#21 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#4 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#30 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#21 (text+ko) ==== @@ -70,8 +70,7 @@ ADA_FLAG_PACK_INVALID = 0x001, ADA_FLAG_CAN_48BIT = 0x002, ADA_FLAG_CAN_FLUSHCACHE = 0x004, - ADA_FLAG_CAN_NCQ = 0x008, - ADA_FLAG_TAGGED_QUEUING = 0x010, + ADA_FLAG_CAN_NCQ = 0x008, ADA_FLAG_NEED_OTAG = 0x020, ADA_FLAG_WENT_IDLE = 0x040, ADA_FLAG_RETRY_UA = 0x080, @@ -80,10 +79,7 @@ } ada_flags; typedef enum { - ADA_Q_NONE = 0x00, - ADA_Q_NO_SYNC_CACHE = 0x01, - ADA_Q_NO_6_BYTE = 0x02, - ADA_Q_NO_PREVENT = 0x04 + ADA_Q_NONE = 0x00 } ada_quirks; typedef enum { @@ -331,14 +327,7 @@ cam_periph_lock(periph); -#if 0 /* - * check it's not too big a transfer for our adapter - */ - scsi_minphys(bp,&sd_switch); -#endif - - /* * Mask interrupts so that the pack cannot be invalidated until * after we are in the queue. Otherwise, we might not properly * clean up one of the buffers. @@ -551,11 +540,6 @@ if (cgd->protocol != PROTO_ATA) break; -// if (SID_TYPE(&cgd->inq_data) != T_DIRECT -// && SID_TYPE(&cgd->inq_data) != T_RBC -// && SID_TYPE(&cgd->inq_data) != T_OPTICAL) -// break; - /* * Allocate a peripheral instance for * this device and start the probe @@ -651,7 +635,7 @@ if (softc == NULL) { printf("adaregister: Unable to probe new device. " - "Unable to allocate softc\n"); + "Unable to allocate softc\n"); return(CAM_REQ_CMP_ERR); } @@ -666,8 +650,6 @@ if (cgd->ident_data.satacapabilities & ATA_SUPPORT_NCQ && cgd->ident_data.queue >= 31) softc->flags |= ADA_FLAG_CAN_NCQ; -// if ((cgd->inq_data.flags & SID_CmdQue) != 0) -// softc->flags |= ADA_FLAG_TAGGED_QUEUING; periph->softc = softc; @@ -728,8 +710,6 @@ /* XXX: these are not actually "firmware" values, so they may be wrong */ softc->disk->d_fwsectors = softc->params.secs_per_track; softc->disk->d_fwheads = softc->params.heads; -// softc->disk->d_devstat->block_size = softc->params.secsize; -// softc->disk->d_devstat->flags &= ~DEVSTAT_BS_UNAVAILABLE; disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); @@ -815,9 +795,9 @@ if ((softc->flags & ADA_FLAG_NEED_OTAG) != 0) { softc->flags &= ~ADA_FLAG_NEED_OTAG; softc->ordered_tag_count++; - tag_code = 0;//MSG_ORDERED_Q_TAG; + tag_code = 0; } else { - tag_code = 0;//MSG_SIMPLE_Q_TAG; + tag_code = 1; } switch (bp->bio_cmd) { case BIO_READ: @@ -836,7 +816,7 @@ bp->bio_bcount, ada_default_timeout*1000); - if (softc->flags & ADA_FLAG_CAN_NCQ) { + if ((softc->flags & ADA_FLAG_CAN_NCQ) && tag_code) { if (bp->bio_cmd == BIO_READ) { ata_ncq_cmd(ataio, ATA_READ_FPDMA_QUEUED, lba, count); @@ -870,7 +850,7 @@ 1, adadone, CAM_DIR_NONE, - tag_code, + 0, NULL, 0, ada_default_timeout*1000); @@ -1047,10 +1027,6 @@ lbasize = (u_int32_t)cgd->ident_data.lba_size_1 | ((u_int32_t)cgd->ident_data.lba_size_2 << 16); - /* does this device need oldstyle CHS addressing */ -// if (!ad_version(cgd->ident_data.version_major) || !lbasize) -// atadev->flags |= ATA_D_USE_CHS; - /* use the 28bit LBA size if valid or bigger than the CHS mapping */ if (cgd->ident_data.cylinders == 16383 || dp->sectors < lbasize) dp->sectors = lbasize; ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#4 (text+ko) ==== @@ -72,22 +72,11 @@ } pmp_state; typedef enum { - PMP_FLAG_PACK_INVALID = 0x001, PMP_FLAG_SCTX_INIT = 0x200 } pmp_flags; typedef enum { - PMP_Q_NONE = 0x00 -} pmp_quirks; - -typedef enum { PMP_CCB_PROBE = 0x01, - PMP_CCB_PROBE2 = 0x02, - PMP_CCB_BUFFER_IO = 0x03, - PMP_CCB_WAITING = 0x04, - PMP_CCB_DUMP = 0x05, - PMP_CCB_TYPE_MASK = 0x0F, - PMP_CCB_RETRY_UA = 0x10 } pmp_ccb_state; /* Offsets into our private area for storing information */ @@ -98,7 +87,6 @@ SLIST_ENTRY(pmp_softc) links; pmp_state state; pmp_flags flags; - pmp_quirks quirks; uint32_t pm_pid; uint32_t pm_prv; int pm_ports; @@ -111,15 +99,6 @@ struct sysctl_oid *sysctl_tree; }; -struct pmp_quirk_entry { - struct scsi_inquiry_pattern inq_pat; - pmp_quirks quirks; -}; - -//static struct pmp_quirk_entry pmp_quirk_table[] = -//{ -//}; - static periph_init_t pmpinit; static void pmpasync(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg); @@ -136,7 +115,7 @@ #endif #ifndef PMP_DEFAULT_RETRY -#define PMP_DEFAULT_RETRY 4 +#define PMP_DEFAULT_RETRY 1 #endif static int pmp_retry_count = PMP_DEFAULT_RETRY; @@ -200,9 +179,6 @@ xpt_free_path(dpath); } } - - softc->flags |= PMP_FLAG_PACK_INVALID; - xpt_print(periph->path, "lost device\n"); } @@ -319,8 +295,6 @@ struct pmp_softc *softc; struct ccb_pathinq cpi; struct ccb_getdev *cgd; - char announce_buf[80]; - caddr_t match; cgd = (struct ccb_getdev *)arg; if (periph == NULL) { @@ -347,20 +321,6 @@ softc->pm_pid = ((uint32_t *)&cgd->ident_data)[0]; softc->pm_prv = ((uint32_t *)&cgd->ident_data)[1]; - /* - * See if this device has any quirks. - */ -// match = cam_quirkmatch((caddr_t)&cgd->inq_data, -// (caddr_t)pmp_quirk_table, -// sizeof(pmp_quirk_table)/sizeof(*pmp_quirk_table), -// sizeof(*pmp_quirk_table), scsi_inquiry_match); - match = NULL; - - if (match != NULL) - softc->quirks = ((struct pmp_quirk_entry *)match)->quirks; - else - softc->quirks = PMP_Q_NONE; - /* Check if the SIM does not want queued commands */ bzero(&cpi, sizeof(cpi)); xpt_setup_ccb(&cpi.ccb_h, periph->path, CAM_PRIORITY_NORMAL); @@ -369,9 +329,7 @@ TASK_INIT(&softc->sysctl_task, 0, pmpsysctlinit, periph); - snprintf(announce_buf, sizeof(announce_buf), - "PMP"); - xpt_announce_periph(periph, announce_buf); + xpt_announce_periph(periph, NULL); /* * Add async callbacks for bus reset and @@ -407,35 +365,35 @@ switch (softc->state) { case PMP_STATE_PORTS: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_read_cmd(ataio, 2, 15); break; case PMP_STATE_CONFIG: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_write_cmd(ataio, 0x60, 15, 0xf); break; case PMP_STATE_RESET: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_write_cmd(ataio, 2, softc->pm_step, (softc->found & (1 << softc->pm_step)) ? 0 : 1); printf("PM RESET %d %04x %d\n", softc->pm_step, softc->found, @@ -443,35 +401,35 @@ break; case PMP_STATE_CONNECT: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_write_cmd(ataio, 2, softc->pm_step, 0); break; case PMP_STATE_CHECK: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_read_cmd(ataio, 0, softc->pm_step); break; case PMP_STATE_CLEAR: cam_fill_ataio(ataio, - 1, + pmp_retry_count, pmpdone, /*flags*/CAM_DIR_NONE, 0, /*data_ptr*/NULL, /*dxfer_len*/0, - 10 * 1000); + pmp_default_timeout * 1000); ata_pm_write_cmd(ataio, 1, softc->pm_step, 0xFFFFFFFF); break; default: ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#30 (text+ko) ==== @@ -62,7 +62,6 @@ #include #include -#include #include #include /* for xpt_print below */ #include "opt_cam.h" @@ -309,7 +308,7 @@ 0, probedone, /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, + 0, /*data_ptr*/NULL, /*dxfer_len*/0, (start_ccb->ccb_h.target_id == 15 ? 3 : 15) * 1000); @@ -340,7 +339,7 @@ 1, probedone, /*flags*/CAM_DIR_IN, - MSG_SIMPLE_Q_TAG, + 0, /*data_ptr*/(u_int8_t *)ident_buf, /*dxfer_len*/sizeof(struct ata_params), 30 * 1000); @@ -359,7 +358,7 @@ 1, probedone, /*flags*/CAM_DIR_IN, - MSG_SIMPLE_Q_TAG, + 0, /*data_ptr*/(u_int8_t *)ident_buf, /*dxfer_len*/sizeof(struct ata_params), 30 * 1000); @@ -402,7 +401,7 @@ 1, probedone, /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, + 0, /*data_ptr*/NULL, /*dxfer_len*/0, 10 * 1000); @@ -413,7 +412,7 @@ 1, probedone, /*flags*/CAM_DIR_NONE, - MSG_SIMPLE_Q_TAG, + 0, /*data_ptr*/NULL, /*dxfer_len*/0, 10 * 1000); @@ -1417,114 +1416,6 @@ scsi->flags &= ~CTS_SCSI_FLAGS_TAG_ENB; } - /* SPI specific sanity checking */ - if (cts->transport == XPORT_SPI && async_update == FALSE) { - u_int spi3caps; - struct ccb_trans_settings_spi *spi; - struct ccb_trans_settings_spi *cur_spi; - - spi = &cts->xport_specific.spi; - - cur_spi = &cur_cts.xport_specific.spi; - - /* Fill in any gaps in what the user gave us */ - if ((spi->valid & CTS_SPI_VALID_SYNC_RATE) == 0) - spi->sync_period = cur_spi->sync_period; - if ((cur_spi->valid & CTS_SPI_VALID_SYNC_RATE) == 0) - spi->sync_period = 0; - if ((spi->valid & CTS_SPI_VALID_SYNC_OFFSET) == 0) - spi->sync_offset = cur_spi->sync_offset; - if ((cur_spi->valid & CTS_SPI_VALID_SYNC_OFFSET) == 0) - spi->sync_offset = 0; - if ((spi->valid & CTS_SPI_VALID_PPR_OPTIONS) == 0) - spi->ppr_options = cur_spi->ppr_options; - if ((cur_spi->valid & CTS_SPI_VALID_PPR_OPTIONS) == 0) - spi->ppr_options = 0; - if ((spi->valid & CTS_SPI_VALID_BUS_WIDTH) == 0) - spi->bus_width = cur_spi->bus_width; - if ((cur_spi->valid & CTS_SPI_VALID_BUS_WIDTH) == 0) - spi->bus_width = 0; - if ((spi->valid & CTS_SPI_VALID_DISC) == 0) { - spi->flags &= ~CTS_SPI_FLAGS_DISC_ENB; - spi->flags |= cur_spi->flags & CTS_SPI_FLAGS_DISC_ENB; - } - if ((cur_spi->valid & CTS_SPI_VALID_DISC) == 0) - spi->flags &= ~CTS_SPI_FLAGS_DISC_ENB; - if (((device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0 - && (inq_data->flags & SID_Sync) == 0 - && cts->type == CTS_TYPE_CURRENT_SETTINGS) - || ((cpi.hba_inquiry & PI_SDTR_ABLE) == 0)) { - /* Force async */ - spi->sync_period = 0; - spi->sync_offset = 0; - } - - switch (spi->bus_width) { - case MSG_EXT_WDTR_BUS_32_BIT: - if (((device->flags & CAM_DEV_INQUIRY_DATA_VALID) == 0 - || (inq_data->flags & SID_WBus32) != 0 - || cts->type == CTS_TYPE_USER_SETTINGS) - && (cpi.hba_inquiry & PI_WIDE_32) != 0) - break; - /* Fall Through to 16-bit */ - case MSG_EXT_WDTR_BUS_16_BIT: - if (((device->flags & CAM_DEV_INQUIRY_DATA_VALID) == 0 - || (inq_data->flags & SID_WBus16) != 0 - || cts->type == CTS_TYPE_USER_SETTINGS) - && (cpi.hba_inquiry & PI_WIDE_16) != 0) { - spi->bus_width = MSG_EXT_WDTR_BUS_16_BIT; - break; - } - /* Fall Through to 8-bit */ - default: /* New bus width?? */ - case MSG_EXT_WDTR_BUS_8_BIT: - /* All targets can do this */ - spi->bus_width = MSG_EXT_WDTR_BUS_8_BIT; - break; - } - - spi3caps = cpi.xport_specific.spi.ppr_options; - if ((device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0 - && cts->type == CTS_TYPE_CURRENT_SETTINGS) - spi3caps &= inq_data->spi3data; - - if ((spi3caps & SID_SPI_CLOCK_DT) == 0) - spi->ppr_options &= ~MSG_EXT_PPR_DT_REQ; - - if ((spi3caps & SID_SPI_IUS) == 0) - spi->ppr_options &= ~MSG_EXT_PPR_IU_REQ; - - if ((spi3caps & SID_SPI_QAS) == 0) - spi->ppr_options &= ~MSG_EXT_PPR_QAS_REQ; - - /* No SPI Transfer settings are allowed unless we are wide */ - if (spi->bus_width == 0) - spi->ppr_options = 0; - - if ((spi->valid & CTS_SPI_VALID_DISC) - && ((spi->flags & CTS_SPI_FLAGS_DISC_ENB) == 0)) { - /* - * Can't tag queue without disconnection. - */ - scsi->flags &= ~CTS_SCSI_FLAGS_TAG_ENB; - scsi->valid |= CTS_SCSI_VALID_TQ; - } - - /* - * If we are currently performing tagged transactions to - * this device and want to change its negotiation parameters, - * go non-tagged for a bit to give the controller a chance to - * negotiate unhampered by tag messages. - */ - if (cts->type == CTS_TYPE_CURRENT_SETTINGS - && (device->inq_flags & SID_CmdQue) != 0 - && (scsi->flags & CTS_SCSI_FLAGS_TAG_ENB) != 0 - && (spi->flags & (CTS_SPI_VALID_SYNC_RATE| - CTS_SPI_VALID_SYNC_OFFSET| - CTS_SPI_VALID_BUS_WIDTH)) != 0) - scsi_toggle_tags(cts->ccb_h.path); - } - if (cts->type == CTS_TYPE_CURRENT_SETTINGS && (scsi->valid & CTS_SCSI_VALID_TQ) != 0) { int device_tagenb;
portmgrSilion Valley, California + 36GB or greater 1" high SCSI hard drives + + Add more capacity to i386 and sparc64 package + building clusters. +
portmgrworldwide + sparc64 gear + + We could specifically use rack-mounted Sparcs (such as + SunFire V120, V210, or V240) for our package building + cluster in the US. +
rpaulo Portugal