Date: Tue, 19 Mar 2019 17:49:15 +0000 (UTC) From: Alan Somers <asomers@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345304 - projects/fuse2/sys/fs/fuse Message-ID: <201903191749.x2JHnFuF064887@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: asomers Date: Tue Mar 19 17:49:15 2019 New Revision: 345304 URL: https://svnweb.freebsd.org/changeset/base/345304 Log: fuse(4): remove more debugging printfs I missed these in r344664. They're basically useless because they can only be controlled at compile-time. Also, de-inline fuse_internal_cache_attrs. It's big enough to be a regular function, and this way it gets a dtrace FBT probe. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse.h projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_ipc.h projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse.h Tue Mar 19 17:49:03 2019 (r345303) +++ projects/fuse2/sys/fs/fuse/fuse.h Tue Mar 19 17:49:15 2019 (r345304) @@ -159,65 +159,8 @@ do { \ (cred) = (td)->td_ucred; \ } while (0) -/* Debug related stuff */ - -#ifndef FUSE_DEBUG_DEVICE -#define FUSE_DEBUG_DEVICE 0 -#endif - -#ifndef FUSE_DEBUG_FILE -#define FUSE_DEBUG_FILE 0 -#endif - -#ifndef FUSE_DEBUG_INTERNAL -#define FUSE_DEBUG_INTERNAL 0 -#endif - -#ifndef FUSE_DEBUG_IO -#define FUSE_DEBUG_IO 0 -#endif - -#ifndef FUSE_DEBUG_IPC -#define FUSE_DEBUG_IPC 0 -#endif - -#ifndef FUSE_DEBUG_LOCK -#define FUSE_DEBUG_LOCK 0 -#endif - -#ifndef FUSE_DEBUG_VFSOPS -#define FUSE_DEBUG_VFSOPS 0 -#endif - -#ifndef FUSE_DEBUG_VNOPS -#define FUSE_DEBUG_VNOPS 0 -#endif - -#ifndef FUSE_TRACE -#define FUSE_TRACE 0 -#endif - -#define DEBUGX(cond, fmt, ...) do { \ - if (((cond))) { \ - printf("%s: " fmt, __func__, ## __VA_ARGS__); \ - } \ -} while (0) - -#define fuse_lck_mtx_lock(mtx) do { \ - DEBUGX(FUSE_DEBUG_LOCK, "0: lock(%s): %s@%d by %d\n", \ - __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid); \ - mtx_lock(&(mtx)); \ - DEBUGX(FUSE_DEBUG_LOCK, "1: lock(%s): %s@%d by %d\n", \ - __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid); \ -} while (0) - -#define fuse_lck_mtx_unlock(mtx) do { \ - DEBUGX(FUSE_DEBUG_LOCK, "0: unlock(%s): %s@%d by %d\n", \ - __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid); \ - mtx_unlock(&(mtx)); \ - DEBUGX(FUSE_DEBUG_LOCK, "1: unlock(%s): %s@%d by %d\n", \ - __STRING(mtx), __func__, __LINE__, curthread->td_proc->p_pid); \ -} while (0) +#define fuse_lck_mtx_lock(mtx) mtx_lock(&(mtx)) +#define fuse_lck_mtx_unlock(mtx) mtx_unlock(&(mtx)) void fuse_ipc_init(void); void fuse_ipc_destroy(void); Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Tue Mar 19 17:49:03 2019 (r345303) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Tue Mar 19 17:49:15 2019 (r345304) @@ -207,6 +207,66 @@ fuse_internal_access(struct vnode *vp, return err; } +/* + * Cache FUSE attributes from feo, in attr cache associated with vnode 'vp'. + * Optionally, if argument 'vap' is not NULL, store a copy of the converted + * attributes there as well. + * + * If the nominal attribute cache TTL is zero, do not cache on the 'vp' (but do + * return the result to the caller). + */ +void +fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr, + uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap) +{ + struct mount *mp; + struct fuse_vnode_data *fvdat; + struct vattr *vp_cache_at; + + mp = vnode_mount(vp); + fvdat = VTOFUD(vp); + + /* Honor explicit do-not-cache requests from user filesystems. */ + if (attr_valid == 0 && attr_valid_nsec == 0) + fvdat->valid_attr_cache = false; + else + fvdat->valid_attr_cache = true; + + vp_cache_at = VTOVA(vp); + + if (vap == NULL && vp_cache_at == NULL) + return; + + if (vap == NULL) + vap = vp_cache_at; + + vattr_null(vap); + + vap->va_fsid = mp->mnt_stat.f_fsid.val[0]; + vap->va_fileid = attr->ino; + vap->va_mode = attr->mode & ~S_IFMT; + vap->va_nlink = attr->nlink; + vap->va_uid = attr->uid; + vap->va_gid = attr->gid; + vap->va_rdev = attr->rdev; + vap->va_size = attr->size; + /* XXX on i386, seconds are truncated to 32 bits */ + vap->va_atime.tv_sec = attr->atime; + vap->va_atime.tv_nsec = attr->atimensec; + vap->va_mtime.tv_sec = attr->mtime; + vap->va_mtime.tv_nsec = attr->mtimensec; + vap->va_ctime.tv_sec = attr->ctime; + vap->va_ctime.tv_nsec = attr->ctimensec; + vap->va_blocksize = PAGE_SIZE; + vap->va_type = IFTOVT(attr->mode); + vap->va_bytes = attr->blocks * S_BLKSIZE; + vap->va_flags = 0; + + if (vap != vp_cache_at && vp_cache_at != NULL) + memcpy(vp_cache_at, vap, sizeof(*vap)); +} + + /* fsync */ int @@ -472,7 +532,8 @@ fuse_internal_newentry_core(struct vnode *dvp, feo->nodeid, 1); return err; } - cache_attrs(*vpp, feo, NULL); + fuse_internal_cache_attrs(*vpp, &feo->attr, feo->attr_valid, + feo->attr_valid_nsec, NULL); return err; } Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Tue Mar 19 17:49:03 2019 (r345303) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Tue Mar 19 17:49:15 2019 (r345304) @@ -193,75 +193,9 @@ int fuse_internal_access(struct vnode *vp, mode_t mode struct fuse_access_param *facp, struct thread *td, struct ucred *cred); /* attributes */ +void fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr, + uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap); -/* - * Cache FUSE attributes 'fat', with nominal expiration - * 'attr_valid'.'attr_valid_nsec', in attr cache associated with vnode 'vp'. - * Optionally, if argument 'vap' is not NULL, store a copy of the converted - * attributes there as well. - * - * If the nominal attribute cache TTL is zero, do not cache on the 'vp' (but do - * return the result to the caller). - */ -static inline void -fuse_internal_attr_fat2vat(struct vnode *vp, struct fuse_attr *fat, - uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap) -{ - struct mount *mp; - struct fuse_vnode_data *fvdat; - struct vattr *vp_cache_at; - - mp = vnode_mount(vp); - fvdat = VTOFUD(vp); - - DEBUGX(FUSE_DEBUG_INTERNAL, "node #%ju, mode 0%o\n", - (uintmax_t)fat->ino, fat->mode); - - /* Honor explicit do-not-cache requests from user filesystems. */ - if (attr_valid == 0 && attr_valid_nsec == 0) - fvdat->valid_attr_cache = false; - else - fvdat->valid_attr_cache = true; - - vp_cache_at = VTOVA(vp); - - if (vap == NULL && vp_cache_at == NULL) - return; - - if (vap == NULL) - vap = vp_cache_at; - - vattr_null(vap); - - vap->va_fsid = mp->mnt_stat.f_fsid.val[0]; - vap->va_fileid = fat->ino; - vap->va_mode = fat->mode & ~S_IFMT; - vap->va_nlink = fat->nlink; - vap->va_uid = fat->uid; - vap->va_gid = fat->gid; - vap->va_rdev = fat->rdev; - vap->va_size = fat->size; - /* XXX on i386, seconds are truncated to 32 bits */ - vap->va_atime.tv_sec = fat->atime; - vap->va_atime.tv_nsec = fat->atimensec; - vap->va_mtime.tv_sec = fat->mtime; - vap->va_mtime.tv_nsec = fat->mtimensec; - vap->va_ctime.tv_sec = fat->ctime; - vap->va_ctime.tv_nsec = fat->ctimensec; - vap->va_blocksize = PAGE_SIZE; - vap->va_type = IFTOVT(fat->mode); - vap->va_bytes = fat->blocks * S_BLKSIZE; - vap->va_flags = 0; - - if (vap != vp_cache_at && vp_cache_at != NULL) - memcpy(vp_cache_at, vap, sizeof(*vap)); -} - - -#define cache_attrs(vp, fuse_out, vap_out) \ - fuse_internal_attr_fat2vat((vp), &(fuse_out)->attr, \ - (fuse_out)->attr_valid, (fuse_out)->attr_valid_nsec, (vap_out)) - /* fsync */ int fuse_internal_fsync(struct vnode *vp, struct thread *td, @@ -300,24 +234,15 @@ void fuse_internal_vnode_disappear(struct vnode *vp); static inline int fuse_internal_checkentry(struct fuse_entry_out *feo, enum vtype vtyp) { - DEBUGX(FUSE_DEBUG_INTERNAL, - "feo=%p, vtype=%d\n", feo, vtyp); - if (vtyp != IFTOVT(feo->attr.mode)) { - DEBUGX(FUSE_DEBUG_INTERNAL, - "EINVAL -- %x != %x\n", vtyp, IFTOVT(feo->attr.mode)); return (EINVAL); } if (feo->nodeid == FUSE_NULL_ID) { - DEBUGX(FUSE_DEBUG_INTERNAL, - "EINVAL -- feo->nodeid is NULL\n"); return (EINVAL); } if (feo->nodeid == FUSE_ROOT_ID) { - DEBUGX(FUSE_DEBUG_INTERNAL, - "EINVAL -- feo->nodeid is FUSE_ROOT_ID\n"); return (EINVAL); } Modified: projects/fuse2/sys/fs/fuse/fuse_ipc.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_ipc.h Tue Mar 19 17:49:03 2019 (r345303) +++ projects/fuse2/sys/fs/fuse/fuse_ipc.h Tue Mar 19 17:49:15 2019 (r345304) @@ -136,7 +136,6 @@ fticket_resp(struct fuse_ticket *ftick) static inline bool fticket_answered(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "-> ftick=%p\n", ftick); mtx_assert(&ftick->tk_aw_mtx, MA_OWNED); return (ftick->tk_flag & FT_ANSW); } @@ -144,7 +143,6 @@ fticket_answered(struct fuse_ticket *ftick) static inline void fticket_set_answered(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "-> ftick=%p\n", ftick); mtx_assert(&ftick->tk_aw_mtx, MA_OWNED); ftick->tk_flag |= FT_ANSW; } @@ -152,7 +150,6 @@ fticket_set_answered(struct fuse_ticket *ftick) static inline enum fuse_opcode fticket_opcode(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "-> ftick=%p\n", ftick); return (((struct fuse_in_header *)(ftick->tk_ms_fiov.base))->opcode); } @@ -273,8 +270,6 @@ fsess_opt_brokenio(struct mount *mp) static inline void fuse_ms_push(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "ftick=%p refcount=%d\n", ftick, - ftick->tk_refcount + 1); mtx_assert(&ftick->tk_data->ms_mtx, MA_OWNED); refcount_acquire(&ftick->tk_refcount); STAILQ_INSERT_TAIL(&ftick->tk_data->ms_head, ftick, tk_ms_link); @@ -293,8 +288,6 @@ fuse_ms_pop(struct fuse_data *data) ftick->tk_ms_link.stqe_next = NULL; #endif } - DEBUGX(FUSE_DEBUG_IPC, "ftick=%p refcount=%d\n", ftick, - ftick ? ftick->tk_refcount : -1); return (ftick); } @@ -302,8 +295,6 @@ fuse_ms_pop(struct fuse_data *data) static inline void fuse_aw_push(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "ftick=%p refcount=%d\n", ftick, - ftick->tk_refcount + 1); mtx_assert(&ftick->tk_data->aw_mtx, MA_OWNED); refcount_acquire(&ftick->tk_refcount); TAILQ_INSERT_TAIL(&ftick->tk_data->aw_head, ftick, tk_aw_link); @@ -312,8 +303,6 @@ fuse_aw_push(struct fuse_ticket *ftick) static inline void fuse_aw_remove(struct fuse_ticket *ftick) { - DEBUGX(FUSE_DEBUG_IPC, "ftick=%p refcount=%d\n", - ftick, ftick->tk_refcount); mtx_assert(&ftick->tk_data->aw_mtx, MA_OWNED); TAILQ_REMOVE(&ftick->tk_data->aw_head, ftick, tk_aw_link); #ifdef INVARIANTS @@ -331,8 +320,6 @@ fuse_aw_pop(struct fuse_data *data) if ((ftick = TAILQ_FIRST(&data->aw_head)) != NULL) fuse_aw_remove(ftick); - DEBUGX(FUSE_DEBUG_IPC, "ftick=%p refcount=%d\n", ftick, - ftick ? ftick->tk_refcount : -1); return (ftick); } @@ -374,7 +361,6 @@ struct fuse_dispatcher { static inline void fdisp_init(struct fuse_dispatcher *fdisp, size_t iosize) { - DEBUGX(FUSE_DEBUG_IPC, "-> fdisp=%p, iosize=%zx\n", fdisp, iosize); fdisp->iosize = iosize; fdisp->tick = NULL; } @@ -382,7 +368,6 @@ fdisp_init(struct fuse_dispatcher *fdisp, size_t iosiz static inline void fdisp_destroy(struct fuse_dispatcher *fdisp) { - DEBUGX(FUSE_DEBUG_IPC, "-> fdisp=%p, ftick=%p\n", fdisp, fdisp->tick); fuse_ticket_drop(fdisp->tick); #ifdef INVARIANTS fdisp->tick = NULL; @@ -404,7 +389,6 @@ static inline int fdisp_simple_putget_vp(struct fuse_dispatcher *fdip, enum fuse_opcode op, struct vnode *vp, struct thread *td, struct ucred *cred) { - DEBUGX(FUSE_DEBUG_IPC, "-> fdip=%p, opcode=%d, vp=%p\n", fdip, op, vp); fdisp_make_vp(fdip, op, vp, td, cred); return (fdisp_wait_answ(fdip)); } Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Mar 19 17:49:03 2019 (r345303) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Mar 19 17:49:15 2019 (r345304) @@ -478,6 +478,7 @@ fuse_vnop_getattr(struct vop_getattr_args *ap) struct ucred *cred = ap->a_cred; struct thread *td = curthread; struct fuse_vnode_data *fvdat = VTOFUD(vp); + struct fuse_attr_out *fao; int err = 0; int dataflags; @@ -509,7 +510,9 @@ fuse_vnop_getattr(struct vop_getattr_args *ap) goto out; } - cache_attrs(vp, (struct fuse_attr_out *)fdi.answ, vap); + fao = (struct fuse_attr_out *)fdi.answ; + fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, + fao->attr_valid_nsec, vap); if (vap->va_type != vnode_vtype(vp)) { fuse_internal_vnode_disappear(vp); err = ENOENT; @@ -975,11 +978,17 @@ calldaemon: } if (op == FUSE_GETATTR) { - cache_attrs(*vpp, (struct fuse_attr_out *)fdi.answ, - NULL); + struct fuse_attr_out *fao = + (struct fuse_attr_out*)fdi.answ; + fuse_internal_cache_attrs(*vpp, + &fao->attr, fao->attr_valid, + fao->attr_valid_nsec, NULL); } else { - cache_attrs(*vpp, (struct fuse_entry_out *)fdi.answ, - NULL); + struct fuse_entry_out *feo = + (struct fuse_entry_out*)fdi.answ; + fuse_internal_cache_attrs(*vpp, + &feo->attr, feo->attr_valid, + feo->attr_valid_nsec, NULL); } /* Insert name into cache if appropriate. */ @@ -1636,8 +1645,11 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) err = EAGAIN; } } - if (err == 0) - cache_attrs(vp, (struct fuse_attr_out *)fdi.answ, NULL); + if (err == 0) { + struct fuse_attr_out *fao = (struct fuse_attr_out*)fdi.answ; + fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, + fao->attr_valid_nsec, NULL); + } out: fdisp_destroy(&fdi);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201903191749.x2JHnFuF064887>