Whamcloud - gitweb
LU-8851 nodemap: add uid/gid only flags to control mapping
[fs/lustre-release.git] / lustre / include / lustre_cfg.h
index 80cf49e..bf2a62a 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2012, 2013, Intel Corporation.
+ * Copyright (c) 2012, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -44,6 +40,7 @@
 # include <obd_support.h>
 #else /* !__KERNEL__ */
 # include <malloc.h>
+# include <stdlib.h>
 #endif /* __KERNEL__ */
 
 /** \defgroup cfg cfg
@@ -116,6 +113,9 @@ enum lcfg_command_type {
        LCFG_NODEMAP_DEL_SHKEY  = 0x00ce054, /**< delete shared key from cluster */
        LCFG_NODEMAP_TEST_NID   = 0x00ce055, /**< test for nodemap membership */
        LCFG_NODEMAP_TEST_ID    = 0x00ce056, /**< test uid/gid mapping */
+       LCFG_NODEMAP_SET_FILESET   = 0x00ce057, /**< set fileset */
+       LCFG_NODEMAP_DENY_UNKNOWN  = 0x00ce058, /**< deny squashed nodemap users */
+       LCFG_NODEMAP_MAP_MODE  = 0x00ce059, /**< set the mapping mode */
 };
 
 struct lustre_cfg_bufs {
@@ -183,7 +183,9 @@ static inline void *lustre_cfg_buf(struct lustre_cfg *lcfg, __u32 index)
        __u32 i;
        size_t offset;
        __u32 bufcount;
-       LASSERT (lcfg != NULL);
+
+       if (!lcfg)
+               return NULL;
 
         bufcount = lcfg->lcfg_bufcount;
         if (index >= bufcount)
@@ -222,9 +224,14 @@ static inline char *lustre_cfg_string(struct lustre_cfg *lcfg, __u32 index)
         * of data.  Try to use the padding first though.
         */
        if (s[lcfg->lcfg_buflens[index] - 1] != '\0') {
-               size_t last = min((size_t)lcfg->lcfg_buflens[index],
-                              cfs_size_round(lcfg->lcfg_buflens[index]) - 1);
-               char lost = s[last];
+               size_t last = cfs_size_round(lcfg->lcfg_buflens[index]) - 1;
+               char lost;
+
+               /* Use the smaller value */
+               if (last > lcfg->lcfg_buflens[index])
+                       last = lcfg->lcfg_buflens[index];
+
+               lost = s[last];
                s[last] = '\0';
                if (lost != '\0') {
                        CWARN("Truncated buf %d to '%s' (lost '%c'...)\n",
@@ -260,7 +267,10 @@ static inline void lustre_cfg_init(struct lustre_cfg *lcfg, int cmd,
        ptr = (char *)lcfg + LCFG_HDR_SIZE(lcfg->lcfg_bufcount);
        for (i = 0; i < lcfg->lcfg_bufcount; i++) {
                lcfg->lcfg_buflens[i] = bufs->lcfg_buflen[i];
-               LOGL((char *)bufs->lcfg_buf[i], bufs->lcfg_buflen[i], ptr);
+               if (bufs->lcfg_buf[i]) {
+                       memcpy(ptr, bufs->lcfg_buf[i], bufs->lcfg_buflen[i]);
+                       ptr += cfs_size_round(bufs->lcfg_buflen[i]);
+               }
        }
 }