From owner-svn-src-stable-9@FreeBSD.ORG Sun Aug 5 23:59:33 2012 Return-Path: Delivered-To: svn-src-stable-9@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E474106566B; Sun, 5 Aug 2012 23:59:33 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 584188FC16; Sun, 5 Aug 2012 23:59:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q75NxXgi054797; Sun, 5 Aug 2012 23:59:33 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q75NxX6A054795; Sun, 5 Aug 2012 23:59:33 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201208052359.q75NxX6A054795@svn.freebsd.org> From: Ken Smith Date: Sun, 5 Aug 2012 23:59:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r239081 - stable/9/sys/sys X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Aug 2012 23:59:33 -0000 Author: kensmith Date: Sun Aug 5 23:59:32 2012 New Revision: 239081 URL: http://svn.freebsd.org/changeset/base/239081 Log: Since releng/9.1 has been copied bump __FreeBSD_version so stable/9 will not have a value lower than what will be in releng/9.1 shortly. Approved by: re (implicit) Modified: stable/9/sys/sys/param.h Modified: stable/9/sys/sys/param.h ============================================================================== --- stable/9/sys/sys/param.h Sun Aug 5 23:54:33 2012 (r239080) +++ stable/9/sys/sys/param.h Sun Aug 5 23:59:32 2012 (r239081) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 900506 /* Master, propagated to newvers */ +#define __FreeBSD_version 901500 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-svn-src-stable-9@FreeBSD.ORG Wed Aug 8 20:21:34 2012 Return-Path: Delivered-To: svn-src-stable-9@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D267106564A; Wed, 8 Aug 2012 20:21:34 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5D9228FC12; Wed, 8 Aug 2012 20:21:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q78KLYeP023753; Wed, 8 Aug 2012 20:21:34 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q78KLYii023749; Wed, 8 Aug 2012 20:21:34 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201208082021.q78KLYii023749@svn.freebsd.org> From: Warner Losh Date: Wed, 8 Aug 2012 20:21:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r239148 - stable/9/sys/geom X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Aug 2012 20:21:34 -0000 Author: imp Date: Wed Aug 8 20:21:33 2012 New Revision: 239148 URL: http://svn.freebsd.org/changeset/base/239148 Log: Make the addition of the d_gone binary compatible. This allows storage drivers compiled for 9.0 to work on 9.1 and preserves the ABI for disks. Reviewed by: scottl, ken Approved by: re@ (kensmith) MFS after: releng/9.1 gets sorted Modified: stable/9/sys/geom/geom_disk.c stable/9/sys/geom/geom_disk.h Modified: stable/9/sys/geom/geom_disk.c ============================================================================== --- stable/9/sys/geom/geom_disk.c Wed Aug 8 20:08:45 2012 (r239147) +++ stable/9/sys/geom/geom_disk.c Wed Aug 8 20:21:33 2012 (r239148) @@ -509,7 +509,14 @@ g_disk_providergone(struct g_provider *p dp = sc->dp; - if (dp->d_gone != NULL) + /* + * FreeBSD 9 started with VERSION_01 of the struct disk structure. + * However, g_gone was added in the middle of the branch. To + * cope with version being missing from struct disk, we set a flag + * in g_disk_create for VERSION_01 and avoid touching the d_gone + * field for old consumers. + */ + if (!(dp->d_flags & DISKFLAG_LACKS_GONE) && dp->d_gone != NULL) dp->d_gone(dp); } @@ -577,7 +584,7 @@ disk_alloc() void disk_create(struct disk *dp, int version) { - if (version != DISK_VERSION_02) { + if (version != DISK_VERSION_02 && version != DISK_VERSION_01) { printf("WARNING: Attempt to add disk %s%d %s", dp->d_name, dp->d_unit, " using incompatible ABI version of disk(9)\n"); @@ -585,6 +592,8 @@ disk_create(struct disk *dp, int version dp->d_name, dp->d_unit); return; } + if (version == DISK_VERSION_01) + dp->d_flags |= DISKFLAG_LACKS_GONE; KASSERT(dp->d_strategy != NULL, ("disk_create need d_strategy")); KASSERT(dp->d_name != NULL, ("disk_create need d_name")); KASSERT(*dp->d_name != 0, ("disk_create need d_name")); Modified: stable/9/sys/geom/geom_disk.h ============================================================================== --- stable/9/sys/geom/geom_disk.h Wed Aug 8 20:08:45 2012 (r239147) +++ stable/9/sys/geom/geom_disk.h Wed Aug 8 20:21:33 2012 (r239148) @@ -78,7 +78,6 @@ struct disk { disk_ioctl_t *d_ioctl; dumper_t *d_dump; disk_getattr_t *d_getattr; - disk_gone_t *d_gone; /* Info fields from driver to geom_disk.c. Valid when open */ u_int d_sectorsize; @@ -97,12 +96,16 @@ struct disk { /* Fields private to the driver */ void *d_drv1; + + /* new fields in stable - don't use if DISKFLAG_LACKS_GONE is set */ + disk_gone_t *d_gone; }; #define DISKFLAG_NEEDSGIANT 0x1 #define DISKFLAG_OPEN 0x2 #define DISKFLAG_CANDELETE 0x4 #define DISKFLAG_CANFLUSHCACHE 0x8 +#define DISKFLAG_LACKS_GONE 0x10 struct disk *disk_alloc(void); void disk_create(struct disk *disk, int version);