diff options
author | peter <peter@FreeBSD.org> | 1998-10-29 09:29:17 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1998-10-29 09:29:17 +0000 |
commit | fd7d7fb526c28cf221ba2f7bc1bca56f68ab1439 (patch) | |
tree | d478f5b7fad0b4be8c570239359eaf17901fd35d /sys/msdosfs | |
parent | e7e02b314f2f90ed5ebf6edd2403c2edc7753c6e (diff) | |
download | FreeBSD-src-fd7d7fb526c28cf221ba2f7bc1bca56f68ab1439.zip FreeBSD-src-fd7d7fb526c28cf221ba2f7bc1bca56f68ab1439.tar.gz |
Use vtruncbuf() rather than vinvalbuf() when shortening files.
Diffstat (limited to 'sys/msdosfs')
-rw-r--r-- | sys/msdosfs/msdosfs_denode.c | 15 |
1 files changed, 9 insertions, 6 deletions
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); |