The commit is pushed to "branch-rh7-3.10.0-693.21.1.vz7.50.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-693.21.1.vz7.50.1 ------> commit 67e7de76237f45f40ebbe72adf502b87dcf2f369 Author: Pavel Butsykin <pbutsy...@virtuozzo.com> Date: Wed May 23 10:59:41 2018 +0300
fs/fuse kio_pcs: check fuse_conn args Allow initialization of kdirect only for vstorage/pstorage. https://jira.sw.ru/browse/HCI-52 Signed-off-by: Pavel Butsykin <pbutsy...@virtuozzo.com> Acked-by: Kirill Tkhai <ktk...@virtuozzo.com> --- drivers/block/ploop/dev.c | 4 ---- fs/fuse/kio/pcs/pcs_fuse_kdirect.c | 9 ++++----- include/linux/fs.h | 5 +++++ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c index 0e72656ec8f9..c6094144c7a5 100644 --- a/drivers/block/ploop/dev.c +++ b/drivers/block/ploop/dev.c @@ -3880,10 +3880,6 @@ static int ploop_truncate(struct ploop_device * plo, unsigned long arg) return err; } -#define IS_PSTORAGE(sb) (sb->s_magic == FUSE_SUPER_MAGIC && \ - (!strcmp(sb->s_subtype, "pstorage") || \ - !strcmp(sb->s_subtype, "vstorage"))) - static int ploop_bd_full(struct backing_dev_info *bdi, long long nr, int root) { struct ploop_device *plo = bdi->congested_data; diff --git a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c index 09d79769d1fc..f4c0fb15403e 100644 --- a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c +++ b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c @@ -141,16 +141,15 @@ void kpcs_conn_abort(struct fuse_conn *fc) } static int kpcs_probe(struct fuse_conn *fc, char *name) - { - printk("%s TODO IMPLEMENT check fuse_conn args here!\n", __FUNCTION__); - if (!strncmp(name, kio_pcs_ops.name, FUSE_KIO_NAME)) + if (IS_PSTORAGE(fc->sb)) return 1; + pr_err("FUSE: kio_pcs: kdirect is only available for" + "pstorage/vstorage fuse mount\n"); return 0; } - static int fuse_pcs_getfileinfo(struct fuse_conn *fc, struct file *file, struct pcs_mds_fileinfo *info) { @@ -1292,7 +1291,7 @@ static int fuse_ktrace_setup(struct fuse_conn * fc) static struct fuse_kio_ops kio_pcs_ops = { .name = "pcs", .owner = THIS_MODULE, - .probe = kpcs_probe, /*TODO: check sb->dev name */ + .probe = kpcs_probe, .conn_init = kpcs_conn_init, .conn_fini = kpcs_conn_fini, diff --git a/include/linux/fs.h b/include/linux/fs.h index 1c5144180012..2140b0d7a06f 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1713,6 +1713,11 @@ struct super_block { struct list_lru s_inode_lru ____cacheline_aligned_in_smp; }; +#define IS_PSTORAGE(sb) ((sb)->s_magic == FUSE_SUPER_MAGIC && \ + (sb)->s_subtype && \ + (!strcmp((sb)->s_subtype, "pstorage") || \ + !strcmp((sb)->s_subtype, "vstorage"))) + extern const unsigned super_block_wrapper_version; struct super_block_wrapper { struct super_block sb; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel