Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 709e280a authored by Oleg Drokin's avatar Oleg Drokin Committed by Greg Kroah-Hartman
Browse files

staging/lustre: Remove unused lu_object functions.



Quite a bunch of them are only used on the server.
lu_object_put_nocache, lu_object_invariant, lu_dev_del_linkage,
lu_context_tags_update, lu_context_tags_clear, lu_session_tags_update,
lu_session_tags_clear, lu_env_refill_by_tags, lu_printk_printer,
lu_object_assign_fid, lu_object_anon, lu_buf_free, lu_buf_alloc,
lu_buf_realloc, lu_buf_check_and_alloc, lu_buf_check_and_grow

Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a83a765d
Loading
Loading
Loading
Loading
+0 −27
Original line number Diff line number Diff line
@@ -672,7 +672,6 @@ void lu_object_add_top (struct lu_object_header *h, struct lu_object *o);
void lu_object_add	(struct lu_object *before, struct lu_object *o);

void lu_dev_add_linkage(struct lu_site *s, struct lu_device *d);
void lu_dev_del_linkage(struct lu_site *s, struct lu_device *d);

/**
 * Helpers to initialize and finalize device types.
@@ -710,7 +709,6 @@ static inline int lu_object_is_dying(const struct lu_object_header *h)
}

void lu_object_put(const struct lu_env *env, struct lu_object *o);
void lu_object_put_nocache(const struct lu_env *env, struct lu_object *o);
void lu_object_unhash(const struct lu_env *env, struct lu_object *o);

int lu_site_purge(const struct lu_env *env, struct lu_site *s, int nr);
@@ -1241,14 +1239,6 @@ void lu_context_key_degister_many(struct lu_context_key *k, ...);
void lu_context_key_revive_many  (struct lu_context_key *k, ...);
void lu_context_key_quiesce_many (struct lu_context_key *k, ...);

/*
 * update/clear ctx/ses tags.
 */
void lu_context_tags_update(__u32 tags);
void lu_context_tags_clear(__u32 tags);
void lu_session_tags_update(__u32 tags);
void lu_session_tags_clear(__u32 tags);

/**
 * Environment.
 */
