Loading fs/fuse/file.c +7 −0 Original line number Diff line number Diff line Loading @@ -2185,6 +2185,9 @@ long fuse_file_fallocate(struct file *file, int mode, loff_t offset, }; int err; if (fc->no_fallocate) return -EOPNOTSUPP; req = fuse_get_req(fc); if (IS_ERR(req)) return PTR_ERR(req); Loading @@ -2196,6 +2199,10 @@ long fuse_file_fallocate(struct file *file, int mode, loff_t offset, req->in.args[0].value = &inarg; fuse_request_send(fc, req); err = req->out.h.error; if (err == -ENOSYS) { fc->no_fallocate = 1; err = -EOPNOTSUPP; } fuse_put_request(fc, req); return err; Loading fs/fuse/fuse_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -478,6 +478,9 @@ struct fuse_conn { /** Are BSD file locking primitives not implemented by fs? */ unsigned no_flock:1; /** Is fallocate not implemented by fs? */ unsigned no_fallocate:1; /** The number of requests waiting for completion */ atomic_t num_waiting; Loading Loading
fs/fuse/file.c +7 −0 Original line number Diff line number Diff line Loading @@ -2185,6 +2185,9 @@ long fuse_file_fallocate(struct file *file, int mode, loff_t offset, }; int err; if (fc->no_fallocate) return -EOPNOTSUPP; req = fuse_get_req(fc); if (IS_ERR(req)) return PTR_ERR(req); Loading @@ -2196,6 +2199,10 @@ long fuse_file_fallocate(struct file *file, int mode, loff_t offset, req->in.args[0].value = &inarg; fuse_request_send(fc, req); err = req->out.h.error; if (err == -ENOSYS) { fc->no_fallocate = 1; err = -EOPNOTSUPP; } fuse_put_request(fc, req); return err; Loading
fs/fuse/fuse_i.h +3 −0 Original line number Diff line number Diff line Loading @@ -478,6 +478,9 @@ struct fuse_conn { /** Are BSD file locking primitives not implemented by fs? */ unsigned no_flock:1; /** Is fallocate not implemented by fs? */ unsigned no_fallocate:1; /** The number of requests waiting for completion */ atomic_t num_waiting; Loading