Module Name: src Committed By: manu Date: Mon Oct 4 03:56:24 UTC 2010
Modified Files: src/lib/libperfuse: ops.c Log Message: - delete an obsoelte comment about inactive - remove a test for getattr return field that was never filled - correctly send filehandle and filehandle flags for getaattr To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/lib/libperfuse/ops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libperfuse/ops.c diff -u src/lib/libperfuse/ops.c:1.19 src/lib/libperfuse/ops.c:1.20 --- src/lib/libperfuse/ops.c:1.19 Sun Oct 3 05:46:47 2010 +++ src/lib/libperfuse/ops.c Mon Oct 4 03:56:24 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ops.c,v 1.19 2010/10/03 05:46:47 manu Exp $ */ +/* $NetBSD: ops.c,v 1.20 2010/10/04 03:56:24 manu Exp $ */ /*- * Copyright (c) 2010 Emmanuel Dreyfus. All rights reserved. @@ -1192,10 +1192,7 @@ /* * Do not open twice, and do not reopen for reading - * if we already have write handle. Just ask for - * inactive, in case the node was open by a create - * operation (we are not allowed to call puffs_setback - * at create time, puffs interface forbids it) + * if we already have write handle. */ if (((mode & FREAD) && (pnd->pnd_flags & PND_RFH)) || ((mode & FREAD) && (pnd->pnd_flags & PND_WFH)) || @@ -1319,7 +1316,12 @@ fgi = GET_INPAYLOAD(ps, pm, fuse_getattr_in); fgi->getattr_flags = 0; fgi->dummy = 0; - fgi->fh = perfuse_get_fh(opc, FREAD); + fgi->fh = 0; + + if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_OPEN) { + fgi->fh = perfuse_get_fh(opc, FREAD); + fgi->getattr_flags |= FUSE_GETATTR_FH; + } #ifdef PERFUSE_DEBUG if (perfuse_diagflags & PDF_FH) @@ -1335,12 +1337,6 @@ fao = GET_OUTPAYLOAD(ps, pm, fuse_attr_out); -#ifdef PERFUSE_DEBUG - if (!(fao->attr_valid & (FUSE_FATTR_SIZE|FUSE_FATTR_MODE| - FUSE_FATTR_UID|FUSE_FATTR_GID))) - DERRX(EX_SOFTWARE, "%s: fao->attr_valid = 0x%"PRId64"", - __func__, fao->attr_valid); -#endif error = puffs_access(VREG, fao->attr.mode, fao->attr.uid, fao->attr.gid, (mode_t)mode, pcr); @@ -1392,10 +1388,12 @@ fgi = GET_INPAYLOAD(ps, pm, fuse_getattr_in); fgi->getattr_flags = 0; fgi->dummy = 0; - fgi->fh = perfuse_get_fh(opc, FREAD); + fgi->fh = 0; - if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_OPEN) + if (PERFUSE_NODE_DATA(opc)->pnd_flags & PND_OPEN) { + fgi->fh = perfuse_get_fh(opc, FREAD); fgi->getattr_flags |= FUSE_GETATTR_FH; + } if ((error = xchg_msg(pu, opc, pm, sizeof(*fao), wait_reply)) != 0) goto out; @@ -2760,7 +2758,7 @@ pm = ps->ps_new_msg(pu, opc, FUSE_GETATTR, sizeof(*fgi), NULL); fgi = GET_INPAYLOAD(ps, pm, fuse_getattr_in); - fgi->getattr_flags = 0; + fgi->getattr_flags = FUSE_GETATTR_FH; fgi->dummy = 0; fgi->fh = perfuse_get_fh(opc, FWRITE);