From: Darrick J. Wong <djwong@xxxxxxxxxx> Whenever a filesystem operation is going to return a negative errno to libfuse, log the errno if debugging is enabled. Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --- misc/fuse2fs.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index d78ab5558b6182..fa7618adef48d1 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -1132,6 +1132,8 @@ static int op_getattr(const char *path, struct stat *statbuf goto out; ret = stat_inode(fs, ino, statbuf); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -1208,6 +1210,8 @@ static int op_readlink(const char *path, char *buf, size_t len) } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -1448,6 +1452,8 @@ static int op_mknod(const char *path, mode_t mode, dev_t dev) if (ret) goto out2; out2: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); out: free(temp_path); @@ -1592,6 +1598,8 @@ static int op_mkdir(const char *path, mode_t mode) out3: ext2fs_free_mem(&block); out2: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); out: free(temp_path); @@ -1781,6 +1789,8 @@ static int op_unlink(const char *path) FUSE2FS_CHECK_CONTEXT(ff); pthread_mutex_lock(&ff->bfl); ret = __op_unlink(ff, path); + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -1908,6 +1918,8 @@ static int op_rmdir(const char *path) FUSE2FS_CHECK_CONTEXT(ff); pthread_mutex_lock(&ff->bfl); ret = __op_rmdir(ff, path); + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2006,6 +2018,8 @@ static int op_symlink(const char *src, const char *dest) goto out2; } out2: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); out: free(temp_path); @@ -2278,6 +2292,8 @@ static int op_rename(const char *from, const char *to free(temp_from); free(temp_to); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2387,6 +2403,8 @@ static int op_link(const char *src, const char *dest) } out2: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); out: free(temp_path); @@ -2525,6 +2543,8 @@ static int op_chmod(const char *path, mode_t mode } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2598,6 +2618,8 @@ static int op_chown(const char *path, uid_t owner, gid_t group } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2696,6 +2718,8 @@ static int op_truncate(const char *path, off_t len goto out; out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2813,6 +2837,8 @@ static int op_open(const char *path, struct fuse_file_info *fp) FUSE2FS_CHECK_CONTEXT(ff); pthread_mutex_lock(&ff->bfl); ret = __op_open(ff, path, fp); + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -2870,6 +2896,8 @@ static int op_read(const char *path EXT2FS_ATTR((unused)), char *buf, goto out; } out: + if (!got && ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return got ? (int) got : ret; } @@ -2943,6 +2971,8 @@ static int op_write(const char *path EXT2FS_ATTR((unused)), goto out; out: + if (!got && ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return got ? (int) got : ret; } @@ -2973,6 +3003,8 @@ static int op_release(const char *path EXT2FS_ATTR((unused)), } fp->fh = 0; + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); ext2fs_free_mem(&fh); @@ -3003,6 +3035,8 @@ static int op_fsync(const char *path EXT2FS_ATTR((unused)), if (err) ret = translate_error(fs, fh->ino, err); } + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3126,6 +3160,8 @@ static int op_getxattr(const char *path, const char *key, char *value, ext2fs_free_mem(&ptr); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3224,6 +3260,8 @@ static int op_listxattr(const char *path, char *names, size_t len) if (err && !ret) ret = translate_error(fs, ino, err); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3318,6 +3356,8 @@ static int op_setxattr(const char *path EXT2FS_ATTR((unused)), if (!ret && err) ret = translate_error(fs, ino, err); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3414,6 +3454,8 @@ static int op_removexattr(const char *path, const char *key) if (err && !ret) ret = translate_error(fs, ino, err); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3552,6 +3594,8 @@ static int op_readdir(const char *path EXT2FS_ATTR((unused)), goto out; } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -3580,6 +3624,8 @@ static int op_access(const char *path, int mask) goto out; out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -3706,6 +3752,8 @@ static int op_create(const char *path, mode_t mode, struct fuse_file_info *fp) if (ret) goto out2; out2: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); out: free(temp_path); @@ -3761,6 +3809,8 @@ static int op_ftruncate(const char *path EXT2FS_ATTR((unused)), goto out; out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -3782,6 +3832,8 @@ static int op_fgetattr(const char *path EXT2FS_ATTR((unused)), dbg_printf(ff, "%s: ino=%d\n", __func__, fh->ino); pthread_mutex_lock(&ff->bfl); ret = stat_inode(fs, fh->ino, statbuf); + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -3856,6 +3908,8 @@ static int op_utimens(const char *path, const struct timespec ctv[2] } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -4206,6 +4260,8 @@ static int op_ioctl(const char *path EXT2FS_ATTR((unused)), dbg_printf(ff, "%s: Unknown ioctl %d\n", __func__, cmd); ret = -ENOTTY; } + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; @@ -4239,6 +4295,8 @@ static int op_bmap(const char *path, size_t blocksize EXT2FS_ATTR((unused)), } out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret; } @@ -4481,6 +4539,8 @@ static int op_fallocate(const char *path EXT2FS_ATTR((unused)), int mode, else ret = fallocate_helper(fp, mode, offset, len); out: + if (ret < 0) + dbg_printf(ff, "%s: libfuse ret=%d\n", __func__, ret); pthread_mutex_unlock(&ff->bfl); return ret;