Whamcloud - gitweb
LU-17431 mdt: add ioctl handler for mds 04/54504/7
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 20 Mar 2024 08:20:52 +0000 (09:20 +0100)
committerOleg Drokin <green@whamcloud.com>
Mon, 15 Apr 2024 16:53:42 +0000 (16:53 +0000)
Adding ioctl handler for mds allows managing dynamic nodemaps
on MDS side.

Test-Parameters: trivial
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I6a68a17d3f12c799238a93242bbd385e6eeb1d0b
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54504
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/mdt/mdt_mds.c

index e94fed6..3e58bed 100644 (file)
@@ -52,6 +52,7 @@
 #include "mdt_internal.h"
 #include <lustre_quota.h>
 #include <lustre_acl.h>
+#include <lustre_nodemap.h>
 #include <uapi/linux/lustre/lustre_param.h>
 
 struct mds_device {
@@ -656,9 +657,35 @@ static int mds_health_check(const struct lu_env *env, struct obd_device *obd)
        return rc != 0 ? 1 : 0;
 }
 
+/* ioctls on obd dev */
+static int mds_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
+                        void *karg, void __user *uarg)
+{
+       struct obd_device *obd = exp->exp_obd;
+       struct obd_ioctl_data *data;
+       int rc = 0;
+
+       ENTRY;
+       CDEBUG(D_IOCTL, "%s: cmd=%x len=%u karg=%pK uarg=%pK\n",
+              obd->obd_name, cmd, len, karg, uarg);
+
+       data = karg;
+       /* we only support nodemap ioctls, for now */
+       if (cmd != OBD_IOC_NODEMAP)
+               GOTO(out, rc = -EINVAL);
+
+       rc = server_iocontrol_nodemap(obd, data, true);
+       if (rc)
+               GOTO(out, rc);
+
+out:
+       RETURN(rc);
+}
+
 static const struct obd_ops mds_obd_device_ops = {
        .o_owner           = THIS_MODULE,
        .o_health_check    = mds_health_check,
+       .o_iocontrol       = mds_iocontrol,
 };
 
 int mds_mod_init(void)