aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2023-02-10 04:58:43 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2023-02-19 05:16:25 +0000
commit64152225022bea784ca1948a67e7c040a8bb040a (patch)
tree16fb2f533e6ea9c90281a2b4960c2ac157e19328
parent071a0b5b7058b97b629e6aa49e7d03bb87615f5f (diff)
downloadsrc-64152225022bea784ca1948a67e7c040a8bb040a.tar.gz
src-64152225022bea784ca1948a67e7c040a8bb040a.zip
msdosfs: correct handling of vnode pager size on file extension error
(cherry picked from commit e59180ea09a1d1d1463f2a269e94efa0f0b677c5)
-rw-r--r--sys/fs/msdosfs/msdosfs_denode.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/fs/msdosfs/msdosfs_denode.c b/sys/fs/msdosfs/msdosfs_denode.c
index 030c96d6d354..8511d873ea50 100644
--- a/sys/fs/msdosfs/msdosfs_denode.c
+++ b/sys/fs/msdosfs/msdosfs_denode.c
@@ -384,10 +384,8 @@ detrunc(struct denode *dep, u_long length, int flags, struct ucred *cred)
return (EINVAL);
}
- if (dep->de_FileSize < length) {
- vnode_pager_setsize(DETOV(dep), length);
+ if (dep->de_FileSize < length)
return (deextend(dep, length, cred));
- }
/*
* If the desired length is 0 then remember the starting cluster of
@@ -528,6 +526,7 @@ deextend(struct denode *dep, u_long length, struct ucred *cred)
return (error);
}
}
+ vnode_pager_setsize(DETOV(dep), length);
dep->de_FileSize = length;
dep->de_flag |= DE_UPDATE | DE_MODIFIED;
return (deupdat(dep, !DOINGASYNC(DETOV(dep))));