Whamcloud - gitweb
LU-14286 osd-ldiskfs: fallocate() should zero new blocks
[fs/lustre-release.git] / lustre / include / lustre_idmap.h
index 364a651..a8c5a21 100644 (file)
@@ -1,6 +1,4 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * GPL HEADER START
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * 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
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, 2017, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 #ifndef _LUSTRE_IDMAP_H
 #define _LUSTRE_IDMAP_H
 
-#include <md_object.h>
+/** \defgroup idmap idmap
+ *
+ * @{
+ */
+
+#include <libcfs/libcfs.h>
 
-#define CFS_NGROUPS_PER_BLOCK   ((int)(CFS_PAGE_SIZE / sizeof(gid_t)))
+#ifdef HAVE_GROUP_INFO_GID
 
-#define CFS_GROUP_AT(gi, i) \
-        ((gi)->blocks[(i) / CFS_NGROUPS_PER_BLOCK][(i) % CFS_NGROUPS_PER_BLOCK])
+#define CFS_GROUP_AT(gi, i) ((gi)->gid[(i)])
 
-enum {
-        CFS_IC_NOTHING     = 0,    /* convert nothing */
-        CFS_IC_ALL         = 1,    /* convert all items */
-        CFS_IC_MAPPED      = 2,    /* convert mapped uid/gid */
-        CFS_IC_UNMAPPED    = 3     /* convert unmapped uid/gid */
-};
+#else  /* !HAVE_GROUP_INFO_GID */
 
-#define  CFS_IDMAP_NOTFOUND     (-1)
+#define CFS_NGROUPS_PER_BLOCK   ((int)(PAGE_SIZE / sizeof(gid_t)))
+
+#define CFS_GROUP_AT(gi, i) \
+        ((gi)->blocks[(i) / CFS_NGROUPS_PER_BLOCK][(i) % CFS_NGROUPS_PER_BLOCK])
 
-#define CFS_IDMAP_HASHSIZE      32
+#endif /* HAVE_GROUP_INFO_GID */
 
-enum lustre_idmap_idx {
-        RMT_UIDMAP_IDX,
-        LCL_UIDMAP_IDX,
-        RMT_GIDMAP_IDX,
-        LCL_GIDMAP_IDX,
-        CFS_IDMAP_N_HASHES
-};
+#include <linux/cred.h>
 
-struct lustre_idmap_table {
-        cfs_spinlock_t   lit_lock;
-        cfs_list_t       lit_idmaps[CFS_IDMAP_N_HASHES][CFS_IDMAP_HASHSIZE];
-};
+struct lu_ucred;
 
-extern void lustre_groups_from_list(cfs_group_info_t *ginfo, gid_t *glist);
-extern void lustre_groups_sort(cfs_group_info_t *group_info);
-extern int lustre_in_group_p(struct md_ucred *mu, gid_t grp);
+extern void lustre_groups_from_list(struct group_info *ginfo, gid_t *glist);
+extern void lustre_groups_sort(struct group_info *group_info);
+extern int lustre_in_group_p(struct lu_ucred *mu, gid_t grp);
 
-extern int lustre_idmap_add(struct lustre_idmap_table *t,
-                            uid_t ruid, uid_t luid,
-                            gid_t rgid, gid_t lgid);
-extern int lustre_idmap_del(struct lustre_idmap_table *t,
-                            uid_t ruid, uid_t luid,
-                            gid_t rgid, gid_t lgid);
-extern int lustre_idmap_lookup_uid(struct md_ucred *mu,
-                                   struct lustre_idmap_table *t,
-                                   int reverse, uid_t uid);
-extern int lustre_idmap_lookup_gid(struct md_ucred *mu,
-                                   struct lustre_idmap_table *t,
-                                   int reverse, gid_t gid);
-extern struct lustre_idmap_table *lustre_idmap_init(void);
-extern void lustre_idmap_fini(struct lustre_idmap_table *t);
+/** @} idmap */
 
 #endif