From owner-svn-ports-head@FreeBSD.ORG Fri Jan 25 21:30:25 2013 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id A21FBF7C; Fri, 25 Jan 2013 21:30:25 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 8FAC2AF8; Fri, 25 Jan 2013 21:30:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r0PLUPtt027558; Fri, 25 Jan 2013 21:30:25 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r0PLUO55027556; Fri, 25 Jan 2013 21:30:24 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201301252130.r0PLUO55027556@svn.freebsd.org> From: Xin LI Date: Fri, 25 Jan 2013 21:30:24 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r310988 - in head/net/iet: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Jan 2013 21:30:25 -0000 Author: delphij Date: Fri Jan 25 21:30:24 2013 New Revision: 310988 URL: http://svnweb.freebsd.org/changeset/ports/310988 Log: Add a workaround for r231949 which fixes the problem of uio_resid being truncated into int but introduced an KPI/KBI change. While I'm there, also add code to support the now MPSAFE VFS. Added: head/net/iet/files/patch-freebsd10 (contents, props changed) Modified: head/net/iet/Makefile Modified: head/net/iet/Makefile ============================================================================== --- head/net/iet/Makefile Fri Jan 25 21:10:02 2013 (r310987) +++ head/net/iet/Makefile Fri Jan 25 21:30:24 2013 (r310988) @@ -7,7 +7,7 @@ PORTNAME= iet PORTVERSION= 1.4.20.2 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= net MASTER_SITES= SF/iscsitarget/iscsitarget/${PORTVERSION}/ DISTNAME= iscsitarget-${PORTVERSION} Added: head/net/iet/files/patch-freebsd10 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/iet/files/patch-freebsd10 Fri Jan 25 21:30:24 2013 (r310988) @@ -0,0 +1,222 @@ +--- kernel/iscsi.c.orig 2013-01-25 12:58:06.191784106 -0800 ++++ kernel/iscsi.c 2013-01-25 12:58:45.785782759 -0800 +@@ -1963,7 +1963,7 @@ + return ctr_major; + } + #else +- ietdev = make_dev(&iet_csw, 0, UID_ROOT, GID_WHEEL, 0550, ctr_name); ++ ietdev = make_dev(&iet_csw, 0, UID_ROOT, GID_WHEEL, 0550, "%s", ctr_name); + #endif + + #ifdef LINUX +--- kernel/block-io.c.orig 2013-01-25 12:58:06.194781035 -0800 ++++ kernel/block-io.c 2013-01-25 12:58:45.786780433 -0800 +@@ -260,7 +260,9 @@ + int flags = FMODE_READ | (LUReadonly(volume) ? 0 : FMODE_WRITE); + int vaccess; + int error; ++#if defined(NDHASGIANT) + int vfslocked; ++#endif + struct vnode *devvp = NULL; + struct g_provider *pp; + struct g_geom *gp; +@@ -270,13 +272,19 @@ + if (!bio_data->path) + return -(ENOMEM); + ++#if defined(MPSAFE) + NDINIT(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, path, curthread); ++#else ++ NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, path, curthread); ++#endif + error = vn_open(&nd, &flags, 0, NULL); + if (error) { + eprintk("failed to open disk %s error %d\n", path, error); + return -(error); + } ++#if defined(NDHASGIANT) + vfslocked = NDHASGIANT(&nd); ++#endif + NDFREE(&nd, NDF_ONLY_PNBUF); + + devvp = nd.ni_vp; +@@ -321,7 +329,9 @@ + g_topology_unlock(); + bio_data->bdev = devvp; + VOP_UNLOCK(devvp, 0); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return 0; + + gcleanup: /* On geom errors */ +@@ -331,7 +341,9 @@ + failed: + VOP_UNLOCK(devvp, 0); + (void)vn_close(devvp, flags, curthread->td_ucred, curthread); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return -(error); + } + #endif +@@ -439,11 +451,15 @@ + } + + if (bio_data->bdev) { ++#if defined(NDHASGIANT) + int vfslocked; + + vfslocked = VFS_LOCK_GIANT(bio_data->bdev->v_mount); ++#endif + (void)vn_close(bio_data->bdev, flags, curthread->td_ucred, curthread); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + } + + if (bio_data->path) +--- kernel/file-io.c.orig 2013-01-25 12:58:06.197782092 -0800 ++++ kernel/file-io.c 2013-01-25 13:01:32.708794758 -0800 +@@ -24,8 +24,15 @@ + struct file *filp; + #else + struct vnode *vp; ++#if defined(NDHASGIANT) + int vfslocked; +- int error, aresid; ++#endif ++ int error; ++#if ((__FreeBSD_version < 1000000 && __FreeBSD_version >= 900506) || (__FreeBSD_version >= 1000009)) ++ ssize_t aresid; ++#else ++ int aresid; ++#endif + #endif + struct fileio_data *p = lu->private; + page_t *page; +@@ -40,8 +47,10 @@ + filp = p->filp; + #else + vp = p->filevp; ++#if defined(NDHASGIANT) + vfslocked = VFS_LOCK_GIANT(vp->v_mount); + #endif ++#endif + + size = tio->size; + offset= tio->offset; +@@ -87,8 +96,10 @@ + } + assert(!size); + #ifdef FREEBSD ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); + #endif ++#endif + return err; + } + +@@ -149,12 +160,17 @@ + static int fileio_sync(struct iet_volume *lu, struct tio *tio) + { + struct fileio_data *p = lu->private; +- int vfslocked, error; ++#if defined(NDHASGIANT) ++ int vfslocked; ++#endif ++ int error; + struct vnode *vp; + struct mount *mp; + + vp = p->filevp; ++#if defined(NDHASGIANT) + vfslocked = VFS_LOCK_GIANT(vp->v_mount); ++#endif + if ((error = vn_start_write(vp, &mp, V_WAIT | PCATCH)) != 0) + goto drop; + +@@ -163,7 +179,9 @@ + VOP_UNLOCK(vp, 0); + vn_finished_write(mp); + drop: ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return error; + } + +@@ -174,16 +192,25 @@ + struct nameidata nd; + struct vnode *filevp; + struct vattr vattr; ++#if defined(NDHASGIANT) + int vfslocked; ++#endif + int flags = FMODE_READ | (LUReadonly(volume) ? 0 : FMODE_WRITE); + + info->path = kstrdup(path, GFP_KERNEL); + if (!info->path) + return -ENOMEM; + ++#if defined(NDHASGIANT) + NDINIT(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, path, curthread); ++#else ++ NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, path, curthread); ++#endif + error = namei(&nd); ++#if defined(NDHASGIANT) + vfslocked = NDHASGIANT(&nd); ++#else ++#endif + if (error) { + eprintk("lookup failed for %s err %d\n", path, error); + return -(error); +@@ -193,7 +220,9 @@ + if (filevp->v_type != VREG) { + eprintk("path %s not a regular file\n", path); + NDFREE(&nd, 0); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return -(EINVAL); + } + +@@ -201,7 +230,9 @@ + if (error != 0) { + eprintk("failed to open path %s err %d\n", path, error); + NDFREE(&nd, 0); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return -(error); + } + NDFREE(&nd, NDF_ONLY_PNBUF); +@@ -212,7 +243,9 @@ + VOP_UNLOCK(filevp, 0); + (void)vn_close(filevp, flags, curthread->td_ucred, curthread); + vrele(filevp); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + return -(error); + } + +@@ -300,12 +333,16 @@ + #else + if (p->filevp) { + int flags = FMODE_READ | (LUReadonly(lu) ? 0 : FMODE_WRITE); ++#if defined(NDHASGIANT) + int vfslocked; + + vfslocked = VFS_LOCK_GIANT(p->filevp->v_mount); ++#endif + vn_close(p->filevp, flags, curthread->td_ucred, curthread); + vrele(p->filevp); ++#if defined(NDHASGIANT) + VFS_UNLOCK_GIANT(vfslocked); ++#endif + } + #endif + kfree(p);