summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthib <thib@openbsd.org>2008-09-12 16:17:57 +0000
committerthib <thib@openbsd.org>2008-09-12 16:17:57 +0000
commit4e36679c8ad35ba6d6817265952cd8fa10e3d291 (patch)
tree53fd103e3ab737ea5b990fb464399af9686d0043
parentDon't split large commands into multiple commands on a 512-byte (diff)
downloadwireguard-openbsd-4e36679c8ad35ba6d6817265952cd8fa10e3d291.tar.xz
wireguard-openbsd-4e36679c8ad35ba6d6817265952cd8fa10e3d291.zip
provide a NOTE_TRUNCATED kq hint in nfs_setattr() if the file
shrinks, same thing as UFS does. ok/pointers pedro@ ok blambert@
-rw-r--r--sys/nfs/nfs_vnops.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index 927411890b6..c3def3d6dbb 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_vnops.c,v 1.102 2008/08/21 01:17:39 pedro Exp $ */
+/* $OpenBSD: nfs_vnops.c,v 1.103 2008/09/12 16:17:57 thib Exp $ */
/* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */
/*
@@ -528,6 +528,7 @@ nfs_setattr(v)
struct vnode *vp = ap->a_vp;
struct nfsnode *np = VTONFS(vp);
struct vattr *vap = ap->a_vap;
+ int hint = NOTE_ATTRIB;
int error = 0;
u_quad_t tsize = 0;
@@ -592,7 +593,10 @@ nfs_setattr(v)
uvm_vnp_setsize(vp, np->n_size);
}
- VN_KNOTE(vp, NOTE_ATTRIB); /* XXX setattrrpc? */
+ if (vap->va_size != VNOVAL && vap->va_size < tsize)
+ hint |= NOTE_TRUNCATE;
+
+ VN_KNOTE(vp, hint); /* XXX setattrrpc? */
return (error);
}