Whamcloud - gitweb
LU-17431 ost: add ioctl handler for oss 05/54505/7
authorSebastien Buisson <sbuisson@ddn.com>
Wed, 20 Mar 2024 08:24:30 +0000 (09:24 +0100)
committerOleg Drokin <green@whamcloud.com>
Mon, 15 Apr 2024 16:53:54 +0000 (16:53 +0000)
Adding ioctl handler for oss allows managing dynamic nodemaps
on OSS side.

Test-Parameters: trivial
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: I90f4c6988bed2ba721e366ae088983958d484a2f
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/54505
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/ost/ost_handler.c

index b9e8ff8..80fa454 100644 (file)
@@ -39,6 +39,7 @@
 #include <linux/module.h>
 #include <lustre_dlm.h>
 #include <lprocfs_status.h>
+#include <lustre_nodemap.h>
 #include <obd_class.h>
 #include "ost_internal.h"
 
@@ -411,12 +412,38 @@ static int ost_health_check(const struct lu_env *env, struct obd_device *obd)
        return rc != 0 ? 1 : 0;
 }
 
+/* ioctls on obd dev */
+static int oss_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);
+}
+
 /* use obd ops to offer management infrastructure */
 static const struct obd_ops ost_obd_ops = {
        .o_owner        = THIS_MODULE,
        .o_setup        = ost_setup,
        .o_cleanup      = ost_cleanup,
        .o_health_check = ost_health_check,
+       .o_iocontrol    = oss_iocontrol,
 };
 
 static int __init ost_init(void)