From owner-freebsd-ports-bugs@FreeBSD.ORG Mon Aug 11 01:40:06 2008 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0BC71106568A for ; Mon, 11 Aug 2008 01:40:06 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id D93BB8FC19 for ; Mon, 11 Aug 2008 01:40:05 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m7B1e54L063262 for ; Mon, 11 Aug 2008 01:40:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m7B1e5FN063261; Mon, 11 Aug 2008 01:40:05 GMT (envelope-from gnats) Resent-Date: Mon, 11 Aug 2008 01:40:05 GMT Resent-Message-Id: <200808110140.m7B1e5FN063261@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "Alejandro Pulver" Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3188B1065670 for ; Mon, 11 Aug 2008 01:38:32 +0000 (UTC) (envelope-from alepulver@FreeBSD.org) Received: from relay03.pair.com (relay03.pair.com [209.68.5.17]) by mx1.freebsd.org (Postfix) with SMTP id B90488FC1E for ; Mon, 11 Aug 2008 01:38:31 +0000 (UTC) (envelope-from alepulver@FreeBSD.org) Received: (qmail 85058 invoked from network); 11 Aug 2008 01:11:49 -0000 Received: from unknown (HELO deimos.mars.bsd) (unknown) by unknown with SMTP; 11 Aug 2008 01:11:49 -0000 Message-Id: <1218417122.57453@deimos.mars.bsd> Date: Sun, 10 Aug 2008 22:12:02 -0300 From: "Alejandro Pulver" To: "FreeBSD gnats submit" X-Send-Pr-Version: gtk-send-pr 0.4.9 Cc: Subject: ports/126439: [UPDATE] sysutils/ntfsprogs: update to version 2.0.0 with write support X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Aug 2008 01:40:06 -0000 >Number: 126439 >Category: ports >Synopsis: [UPDATE] sysutils/ntfsprogs: update to version 2.0.0 with write support >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Mon Aug 11 01:40:05 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Alejandro Pulver >Release: FreeBSD 7.0-STABLE i386 >Organization: >Environment: System: FreeBSD 7.0-STABLE #1: Thu Mar 13 17:36:42 ART 2008 root@deimos.mars.bsd:/usr/obj/usr/src/sys/PHOBOS-7 >Description: - Update to version 2.0.0. - Use SF macro. - Add port specific README about FUSE/UBLIO. >How-To-Repeat: >Fix: --- ntfsprogs.diff begins here --- Index: ntfsprogs/Makefile =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/Makefile,v retrieving revision 1.33 diff -u -r1.33 Makefile --- ntfsprogs/Makefile 19 Apr 2008 17:53:46 -0000 1.33 +++ ntfsprogs/Makefile 11 Aug 2008 01:09:23 -0000 @@ -6,60 +6,43 @@ # PORTNAME= ntfsprogs -PORTVERSION= 1.13.1 -PORTREVISION= 5 +PORTVERSION= 2.0.0 CATEGORIES= sysutils -MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} +MASTER_SITES= SF MASTER_SITE_SUBDIR= linux-ntfs MAINTAINER= farrokhi@FreeBSD.org COMMENT= Utilities and library to manipulate NTFS partitions WANT_GNOME= yes +USE_BZIP2= yes USE_LDCONFIG= yes GNU_CONFIGURE= yes -CONFIGURE_ARGS= --program-transform-name="" -CONFIGURE_ENV= PKG_CONFIG=${LOCALBASE}/bin/pkg-config \ - CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib" +CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib" CONFIGURE_TARGET= --build=${ARCH}-portbld-freebsd${OSREL} -OPTIONS= FUSE "Compile with Fuse interface" off \ +OPTIONS= FUSE "Build FUSE interface (ntfsmount)" on \ GNOMEVFS2 "Install GnomeVFS 2.0 libntfs interface" off \ - LOCK "Lock the device when mounting (avoids access)" off \ - UBLIO "Enable user space cache for improved speed" on - -MAN8= libntfs-gnomevfs.8 \ - mkntfs.8 \ - ntfscat.8 \ - ntfsclone.8 \ - ntfscluster.8 \ - ntfscmp.8 \ - ntfscp.8 \ - ntfsfix.8 \ - ntfsinfo.8 \ - ntfslabel.8 \ - ntfsls.8 \ - ntfsmount.8 \ - ntfsprogs.8 \ - ntfsresize.8 \ - ntfsundelete.8 - -MLINKS= mkntfs.8 mkfs.ntfs.8 + LOCK "Lock the device when mounting (avoids access)" on \ + UBLIO "Enable user space cache for improved speed" on \ + UUID "Generate DCE compliant UUIDs" off + +MAN8= libntfs.8 libntfs-gnomevfs.8 mkntfs.8 \ + ntfscat.8 ntfsclone.8 ntfscluster.8 ntfscmp.8 \ + ntfscp.8 ntfsfix.8 ntfsinfo.8 ntfslabel.8 ntfsls.8 ntfsmount.8 \ + ntfsprogs.8 ntfsresize.8 ntfsundelete.8 .include .if defined(WITH_FUSE) || defined(WITH_UBLIO) SUB_FILES+= pkg-message - -post-install: - @${ECHO_CMD}; ${CAT} ${PKGMESSAGE}; ${ECHO_CMD} .endif .if defined(WITH_FUSE) +BUILD_DEPENDS+= fusefs-libs>2.5:${PORTSDIR}/sysutils/fusefs-libs +USE_GNOME+= pkgconfig CONFIGURE_ARGS+=--enable-fuse-module PLIST_SUB+= FUSE="" -USE_GNOME+= pkgconfig -BUILD_DEPENDS+= fusefs-libs>2.5:${PORTSDIR}/sysutils/fusefs-libs MLINKS+= ntfsmount.8 mount_ntfs-fuse.8 .else CONFIGURE_ARGS+=--disable-fuse-module @@ -79,6 +62,13 @@ CFLAGS+= -DUSE_LOCK .endif +.if defined(WITH_UUID) +LIB_DEPENDS+= uuid.1:${PORTSDIR}/misc/e2fsprogs-libuuid +CONFIGURE_ARGS+=--enable-uuid +.else +CONFIGURE_ARGS+=--disable-uuid +.endif + .if defined(WITH_UBLIO) LIB_DEPENDS+= ublio.1:${PORTSDIR}/devel/libublio CFLAGS+= -DUSE_UBLIO @@ -89,16 +79,20 @@ @${ECHO_MSG} .endif -post-patch: - @${REINPLACE_CMD} -e 's|$$(DESTDIR)/sbin|$$(DESTDIR)/${PREFIX}/sbin|' \ - ${WRKSRC}/ntfsprogs/Makefile.in - @${REINPLACE_CMD} -e \ - 's|$$(libdir)/\(gnome-vfs-2.0/modules\)|${LOCALBASE}/lib/\1|; \ - s|$$(sysconfdir)/\(gnome-vfs-2.0/modules\)|${LOCALBASE}/etc/\1|' \ - ${WRKSRC}/libntfs/Makefile.in .if defined(WITH_UBLIO) +post-patch: @${REINPLACE_CMD} -e 's|^libntfs_la_LIBADD =|& -lublio|' \ ${WRKSRC}/libntfs/Makefile.in .endif +post-install: +.if !defined(NOPORTDOCS) + ${MKDIR} ${DOCSDIR} + ${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR} + ${INSTALL_DATA} ${FILESDIR}/README.FreeBSD ${DOCSDIR} +.endif +.if defined(WITH_FUSE) || defined(WITH_UBLIO) + @${ECHO_CMD}; ${CAT} ${PKGMESSAGE}; ${ECHO_CMD} +.endif + .include Index: ntfsprogs/distinfo =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/distinfo,v retrieving revision 1.7 diff -u -r1.7 distinfo --- ntfsprogs/distinfo 18 Aug 2006 20:52:48 -0000 1.7 +++ ntfsprogs/distinfo 11 Aug 2008 01:09:23 -0000 @@ -1,3 +1,3 @@ -MD5 (ntfsprogs-1.13.1.tar.gz) = 23160eb8d34abe3d2a88cd6d054faa47 -SHA256 (ntfsprogs-1.13.1.tar.gz) = d89f90e6b565d6fc0ebaf190799ea40fc1e25329dd120dff0c85db65f9af42b6 -SIZE (ntfsprogs-1.13.1.tar.gz) = 870260 +MD5 (ntfsprogs-2.0.0.tar.bz2) = 2b39dece8897bc748f4ab4c40ec7699e +SHA256 (ntfsprogs-2.0.0.tar.bz2) = ad36e19706c7303b10aa0a9bf2c2dd0309b91cd0171f1c9eb361d94a85017432 +SIZE (ntfsprogs-2.0.0.tar.bz2) = 678114 Index: ntfsprogs/pkg-descr =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/pkg-descr,v retrieving revision 1.3 diff -u -r1.3 pkg-descr --- ntfsprogs/pkg-descr 30 Oct 2007 03:22:03 -0000 1.3 +++ ntfsprogs/pkg-descr 11 Aug 2008 01:09:23 -0000 @@ -1,12 +1,12 @@ -The goals of this project are: create a new Linux kernel driver for the NTFS -file system (v1.2 and later 3.0), user space utilities (e.g. format, ntfs -check, etc.) and a library to avoid code duplication and provide access to -NTFS to other GPLed programs. +The goals of the Linux-NTFS project are to develop reliable and full feature +access to NTFS by the Linux kernel driver and by a user space driver +(ntfsmount), and to provide a wide collection of NTFS utilities and a +developer's library for other GPLed programs. We have already achieved a lot, +with high quality results. Includes the following: -It includes a read-only fusefs driver to mount NTFS volumes, but a read-write -version exists in sysutils/fusefs-ntfs. They can be installed simultaneously. +ntfsmount: fast, reliable, read/write, userspace. +ntfsprogs: various tools for managing ntfs, namely mkntfs, ntfsresize, + ntfsclone, ntfsfix, ntfsundelete, ntfswipe and ntfsdecrypt. -WWW: http://www.linux-ntfs.org/ -- Florent Thoumie -flz@xbsd.org +WWW: http://www.linux-ntfs.org/ Index: ntfsprogs/pkg-plist =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/pkg-plist,v retrieving revision 1.14 diff -u -r1.14 pkg-plist --- ntfsprogs/pkg-plist 19 Apr 2008 17:53:46 -0000 1.14 +++ ntfsprogs/pkg-plist 11 Aug 2008 01:09:23 -0000 @@ -5,8 +5,8 @@ bin/ntfsinfo bin/ntfsls %%FUSE%%bin/ntfsmount -%%FUSE%%@exec ln -fs %D/%F /usr/sbin/mount_ntfs-fuse -%%FUSE%%@unexec rm -f /usr/sbin/mount_ntfs-fuse +%%FUSE%%@exec ln -fs %D/%F /usr/sbin/mount_fuse-ntfs +%%FUSE%%@unexec rm -f /usr/sbin/mount_fuse-ntfs include/ntfs/attrib.h include/ntfs/attrlist.h include/ntfs/bitmap.h @@ -14,14 +14,15 @@ include/ntfs/collate.h include/ntfs/compat.h include/ntfs/compress.h +include/ntfs/crypto.h include/ntfs/debug.h include/ntfs/device.h include/ntfs/device_io.h include/ntfs/dir.h -include/ntfs/index.h include/ntfs/endians.h include/ntfs/gnome-vfs-method.h include/ntfs/gnome-vfs-module.h +include/ntfs/index.h include/ntfs/inode.h include/ntfs/layout.h include/ntfs/lcnalloc.h @@ -31,11 +32,9 @@ include/ntfs/mft.h include/ntfs/mst.h include/ntfs/ntfstime.h -include/ntfs/rich.h include/ntfs/runlist.h include/ntfs/security.h include/ntfs/support.h -include/ntfs/tree.h include/ntfs/types.h include/ntfs/unistr.h include/ntfs/version.h @@ -43,17 +42,19 @@ lib/libntfs.a lib/libntfs.la lib/libntfs.so -lib/libntfs.so.9 +lib/libntfs.so.10 sbin/mkntfs -sbin/mkfs.ntfs sbin/ntfsclone sbin/ntfscp sbin/ntfslabel sbin/ntfsresize sbin/ntfsundelete -@dirrm include/ntfs %%GNOMEVFS2%%etc/gnome-vfs-2.0/modules/libntfs.conf %%GNOMEVFS2%%lib/gnome-vfs-2.0/modules/libntfs-gnomevfs.a %%GNOMEVFS2%%lib/gnome-vfs-2.0/modules/libntfs-gnomevfs.la %%GNOMEVFS2%%lib/gnome-vfs-2.0/modules/libntfs-gnomevfs.so %%GNOMEVFS2%%lib/gnome-vfs-2.0/modules/libntfs-gnomevfs.so.1 +%%PORTDOCS%%%%DOCSDIR%%/README +%%PORTDOCS%%%%DOCSDIR%%/README.FreeBSD +@dirrm include/ntfs +%%PORTDOCS%%@dirrm %%DOCSDIR%% Index: ntfsprogs/files/README.FreeBSD =================================================================== RCS file: ntfsprogs/files/README.FreeBSD diff -N ntfsprogs/files/README.FreeBSD --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ntfsprogs/files/README.FreeBSD 11 Aug 2008 01:09:23 -0000 @@ -0,0 +1,151 @@ +============================================================================== +Linux-NTFS README for the FreeBSD port +============================================================================== + +1. Introduction +2. Port specific notes +3. Mounting at startup with /etc/fstab +4. Ublio configuration +5. Known issues +6. Reporting bugs + +============================================================================== +1. Introduction +============================================================================== + +The Linux-NTFS project provides a read/write filesystem driver for NTFS. It uses +the FUSE library (a OS independent library to create filesystem drivers), more +precisely FUSE's library with fuse4bsd's kernel module (port of the kernel +dependent part of FUSE). For more information see: + +Linux-NTFS site: http://www.linux-ntfs.org/ +FUSE site: http://fuse.sourceforge.net/ +fuse4bsd site: http://fuse4bsd.creo.hu/ + +============================================================================== +2. Port specific notes +============================================================================== + +The port has a patch to align read/write operations to the media block size +(required on FreeBSD). + +The port has 3 related options: FUSE (build driver to mount NTFS filesystems), +LOCK (to prevent access to the device by external programs than ntfsmount once +mounted, default on Linux) and UBLIO (use a user space cache library, see +devel/libublio, not required on Linux). + +The reason for using UBLIO is that FreeBSD removed support for block devices, +being them now character devices. The former ones had a cache, and Linux-NTFS +was optimized for it (Linux still uses them). The same happens on Mac OS X +(based on FreeBSD 5). So using UBLIO both improves performance (~10 times +faster), and reduces disk load. + +============================================================================== +3. Mounting at startup with /etc/fstab +============================================================================== + +To mount at startup you need to have the following line in /etc/rc.conf: + +fusefs_enable="YES" + +And add the appropiate line to /etc/fstab: the filesystem should be +"ntfs-fuse" instead of "ntfs", and the additional "late" parameter is +required. Example: + +/dev/ad4s1 /wxp ntfs-fuse rw,late 0 0 + +Note that in FreeBSD 7.x, mount(8) has a fixed (hard coded) list of external +mount_XXX programs that can be called, so to make this work you have to do one +of the following: + +1. Rename /sbin/mount_ntfs, symlink ntfsmount as the former, and use just + "ntfs" as the type in /etc/fstab. + # mv /sbin/mount_ntfs /sbin/mount_ntfs-kern + # ln -s /usr/sbin/mount_ntfs-fuse /usr/sbin/mount_ntfs +2. Apply a patch to src/sbin/mount/mount.c to add "ntfs-fuse" as a valid type. +3. Apply a patch to src/sbin/mount/mount.c to make it work like in 6.x (better + than the previous one as will allow any external type). It can be found at: + http://people.freebsd.org/~alepulver/current-7.0-mount.diff + +============================================================================== +4. Ublio configuration +============================================================================== + +The UBLIO layer is configured through environment variables, which are read +when mounting the filesystem. The following are available: + +NTFS_USE_UBLIO - Enable the UBLIO cache. +UBLIO_BLOCKSIZE - Actual reads/writes will be multiples of this quantity. +UBLIO_ITEMS - Number of cache entries, each of UBLIO_BLOCKSIZE length. +UBLIO_GRACE - Number of times a cache entry will refuse being recycled. +UBLIO_SYNC_IO - If enabled, all writes will be immediatly executed. + +To give an idea about tuning, here are the default values with some notes +(they are only based on some simple benchmarks, and may be wrong): + +NTFS_USE_UBLIO - 1. Disabling it drastically decreases performance. +UBLIO_BLOCKSIZE - 262144 (256KB). Larger improves reading/writing speed of + large files, and smaller makes filesystem operations + (creation, deletion, moving, find(1)) perform faster. + Try 2/4MB and 512/256KB for the different approaches. Note + that after that points performance descreases again. +UBLIO_ITEMS - 64. Higher increases speed of filesystem operations. Try 128. +UBLIO_GRACE - 32. Makes the cache items have more chances to be reused. +UBLIO_SYNC_IO - 0. If enabled, highly decreases writing speed, but the data + is immediatly written to the disk. + +For example (improves performance over large files, but read below): + +# env UBLIO_BLOCKSIZE=2097152 ntfsmount /dev/ad0s1 /mnt + +Alternatively these variables could be set in the shell startup file. For +example if you are using it in /etc/fstab add them to /etc/profile. If you use +it as a user, instead, editing the shell startup in HOME is enough. + +Note that higher values for UBLIO_BLOCKSIZE and UBLIO_ITEMS increase the +memory usage by their product in bytes. For example, if you set it to 1MB it +would consume 64MB. To decrease it to 16MB you could set UBLIO_BLOCKSIZE to +256KB (currently this is the default). Small values like 4096 can be used and +also perform fine. + +It is also possible to enforce block aligned I/O on regular files by setting +the FORCE_ALIGNED_IO variable (it will be set to 512 bytes), but this is only +useful for testing purposes and in practice has no use. + +============================================================================== +5. Known issues +============================================================================== + +When reading/writting the same file repeatedly while doing many simultaneous +operations on different files sometimes the former one fails: read(2) returns +-1 and sets errno to EAGAIN. This is because of a difference between the FUSE +kernel implementation in Linux and FreeBSD, and is being worked on. An example +scenario would be playing a song in XMMS, while building many ports, which +could cause XMMS skip the song. Another observed problem is the current +directory not being found, but entering again would work. The details are +described in fuse4bsd (sysutils/fusefs-kmod) documentation (Linux access is +path based while FreeBSD is vnode based, which may be reused). + +============================================================================== +6. Reporting bugs +============================================================================== + +About the port itself, you can ask the maintainer (preferable) and/or in the +ports@FreeBSD.org mailing list. + +About general NTFS problems (corruptions, etc) ask in the Linux-NTFS forum +(see below). + +But often (even on Linux, 50% of the issues are related to these) the problems +reside on the FUSE implementation (the library itself, or fuse4bsd portion). + +For reporting kernel panics, see: + +http://fuse.sourceforge.net/wiki/index.php/DebugFreeBSDPanicsHowto + +And you can report them to the fuse4bsd author (preferable), or here: + +Linux-NTFS forum: http://forum.linux-ntfs.org/ +FreeBSD PRs: http://www.freebsd.org/send-pr.html + +============================================================================== Index: ntfsprogs/files/patch-libntfs-device_io.c =================================================================== RCS file: ntfsprogs/files/patch-libntfs-device_io.c diff -N ntfsprogs/files/patch-libntfs-device_io.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ ntfsprogs/files/patch-libntfs-device_io.c 11 Aug 2008 01:09:23 -0000 @@ -0,0 +1,14 @@ +--- libntfs/device_io.c.orig 2007-09-26 15:28:34.000000000 -0300 ++++ libntfs/device_io.c 2008-08-10 20:27:34.000000000 -0300 +@@ -28,11 +28,6 @@ + /* On Cygwin; use Win32 low level device operations. */ + #include "win32_io.c" + +-#elif defined(__FreeBSD__) +- +-/* On FreeBSD; need to use sector aligned i/o. */ +-#include "freebsd_io.c" +- + #else + + /* Index: ntfsprogs/files/patch-libntfs-unix_io.c =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/files/patch-libntfs-unix_io.c,v retrieving revision 1.1 diff -u -r1.1 patch-libntfs-unix_io.c --- ntfsprogs/files/patch-libntfs-unix_io.c 30 Oct 2007 03:22:04 -0000 1.1 +++ ntfsprogs/files/patch-libntfs-unix_io.c 11 Aug 2008 01:09:23 -0000 @@ -1,5 +1,5 @@ ---- libntfs/unix_io.c.orig Fri Feb 3 23:42:42 2006 -+++ libntfs/unix_io.c Mon Sep 10 17:56:18 2007 +--- ./libntfs/unix_io.c.orig 2007-09-26 15:28:34.000000000 -0300 ++++ ./libntfs/unix_io.c 2008-08-10 17:44:16.000000000 -0300 @@ -54,19 +54,112 @@ #include #endif @@ -114,7 +114,7 @@ /** * ntfs_device_unix_io_open - Open a device and lock it exclusively * @dev: -@@ -78,30 +171,87 @@ +@@ -78,24 +171,76 @@ */ static int ntfs_device_unix_io_open(struct ntfs_device *dev, int flags) { @@ -128,7 +128,6 @@ - int err; + struct unix_filehandle *ufh; + int err = 0; -+ int is_special = 0; +#if USE_UBLIO + struct ublio_param up; + int use_ublio = 0; @@ -139,14 +138,13 @@ errno = EBUSY; return -1; } -- if (!(dev->d_private = malloc(sizeof(int)))) -+ -+ if (S_ISBLK(sbuf.st_mode) || S_ISCHR(sbuf.st_mode)) -+ is_special = 1; +- if (!(dev->d_private = ntfs_malloc(sizeof(int)))) + + ufh = malloc(sizeof(*ufh)); + if (!ufh) return -1; +- *(int*)dev->d_private = open(dev->d_name, flags); +- if (*(int*)dev->d_private == -1) { + dev->d_private = ufh; +#if USE_ALIGNED_IO + ufh->fd = -1; @@ -155,15 +153,6 @@ + ufh->media_size = 0; +#endif + - /* - * Open the device/file obtaining the file descriptor for exclusive - * access (but only if mounting r/w). - */ -- if ((flags & O_RDWR) == O_RDWR) -+ if (!is_special && (flags & O_RDWR) == O_RDWR) - flags |= O_EXCL; -- *(int*)dev->d_private = open(dev->d_name, flags); -- if (*(int*)dev->d_private == -1) { + ufh->fd = open(dev->d_name, flags); + if (ufh->fd == -1) { err = errno; @@ -172,7 +161,6 @@ /* Setup our read-only flag. */ if ((flags & O_RDWR) != O_RDWR) NDevSetReadOnly(dev); -+ +#if USE_UBLIO + ufh->ublio_fh = NULL; + if ((xenv = getenv("NTFS_USE_UBLIO")) && @@ -207,7 +195,7 @@ /* Acquire exclusive (mandatory) lock on the whole device. */ memset(&flk, 0, sizeof(flk)); if (NDevReadOnly(dev)) -@@ -110,7 +260,21 @@ +@@ -104,7 +249,21 @@ flk.l_type = F_WRLCK; flk.l_whence = SEEK_SET; flk.l_start = flk.l_len = 0LL; @@ -228,10 +216,10 @@ +#if USE_LOCK + if (!NDevBlock(dev) && fcntl(DEV_FD(dev), F_SETLK, &flk)) { err = errno; - ntfs_log_debug("ntfs_device_unix_io_open: Could not lock %s for %s\n", - dev->d_name, NDevReadOnly(dev) ? "reading" : "writing"); -@@ -119,6 +283,16 @@ - "close %s", dev->d_name); + ntfs_log_debug("ntfs_device_unix_io_open: Could not lock %s " + "for %s\n", dev->d_name, NDevReadOnly(dev) ? +@@ -114,6 +273,16 @@ + "Could not close %s", dev->d_name); goto err_out; } +#endif @@ -247,7 +235,7 @@ /* Determine if device is a block device or not, ignoring errors. */ if (!fstat(DEV_FD(dev), &sbuf) && S_ISBLK(sbuf.st_mode)) NDevSetBlock(dev); -@@ -142,7 +316,10 @@ +@@ -137,7 +306,10 @@ */ static int ntfs_device_unix_io_close(struct ntfs_device *dev) { @@ -258,7 +246,7 @@ if (!NDevOpen(dev)) { errno = EBADF; -@@ -150,14 +327,20 @@ +@@ -145,14 +317,20 @@ } if (NDevDirty(dev)) fsync(DEV_FD(dev)); @@ -280,7 +268,7 @@ /* Close the file descriptor and clear our open flag. */ if (close(DEV_FD(dev))) return -1; -@@ -180,10 +363,235 @@ +@@ -175,9 +353,234 @@ static s64 ntfs_device_unix_io_seek(struct ntfs_device *dev, s64 offset, int whence) { @@ -317,8 +305,8 @@ +#else return lseek(DEV_FD(dev), offset, whence); +#endif -+} -+ + } + +#if USE_ALIGNED_IO + +#if USE_UBLIO @@ -400,9 +388,9 @@ + if (nr > count) + nr = count; + return nr; - } - - /** ++} ++ ++/** + * aligned_pwrite - Perform an aligned positioned write from the device + */ +static s64 aligned_pwrite(struct ntfs_device *dev, void *buf, s64 count, s64 offset) @@ -512,11 +500,10 @@ + +#endif + -+/** + /** * ntfs_device_unix_io_read - Read from the device, from the current location * @dev: - * @buf: -@@ -196,6 +604,29 @@ +@@ -191,6 +594,29 @@ static s64 ntfs_device_unix_io_read(struct ntfs_device *dev, void *buf, s64 count) { @@ -546,7 +533,7 @@ return read(DEV_FD(dev), buf, count); } -@@ -217,6 +648,28 @@ +@@ -212,6 +638,28 @@ return -1; } NDevSetDirty(dev); @@ -575,7 +562,7 @@ return write(DEV_FD(dev), buf, count); } -@@ -234,6 +687,13 @@ +@@ -229,6 +677,13 @@ static s64 ntfs_device_unix_io_pread(struct ntfs_device *dev, void *buf, s64 count, s64 offset) { @@ -586,10 +573,10 @@ + return ublio_pread(DEV_HANDLE(dev)->ublio_fh, buf, count, + offset); +#endif - return ntfs_pread(dev, offset, count, buf); + return pread(DEV_FD(dev), buf, count, offset); } -@@ -256,6 +716,13 @@ +@@ -251,6 +706,13 @@ return -1; } NDevSetDirty(dev); @@ -600,10 +587,10 @@ + return ublio_pwrite(DEV_HANDLE(dev)->ublio_fh, (void *)buf, + count, offset); +#endif - return ntfs_pwrite(dev, offset, count, buf); + return pwrite(DEV_FD(dev), buf, count, offset); } -@@ -269,8 +736,17 @@ +@@ -264,8 +726,17 @@ */ static int ntfs_device_unix_io_sync(struct ntfs_device *dev) { Index: ntfsprogs/files/patch-ntfsprogs-Makefile.in =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/files/patch-ntfsprogs-Makefile.in,v retrieving revision 1.1 diff -u -r1.1 patch-ntfsprogs-Makefile.in --- ntfsprogs/files/patch-ntfsprogs-Makefile.in 30 Oct 2007 03:22:04 -0000 1.1 +++ ntfsprogs/files/patch-ntfsprogs-Makefile.in 11 Aug 2008 01:09:23 -0000 @@ -1,19 +1,21 @@ ---- ntfsprogs/Makefile.in.orig Wed Jun 21 05:41:46 2006 -+++ ntfsprogs/Makefile.in Mon Sep 10 15:47:08 2007 -@@ -914,13 +914,14 @@ +--- ntfsprogs/Makefile.in.orig 2007-09-28 19:12:39.000000000 -0300 ++++ ntfsprogs/Makefile.in 2008-08-10 20:53:50.000000000 -0300 +@@ -1072,15 +1072,12 @@ install-exec-hook: $(INSTALL) -d $(DESTDIR)/sbin +- $(LN_S) -f $(sbindir)/mkntfs $(DESTDIR)/sbin/mkfs.ntfs +-@ENABLE_FUSE_TRUE@ $(LN_S) -f $(bindir)/ntfsmount $(DESTDIR)/sbin/mount.ntfs-fuse +-@ENABLE_FUSE_TRUE@ $(LN_S) -f $(bindir)/ntfsmount $(DESTDIR)/sbin/mount.fuse.ntfs + $(INSTALL) -d $(DESTDIR)/usr/sbin - $(LN_S) -f $(sbindir)/mkntfs $(DESTDIR)/sbin/mkfs.ntfs --@ENABLE_FUSE_MODULE_TRUE@ $(LN_S) -f $(bindir)/ntfsmount $(DESTDIR)/sbin/mount.ntfs-fuse -+@ENABLE_FUSE_MODULE_TRUE@ $(LN_S) -f $(bindir)/ntfsmount $(DESTDIR)/usr/sbin/mount_ntfs-fuse ++@ENABLE_FUSE_TRUE@ $(LN_S) -f $(bindir)/ntfsmount $(DESTDIR)/usr/sbin/mount_ntfs-fuse install-data-hook: $(INSTALL) -d $(DESTDIR)$(man8dir) - $(LN_S) -f mkntfs.8 $(DESTDIR)$(man8dir)/mkfs.ntfs.8 --@ENABLE_FUSE_MODULE_TRUE@ $(LN_S) -f ntfsmount.8 $(DESTDIR)$(man8dir)/mount.ntfs-fuse.8 -+@ENABLE_FUSE_MODULE_TRUE@ $(LN_S) -f ntfsmount.8 $(DESTDIR)$(man8dir)/mount_ntfs-fuse.8 +- $(LN_S) -f mkntfs.8 $(DESTDIR)$(man8dir)/mkfs.ntfs.8 +-@ENABLE_FUSE_TRUE@ $(LN_S) -f ntfsmount.8 $(DESTDIR)$(man8dir)/mount.ntfs-fuse.8 +-@ENABLE_FUSE_TRUE@ $(LN_S) -f ntfsmount.8 $(DESTDIR)$(man8dir)/mount.fuse.ntfs.8 ++@ENABLE_FUSE_TRUE@ $(LN_S) -f ntfsmount.8 $(DESTDIR)$(man8dir)/mount_ntfs-fuse.8 uninstall-local: $(RM) -f $(DESTDIR)/sbin/mkfs.ntfs Index: ntfsprogs/files/pkg-message.in =================================================================== RCS file: /home/pcvs/ports/sysutils/ntfsprogs/files/pkg-message.in,v retrieving revision 1.1 diff -u -r1.1 pkg-message.in --- ntfsprogs/files/pkg-message.in 30 Oct 2007 03:22:04 -0000 1.1 +++ ntfsprogs/files/pkg-message.in 11 Aug 2008 01:09:23 -0000 @@ -1,13 +1,10 @@ ============================================================================== -If UBLIO (cache for improving performance) was enabled, see the following to -know more about it: "ports/sysutils/fusefs-ntfs/files/pkg-message.in" (only -the relevant parts). +Linux-NTFS has been installed, for information, known issues and how to report +bugs see the FreeBSD README (describes FUSE and UBLIO options): -If FUSE (mount support) was enabled, note that there is no write capability -and does not allow to browse directories with programs like the GTK+ file -browser, Midnight Commander, etc. So for mounting it's better to use -"sysutils/fusefs-ntfs". Note that the mount(8) filesystem type installed by -this port is called "ntfs-fuse". +%%DOCSDIR%%/README.FreeBSD + +Also see the official README (platform independent). ============================================================================== --- ntfsprogs.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: