summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1998-10-29 09:29:17 +0000
committerpeter <peter@FreeBSD.org>1998-10-29 09:29:17 +0000
commitfd7d7fb526c28cf221ba2f7bc1bca56f68ab1439 (patch)
treed478f5b7fad0b4be8c570239359eaf17901fd35d /sys
parente7e02b314f2f90ed5ebf6edd2403c2edc7753c6e (diff)
downloadFreeBSD-src-fd7d7fb526c28cf221ba2f7bc1bca56f68ab1439.zip
FreeBSD-src-fd7d7fb526c28cf221ba2f7bc1bca56f68ab1439.tar.gz
Use vtruncbuf() rather than vinvalbuf() when shortening files.
Diffstat (limited to 'sys')
-rw-r--r--sys/fs/msdosfs/msdosfs_denode.c15
-rw-r--r--sys/msdosfs/msdosfs_denode.c15
2 files changed, 18 insertions, 12 deletions
diff --git a/sys/fs/msdosfs/msdosfs_denode.c b/sys/fs/msdosfs/msdosfs_denode.c
index 63b878a..499e00a 100644
--- a/sys/fs/msdosfs/msdosfs_denode.c
+++ b/sys/fs/msdosfs/msdosfs_denode.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_denode.c,v 1.38 1998/05/17 18:09:28 bde Exp $ */
+/* $Id: msdosfs_denode.c,v 1.39 1998/08/17 19:09:36 bde Exp $ */
/* $NetBSD: msdosfs_denode.c,v 1.28 1998/02/10 14:10:00 mrg Exp $ */
/*-
@@ -408,7 +408,6 @@ detrunc(dep, length, flags, cred, p)
{
int error;
int allerror;
- int vflags;
u_long eofentry;
u_long chaintofree;
daddr_t bn;
@@ -507,10 +506,14 @@ detrunc(dep, length, flags, cred, p)
dep->de_FileSize = length;
if (!isadir)
dep->de_flag |= DE_UPDATE|DE_MODIFIED;
- vflags = (length > 0 ? V_SAVE : 0) | V_SAVEMETA;
- vinvalbuf(DETOV(dep), vflags, cred, p, 0, 0);
- vnode_pager_setsize(DETOV(dep), length);
- allerror = deupdat(dep, 1);
+ allerror = vtruncbuf(DETOV(dep), cred, p, length, pmp->pm_bpcluster);
+#ifdef MSDOSFS_DEBUG
+ if (allerror)
+ printf("detrunc(): vtruncbuf error %d\n", allerror);
+#endif
+ error = deupdat(dep, 1);
+ if (error && (allerror == 0))
+ allerror = error;
#ifdef MSDOSFS_DEBUG
printf("detrunc(): allerror %d, eofentry %lu\n",
allerror, eofentry);
diff --git a/sys/msdosfs/msdosfs_denode.c b/sys/msdosfs/msdosfs_denode.c
index 63b878a..499e00a 100644
--- a/sys/msdosfs/msdosfs_denode.c
+++ b/sys/msdosfs/msdosfs_denode.c
@@ -1,4 +1,4 @@
-/* $Id: msdosfs_denode.c,v 1.38 1998/05/17 18:09:28 bde Exp $ */
+/* $Id: msdosfs_denode.c,v 1.39 1998/08/17 19:09:36 bde Exp $ */
/* $NetBSD: msdosfs_denode.c,v 1.28 1998/02/10 14:10:00 mrg Exp $ */
/*-
@@ -408,7 +408,6 @@ detrunc(dep, length, flags, cred, p)
{
int error;
int allerror;
- int vflags;
u_long eofentry;
u_long chaintofree;
daddr_t bn;
@@ -507,10 +506,14 @@ detrunc(dep, length, flags, cred, p)
dep->de_FileSize = length;
if (!isadir)
dep->de_flag |= DE_UPDATE|DE_MODIFIED;
- vflags = (length > 0 ? V_SAVE : 0) | V_SAVEMETA;
- vinvalbuf(DETOV(dep), vflags, cred, p, 0, 0);
- vnode_pager_setsize(DETOV(dep), length);
- allerror = deupdat(dep, 1);
+ allerror = vtruncbuf(DETOV(dep), cred, p, length, pmp->pm_bpcluster);
+#ifdef MSDOSFS_DEBUG
+ if (allerror)
+ printf("detrunc(): vtruncbuf error %d\n", allerror);
+#endif
+ error = deupdat(dep, 1);
+ if (error && (allerror == 0))
+ allerror = error;
#ifdef MSDOSFS_DEBUG
printf("detrunc(): allerror %d, eofentry %lu\n",
allerror, eofentry);
OpenPOWER on IntegriCloud