diff options
author | 2013-12-20 22:03:26 +0000 | |
---|---|---|
committer | 2013-12-20 22:03:26 +0000 | |
commit | aab5b16c819c3846e107fbaae051b342101675f6 (patch) | |
tree | 6203f7dccc4cfd5ed58d51869aa31739aaea3b19 | |
parent | Add vioscsi(4) driver. (diff) | |
download | wireguard-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.c | 10 | ||||
-rw-r--r-- | sys/miscfs/fuse/fuse_vnops.c | 6 |
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) { |