| From bc9475e9f1dd4e0d6777e30e7b7a8d1679397148 Mon Sep 17 00:00:00 2001 |
| From: Jeff Layton <jlayton@kernel.org> |
| Date: Thu, 7 Nov 2019 09:39:32 -0500 |
| Subject: [PATCH] ceph: return -EINVAL if given fsc mount option on kernel w/o |
| support |
| |
| commit ff29fde84d1fc82f233c7da0daa3574a3942bec7 upstream. |
| |
| If someone requests fscache on the mount, and the kernel doesn't |
| support it, it should fail the mount. |
| |
| [ Drop ceph prefix -- it's provided by pr_err. ] |
| |
| Signed-off-by: Jeff Layton <jlayton@kernel.org> |
| Reviewed-by: Ilya Dryomov <idryomov@gmail.com> |
| Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/ceph/super.c b/fs/ceph/super.c |
| index 74ca5970397f..4ce55e0a14da 100644 |
| --- a/fs/ceph/super.c |
| +++ b/fs/ceph/super.c |
| @@ -255,6 +255,7 @@ static int parse_fsopt_token(char *c, void *private) |
| return -ENOMEM; |
| break; |
| case Opt_fscache_uniq: |
| +#ifdef CONFIG_CEPH_FSCACHE |
| kfree(fsopt->fscache_uniq); |
| fsopt->fscache_uniq = kstrndup(argstr[0].from, |
| argstr[0].to-argstr[0].from, |
| @@ -263,7 +264,10 @@ static int parse_fsopt_token(char *c, void *private) |
| return -ENOMEM; |
| fsopt->flags |= CEPH_MOUNT_OPT_FSCACHE; |
| break; |
| - /* misc */ |
| +#else |
| + pr_err("fscache support is disabled\n"); |
| + return -EINVAL; |
| +#endif |
| case Opt_wsize: |
| if (intval < (int)PAGE_SIZE || intval > CEPH_MAX_WRITE_SIZE) |
| return -EINVAL; |
| @@ -340,10 +344,15 @@ static int parse_fsopt_token(char *c, void *private) |
| fsopt->flags &= ~CEPH_MOUNT_OPT_INO32; |
| break; |
| case Opt_fscache: |
| +#ifdef CONFIG_CEPH_FSCACHE |
| fsopt->flags |= CEPH_MOUNT_OPT_FSCACHE; |
| kfree(fsopt->fscache_uniq); |
| fsopt->fscache_uniq = NULL; |
| break; |
| +#else |
| + pr_err("fscache support is disabled\n"); |
| + return -EINVAL; |
| +#endif |
| case Opt_nofscache: |
| fsopt->flags &= ~CEPH_MOUNT_OPT_FSCACHE; |
| kfree(fsopt->fscache_uniq); |
| -- |
| 2.7.4 |
| |