@@ -1266,7 +1256,6 @@ struct lu_env {
int  lu_env_init  (struct lu_env *env, __u32 tags);
void lu_env_fini  (struct lu_env *env);
int  lu_env_refill(struct lu_env *env);
int  lu_env_refill_by_tags(struct lu_env *env, __u32 ctags, __u32 stags);

/** @} lu_context */

@@ -1319,21 +1308,5 @@ struct lu_kmem_descr {
int  lu_kmem_init(struct lu_kmem_descr *caches);
void lu_kmem_fini(struct lu_kmem_descr *caches);

void lu_object_assign_fid(const struct lu_env *env, struct lu_object *o,
			  const struct lu_fid *fid);
struct lu_object *lu_object_anon(const struct lu_env *env,
				 struct lu_device *dev,
				 const struct lu_object_conf *conf);

/** null buffer */
extern struct lu_buf LU_BUF_NULL;

void lu_buf_free(struct lu_buf *buf);
void lu_buf_alloc(struct lu_buf *buf, int size);
void lu_buf_realloc(struct lu_buf *buf, int size);

int lu_buf_check_and_grow(struct lu_buf *buf, int len);
struct lu_buf *lu_buf_check_and_alloc(struct lu_buf *buf, int len);

/** @} lu */
#endif /* __LUSTRE_LU_OBJECT_H */
+0 −241
Original line number Diff line number Diff line
@@ -156,17 +156,6 @@ void lu_object_put(const struct lu_env *env, struct lu_object *o)
}
EXPORT_SYMBOL(lu_object_put);

/**
 * Put object and don't keep in cache. This is temporary solution for
 * multi-site objects when its layering is not constant.
 */
void lu_object_put_nocache(const struct lu_env *env, struct lu_object *o)
{
	set_bit(LU_OBJECT_HEARD_BANSHEE, &o->lo_header->loh_flags);
	return lu_object_put(env, o);
}
EXPORT_SYMBOL(lu_object_put_nocache);

/**
 * Kill the object and take it out of LRU cache.
 * Currently used by client code for layout change.
@@ -529,23 +518,6 @@ void lu_object_print(const struct lu_env *env, void *cookie,
}
EXPORT_SYMBOL(lu_object_print);

/**
 * Check object consistency.
 */
int lu_object_invariant(const struct lu_object *o)
{
	struct lu_object_header *top;

	top = o->lo_header;
	list_for_each_entry(o, &top->loh_layers, lo_linkage) {
		if (o->lo_ops->loo_object_invariant != NULL &&
		    !o->lo_ops->loo_object_invariant(o))
			return 0;
	}
	return 1;
}
EXPORT_SYMBOL(lu_object_invariant);

static struct lu_object *htable_lookup(struct lu_site *s,
				       struct cfs_hash_bd *bd,
				       const struct lu_fid *f,
@@ -962,14 +934,6 @@ void lu_dev_add_linkage(struct lu_site *s, struct lu_device *d)
}
EXPORT_SYMBOL(lu_dev_add_linkage);

void lu_dev_del_linkage(struct lu_site *s, struct lu_device *d)
{
	spin_lock(&s->ls_ld_lock);
	list_del_init(&d->ld_linkage);
	spin_unlock(&s->ls_ld_lock);
}
EXPORT_SYMBOL(lu_dev_del_linkage);

/**
 * Initialize site \a s, with \a d as the top level device.
 */
@@ -1701,42 +1665,6 @@ EXPORT_SYMBOL(lu_context_refill);
__u32 lu_context_tags_default;
__u32 lu_session_tags_default;

void lu_context_tags_update(__u32 tags)
{
	spin_lock(&lu_keys_guard);
	lu_context_tags_default |= tags;
	key_set_version++;
	spin_unlock(&lu_keys_guard);
}
EXPORT_SYMBOL(lu_context_tags_update);

void lu_context_tags_clear(__u32 tags)
{
	spin_lock(&lu_keys_guard);
	lu_context_tags_default &= ~tags;
	key_set_version++;
	spin_unlock(&lu_keys_guard);
}
EXPORT_SYMBOL(lu_context_tags_clear);

void lu_session_tags_update(__u32 tags)
{
	spin_lock(&lu_keys_guard);
	lu_session_tags_default |= tags;
	key_set_version++;
	spin_unlock(&lu_keys_guard);
}
EXPORT_SYMBOL(lu_session_tags_update);

void lu_session_tags_clear(__u32 tags)
{
	spin_lock(&lu_keys_guard);
	lu_session_tags_default &= ~tags;
	key_set_version++;
	spin_unlock(&lu_keys_guard);
}
EXPORT_SYMBOL(lu_session_tags_clear);

int lu_env_init(struct lu_env *env, __u32 tags)
{
	int result;
@@ -1768,31 +1696,6 @@ int lu_env_refill(struct lu_env *env)
}
EXPORT_SYMBOL(lu_env_refill);

/**
 * Currently, this API will only be used by echo client.
 * Because echo client and normal lustre client will share
 * same cl_env cache. So echo client needs to refresh
 * the env context after it get one from the cache, especially
 * when normal client and echo client co-exist in the same client.
 */
int lu_env_refill_by_tags(struct lu_env *env, __u32 ctags,
			  __u32 stags)
{
	if ((env->le_ctx.lc_tags & ctags) != ctags) {
		env->le_ctx.lc_version = 0;
		env->le_ctx.lc_tags |= ctags;
	}

	if (env->le_ses && (env->le_ses->lc_tags & stags) != stags) {
		env->le_ses->lc_version = 0;
		env->le_ses->lc_tags |= stags;
	}

	return lu_env_refill(env);
}
EXPORT_SYMBOL(lu_env_refill_by_tags);


struct lu_site_stats {
	unsigned	lss_populated;
	unsigned	lss_max_search;
@@ -1904,29 +1807,9 @@ static unsigned long lu_cache_shrink_scan(struct shrinker *sk,
	return sc->nr_to_scan - remain;
}

/*
 * Debugging stuff.
 */

/**
 * Environment to be used in debugger, contains all tags.
 */
struct lu_env lu_debugging_env;

/**
 * Debugging printer function using printk().
 */
int lu_printk_printer(const struct lu_env *env,
		      void *unused, const char *format, ...)
{
	va_list args;

	va_start(args, format);
	vprintk(format, args);
	va_end(args);
	return 0;
}

static struct shrinker lu_site_shrinker = {
	.count_objects	= lu_cache_shrink_count,
	.scan_objects	= lu_cache_shrink_scan,
@@ -2069,127 +1952,3 @@ void lu_kmem_fini(struct lu_kmem_descr *caches)
	}
}
EXPORT_SYMBOL(lu_kmem_fini);

/**
 * Temporary solution to be able to assign fid in ->do_create()
 * till we have fully-functional OST fids
 */
void lu_object_assign_fid(const struct lu_env *env, struct lu_object *o,
			  const struct lu_fid *fid)
{
	struct lu_site		*s = o->lo_dev->ld_site;
	struct lu_fid		*old = &o->lo_header->loh_fid;
	struct lu_object	*shadow;
	wait_queue_t		 waiter;
	struct cfs_hash		*hs;
	struct cfs_hash_bd	 bd;
	__u64			 version = 0;

	LASSERT(fid_is_zero(old));

	hs = s->ls_obj_hash;
	cfs_hash_bd_get_and_lock(hs, (void *)fid, &bd, 1);
	shadow = htable_lookup(s, &bd, fid, &waiter, &version);
	/* supposed to be unique */
	LASSERT(IS_ERR(shadow) && PTR_ERR(shadow) == -ENOENT);
	*old = *fid;
	cfs_hash_bd_add_locked(hs, &bd, &o->lo_header->loh_hash);
	cfs_hash_bd_unlock(hs, &bd, 1);
}
EXPORT_SYMBOL(lu_object_assign_fid);

/**
 * allocates object with 0 (non-assigned) fid
 * XXX: temporary solution to be able to assign fid in ->do_create()
 *      till we have fully-functional OST fids
 */
struct lu_object *lu_object_anon(const struct lu_env *env,
				 struct lu_device *dev,
				 const struct lu_object_conf *conf)
{
	struct lu_fid     fid;
	struct lu_object *o;

	fid_zero(&fid);
	o = lu_object_alloc(env, dev, &fid, conf);

	return o;
}
EXPORT_SYMBOL(lu_object_anon);

struct lu_buf LU_BUF_NULL = {
	.lb_buf = NULL,
	.lb_len = 0
};
EXPORT_SYMBOL(LU_BUF_NULL);

void lu_buf_free(struct lu_buf *buf)
{
	LASSERT(buf);
	if (buf->lb_buf) {
		LASSERT(buf->lb_len > 0);
		kvfree(buf->lb_buf);
		buf->lb_buf = NULL;
		buf->lb_len = 0;
	}
}
EXPORT_SYMBOL(lu_buf_free);

void lu_buf_alloc(struct lu_buf *buf, int size)
{
	LASSERT(buf);
	LASSERT(buf->lb_buf == NULL);
	LASSERT(buf->lb_len == 0);
	buf->lb_buf = libcfs_kvzalloc(size, GFP_NOFS);
	if (likely(buf->lb_buf))
		buf->lb_len = size;
}
EXPORT_SYMBOL(lu_buf_alloc);

void lu_buf_realloc(struct lu_buf *buf, int size)
{
	lu_buf_free(buf);
	lu_buf_alloc(buf, size);
}
EXPORT_SYMBOL(lu_buf_realloc);

struct lu_buf *lu_buf_check_and_alloc(struct lu_buf *buf, int len)
{
	if (buf->lb_buf == NULL && buf->lb_len == 0)
		lu_buf_alloc(buf, len);

	if ((len > buf->lb_len) && (buf->lb_buf != NULL))
		lu_buf_realloc(buf, len);

	return buf;
}
EXPORT_SYMBOL(lu_buf_check_and_alloc);

/**
 * Increase the size of the \a buf.
 * preserves old data in buffer
 * old buffer remains unchanged on error
 * \retval 0 or -ENOMEM
 */
int lu_buf_check_and_grow(struct lu_buf *buf, int len)
{
	char *ptr;

	if (len <= buf->lb_len)
		return 0;

	ptr = libcfs_kvzalloc(len, GFP_NOFS);
	if (ptr == NULL)
		return -ENOMEM;

	/* Free the old buf */
	if (buf->lb_buf != NULL) {
		memcpy(ptr, buf->lb_buf, buf->lb_len);
		kvfree(buf->lb_buf);
	}

	buf->lb_buf = ptr;
	buf->lb_len = len;
	return 0;
}
EXPORT_SYMBOL(lu_buf_check_and_grow);