summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2012-07-20 09:45:09 +0200
committerMiklos Szeredi <mszeredi@suse.cz>2012-07-20 09:45:09 +0200
commit78c2cc25d5537063ae3a6f94578e1db2bb9ba0b6 (patch)
tree196565be4fad459083787eed0a2ccd283e7d9296
parentd7d7ee9581a1a65527b9627e13bead27a429c777 (diff)
downloadfuse-78c2cc25d5537063ae3a6f94578e1db2bb9ba0b6.tar.gz
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.
-rw-r--r--example/fusexmp_fh.c1
-rw-r--r--include/fuse.h21
-rw-r--r--lib/fuse.c21
-rw-r--r--lib/modules/iconv.c1
-rw-r--r--lib/modules/subdir.c1
5 files changed, 7 insertions, 38 deletions
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
@@ -447,28 +447,15 @@ 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:
*
* 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,
};