From: Miklos Szeredi Date: Fri, 20 Jul 2012 07:45:09 +0000 (+0200) Subject: Remove compatibility path handling X-Git-Tag: fuse-3.0.0pre0~162 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=78c2cc25d5537063ae3a6f94578e1db2bb9ba0b6;p=qemu-gpiodev%2Flibfuse.git Remove compatibility path handling This means that now NULL is a valid path for operations that take a file descriptor if the file was unlinked and hard_remove option is specified. --- diff --git a/example/fusexmp_fh.c b/example/fusexmp_fh.c index 2b0f616..8c5a524 100644 --- a/example/fusexmp_fh.c +++ b/example/fusexmp_fh.c @@ -554,7 +554,6 @@ static struct fuse_operations xmp_oper = { .lock = xmp_lock, .flock = xmp_flock, - .flag_nullpath_ok = 1, #if HAVE_UTIMENSAT .flag_utime_omit_ok = 1, #endif diff --git a/include/fuse.h b/include/fuse.h index 7522cb6..a23dadb 100644 --- a/include/fuse.h +++ b/include/fuse.h @@ -446,18 +446,6 @@ struct fuse_operations { */ int (*bmap) (const char *, size_t blocksize, uint64_t *idx); - /** - * Flag indicating that the filesystem can accept a NULL path - * as the first argument for the following operations: - * - * read, write, flush, release, fsync, readdir, releasedir, - * fsyncdir, ftruncate, fgetattr, lock, ioctl and poll - * - * If this flag is set these operations continue to work on - * unlinked files even if "-ohard_remove" option was specified. - */ - unsigned int flag_nullpath_ok:1; - /** * Flag indicating that the path need not be calculated for * the following operations: @@ -465,10 +453,9 @@ struct fuse_operations { * read, write, flush, release, fsync, readdir, releasedir, * fsyncdir, ftruncate, fgetattr, lock, ioctl and poll * - * Closely related to flag_nullpath_ok, but if this flag is - * set then the path will not be calculaged even if the file - * wasn't unlinked. However the path can still be non-NULL if - * it needs to be calculated for some other reason. + * If this flag is set then the path will not be calculaged even if the + * file wasn't unlinked. However the path can still be non-NULL if it + * needs to be calculated for some other reason. */ unsigned int flag_nopath:1; @@ -481,7 +468,7 @@ struct fuse_operations { /** * Reserved flags, don't set */ - unsigned int flag_reserved:29; + unsigned int flag_reserved:30; /** * Ioctl diff --git a/lib/fuse.c b/lib/fuse.c index a0c4183..9294822 100644 --- a/lib/fuse.c +++ b/lib/fuse.c @@ -128,7 +128,6 @@ struct fuse { struct fuse_config conf; int intr_installed; struct fuse_fs *fs; - int nullpath_ok; int utime_omit_ok; int curr_ticket; struct lock_queue_element *lockq; @@ -1124,7 +1123,7 @@ static int get_path_nullok(struct fuse *f, fuse_ino_t nodeid, char **path) *path = NULL; } else { err = get_path_common(f, nodeid, NULL, path, NULL); - if (err == -ENOENT && f->nullpath_ok) + if (err == -ENOENT) err = 0; } @@ -2896,14 +2895,8 @@ static void fuse_do_release(struct fuse *f, fuse_ino_t ino, const char *path, { struct node *node; int unlink_hidden = 0; - const char *compatpath; - if (path != NULL || f->nullpath_ok || f->conf.nopath) - compatpath = path; - else - compatpath = "-"; - - fuse_fs_release(f->fs, compatpath, fi); + fuse_fs_release(f->fs, path, fi); pthread_mutex_lock(&f->lock); node = get_node(f, ino); @@ -3334,16 +3327,11 @@ static void fuse_lib_releasedir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info fi; struct fuse_dh *dh = get_dirhandle(llfi, &fi); char *path; - const char *compatpath; get_path_nullok(f, ino, &path); - if (path != NULL || f->nullpath_ok || f->conf.nopath) - compatpath = path; - else - compatpath = "-"; fuse_prepare_interrupt(f, req, &d); - fuse_fs_releasedir(f->fs, compatpath, &fi); + fuse_fs_releasedir(f->fs, path, &fi); fuse_finish_interrupt(f, req, &d); free_path(f, ino, path); @@ -4321,7 +4309,6 @@ static int fuse_push_module(struct fuse *f, const char *module, } newfs->m = m; f->fs = newfs; - f->nullpath_ok = newfs->op.flag_nullpath_ok && f->nullpath_ok; f->conf.nopath = newfs->op.flag_nopath && f->conf.nopath; f->utime_omit_ok = newfs->op.flag_utime_omit_ok && f->utime_omit_ok; return 0; @@ -4416,7 +4403,6 @@ struct fuse *fuse_new(struct fuse_chan *ch, struct fuse_args *args, goto out_free; f->fs = fs; - f->nullpath_ok = fs->op.flag_nullpath_ok; f->conf.nopath = fs->op.flag_nopath; f->utime_omit_ok = fs->op.flag_utime_omit_ok; @@ -4476,7 +4462,6 @@ struct fuse *fuse_new(struct fuse_chan *ch, struct fuse_args *args, fuse_session_add_chan(f->se, ch); if (f->conf.debug) { - fprintf(stderr, "nullpath_ok: %i\n", f->nullpath_ok); fprintf(stderr, "nopath: %i\n", f->conf.nopath); fprintf(stderr, "utime_omit_ok: %i\n", f->utime_omit_ok); } diff --git a/lib/modules/iconv.c b/lib/modules/iconv.c index 33923f3..bc3694e 100644 --- a/lib/modules/iconv.c +++ b/lib/modules/iconv.c @@ -631,7 +631,6 @@ static const struct fuse_operations iconv_oper = { .flock = iconv_flock, .bmap = iconv_bmap, - .flag_nullpath_ok = 1, .flag_nopath = 1, }; diff --git a/lib/modules/subdir.c b/lib/modules/subdir.c index 3a76cbb..52b91e1 100644 --- a/lib/modules/subdir.c +++ b/lib/modules/subdir.c @@ -614,7 +614,6 @@ static const struct fuse_operations subdir_oper = { .flock = subdir_flock, .bmap = subdir_bmap, - .flag_nullpath_ok = 1, .flag_nopath = 1, };