summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsyl <syl@openbsd.org>2013-12-20 22:03:26 +0000
committersyl <syl@openbsd.org>2013-12-20 22:03:26 +0000
commitaab5b16c819c3846e107fbaae051b342101675f6 (patch)
tree6203f7dccc4cfd5ed58d51869aa31739aaea3b19
parentAdd vioscsi(4) driver. (diff)
downloadwireguard-openbsd-aab5b16c819c3846e107fbaae051b342101675f6.tar.xz
wireguard-openbsd-aab5b16c819c3846e107fbaae051b342101675f6.zip
Add support for truncate in fuse.
Input from millert@. Ok millert@, tedu@.
-rw-r--r--lib/libfuse/fuse_ops.c10
-rw-r--r--sys/miscfs/fuse/fuse_vnops.c6
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/libfuse/fuse_ops.c b/lib/libfuse/fuse_ops.c
index 3230b4ecc40..13fbcb629fd 100644
--- a/lib/libfuse/fuse_ops.c
+++ b/lib/libfuse/fuse_ops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_ops.c,v 1.17 2013/12/09 14:59:08 beck Exp $ */
+/* $OpenBSD: fuse_ops.c,v 1.18 2013/12/20 22:03:26 syl Exp $ */
/*
* Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com>
*
@@ -700,6 +700,14 @@ ifuse_ops_setattr(struct fuse *f, struct fusebuf *fbuf)
fbuf->fb_err = -ENOSYS;
}
+ if (!fbuf->fb_err && (io->fi_flags & FUSE_FATTR_SIZE)) {
+ if (f->op.truncate)
+ fbuf->fb_err = f->op.truncate(realname,
+ fbuf->fb_vattr.va_size);
+ else
+ fbuf->fb_err = -ENOSYS;
+ }
+
bzero(&fbuf->fb_vattr, sizeof(fbuf->fb_vattr));
if (!fbuf->fb_err)
diff --git a/sys/miscfs/fuse/fuse_vnops.c b/sys/miscfs/fuse/fuse_vnops.c
index 54239e97e63..420b9278a9e 100644
--- a/sys/miscfs/fuse/fuse_vnops.c
+++ b/sys/miscfs/fuse/fuse_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fuse_vnops.c,v 1.11 2013/12/03 09:59:40 syl Exp $ */
+/* $OpenBSD: fuse_vnops.c,v 1.12 2013/12/20 22:03:26 syl Exp $ */
/*
* Copyright (c) 2012-2013 Sylvestre Gallon <ccna.syl@gmail.com>
*
@@ -430,11 +430,13 @@ fusefs_setattr(void *v)
error = EROFS;
goto out;
}
+ break;
default:
break;
}
- /*XXX to finish*/
+ fbuf->fb_vattr.va_size = vap->va_size;
+ io->fi_flags |= FUSE_FATTR_SIZE;
}
if (vap->va_atime.tv_sec != VNOVAL) {