-/* -*- 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.
* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#ifndef __LINUX_CAPA_H_
#define __LINUX_CAPA_H_
+/** \defgroup capa capa
+ *
+ * @{
+ */
+
/*
* capability
*/
}
struct client_capa {
- struct inode *inode;
- struct list_head lli_list; /* link to lli_oss_capas */
+ struct inode *inode;
+ cfs_list_t lli_list; /* link to lli_oss_capas */
};
struct target_capa {
- struct hlist_node c_hash; /* link to capa hash */
+ cfs_hlist_node_t c_hash; /* link to capa hash */
};
struct obd_capa {
- struct list_head c_list; /* link to capa_list */
+ cfs_list_t c_list; /* link to capa_list */
struct lustre_capa c_capa; /* capa */
- atomic_t c_refc; /* ref count */
+ cfs_atomic_t c_refc; /* ref count */
cfs_time_t c_expiry; /* jiffies */
- spinlock_t c_lock; /* protect capa content */
- int c_site;
+ spinlock_t c_lock; /* protect capa content */
+ int c_site;
- union {
- struct client_capa cli;
- struct target_capa tgt;
- } u;
+ union {
+ struct client_capa cli;
+ struct target_capa tgt;
+ } u;
};
enum {
return capa->lc_keyid;
}
-static inline __u64 capa_key_mdsid(struct lustre_capa_key *key)
+static inline __u64 capa_key_seq(struct lustre_capa_key *key)
{
- return key->lk_mdsid;
+ return key->lk_seq;
}
static inline __u32 capa_key_keyid(struct lustre_capa_key *key)
return capa->lc_expiry;
}
-#define DEBUG_CAPA(level, c, fmt, args...) \
+void _debug_capa(struct lustre_capa *, struct libcfs_debug_msg_data *,
+ const char *fmt, ... );
+#define DEBUG_CAPA(level, capa, fmt, args...) \
do { \
-CDEBUG(level, fmt " capability@%p fid "DFID" opc "LPX64" uid "LPU64" gid " \
- LPU64" flags %u alg %d keyid %u timeout %u expiry %u\n", \
- ##args, c, PFID(capa_fid(c)), capa_opc(c), capa_uid(c), capa_gid(c), \
- capa_flags(c), capa_alg(c), capa_keyid(c), capa_timeout(c), \
- capa_expiry(c)); \
+ if (((level) & D_CANTMASK) != 0 || \
+ ((libcfs_debug & (level)) != 0 && \
+ (libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) { \
+ LIBCFS_DEBUG_MSG_DATA_DECL(msgdata, level, NULL); \
+ _debug_capa((capa), &msgdata, fmt, ##args); \
+ } \
} while (0)
#define DEBUG_CAPA_KEY(level, k, fmt, args...) \
do { \
-CDEBUG(level, fmt " capability key@%p mdsid "LPU64" keyid %u\n", \
- ##args, k, capa_key_mdsid(k), capa_key_keyid(k)); \
+CDEBUG(level, fmt " capability key@%p seq "LPU64" keyid %u\n", \
+ ##args, k, capa_key_seq(k), capa_key_keyid(k)); \
} while (0)
typedef int (* renew_capa_cb_t)(struct obd_capa *, struct lustre_capa *);
/* obdclass/capa.c */
-extern struct list_head capa_list[];
+extern cfs_list_t capa_list[];
extern spinlock_t capa_lock;
extern int capa_count[];
extern cfs_mem_cache_t *capa_cachep;
-struct hlist_head *init_capa_hash(void);
-void cleanup_capa_hash(struct hlist_head *hash);
+cfs_hlist_head_t *init_capa_hash(void);
+void cleanup_capa_hash(cfs_hlist_head_t *hash);
-struct obd_capa *capa_add(struct hlist_head *hash, struct lustre_capa *capa);
-struct obd_capa *capa_lookup(struct hlist_head *hash, struct lustre_capa *capa,
- int alive);
+struct obd_capa *capa_add(cfs_hlist_head_t *hash,
+ struct lustre_capa *capa);
+struct obd_capa *capa_lookup(cfs_hlist_head_t *hash,
+ struct lustre_capa *capa, int alive);
int capa_hmac(__u8 *hmac, struct lustre_capa *capa, __u8 *key);
int capa_encrypt_id(__u32 *d, __u32 *s, __u8 *key, int keylen);
if (unlikely(site != CAPA_SITE_CLIENT && site != CAPA_SITE_SERVER))
return ERR_PTR(-EINVAL);
- OBD_SLAB_ALLOC(ocapa, capa_cachep, GFP_KERNEL, sizeof(*ocapa));
+ OBD_SLAB_ALLOC_PTR(ocapa, capa_cachep);
if (unlikely(!ocapa))
return ERR_PTR(-ENOMEM);
CFS_INIT_LIST_HEAD(&ocapa->c_list);
- atomic_set(&ocapa->c_refc, 1);
- spin_lock_init(&ocapa->c_lock);
+ cfs_atomic_set(&ocapa->c_refc, 1);
+ spin_lock_init(&ocapa->c_lock);
ocapa->c_site = site;
if (ocapa->c_site == CAPA_SITE_CLIENT)
CFS_INIT_LIST_HEAD(&ocapa->u.cli.lli_list);
if (!ocapa)
return NULL;
- atomic_inc(&ocapa->c_refc);
+ cfs_atomic_inc(&ocapa->c_refc);
return ocapa;
}
if (!ocapa)
return;
- if (atomic_read(&ocapa->c_refc) == 0) {
+ if (cfs_atomic_read(&ocapa->c_refc) == 0) {
DEBUG_CAPA(D_ERROR, &ocapa->c_capa, "refc is 0 for");
LBUG();
}
- if (atomic_dec_and_test(&ocapa->c_refc)) {
- LASSERT(list_empty(&ocapa->c_list));
+ if (cfs_atomic_dec_and_test(&ocapa->c_refc)) {
+ LASSERT(cfs_list_empty(&ocapa->c_list));
if (ocapa->c_site == CAPA_SITE_CLIENT) {
- LASSERT(list_empty(&ocapa->u.cli.lli_list));
+ LASSERT(cfs_list_empty(&ocapa->u.cli.lli_list));
} else {
- struct hlist_node *hnode;
+ cfs_hlist_node_t *hnode;
hnode = &ocapa->u.tgt.c_hash;
LASSERT(!hnode->next && !hnode->pprev);
return (capa_opc(capa) & opc) == opc;
}
-static inline struct lustre_capa *
-lustre_unpack_capa(struct lustre_msg *msg, unsigned int offset)
-{
- struct lustre_capa *capa;
-
- capa = lustre_swab_buf(msg, offset, sizeof(*capa),
- lustre_swab_lustre_capa);
- if (capa == NULL)
- CERROR("bufcount %u, bufsize %u\n",
- lustre_msg_bufcount(msg),
- (lustre_msg_bufcount(msg) <= offset) ?
- -1 : lustre_msg_buflen(msg, offset));
-
- return capa;
-}
-
struct filter_capa_key {
- struct list_head k_list;
+ cfs_list_t k_list;
struct lustre_capa_key k_key;
};
};
#define BYPASS_CAPA (struct lustre_capa *)ERR_PTR(-ENOENT)
+
+/** @} capa */
+
#endif /* __LINUX_CAPA_H_ */