X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flod%2Flod_internal.h;h=48bd2d40e3031601dde2a2a3b6028d196c56744f;hp=7d9b95fc51d2d9005b00952ea1ec3e7fbbd555c8;hb=ad1810a2dbea1eed5e8b5feb55bdf915a545feb3;hpb=de2d5808bd2987f76d2486272e1a9c192ba277d4 diff --git a/lustre/lod/lod_internal.h b/lustre/lod/lod_internal.h index 7d9b95f..48bd2d4 100644 --- a/lustre/lod/lod_internal.h +++ b/lustre/lod/lod_internal.h @@ -6,13 +6,13 @@ * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 only, * as published by the Free Software Foundation. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License version 2 for more details. A copy is * included in the COPYING file that accompanied this code. - + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA @@ -23,7 +23,7 @@ * Copyright 2009 Sun Microsystems, Inc. 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/ @@ -45,6 +45,16 @@ #define LOV_USES_ASSIGNED_STRIPE 0 #define LOV_USES_DEFAULT_STRIPE 1 +/* Special values to remove LOV EA from disk */ +#define LOVEA_DELETE_VALUES(size, count, offset, pool) \ + ((size) == 0 && (count) == 0 && \ + (offset) == (typeof(offset))(-1) && (pool) == NULL) + +#define LMVEA_DELETE_VALUES(count, offset) \ + ((count) == 0 && (offset) == (typeof(offset))(-1)) + +#define LOV_OFFSET_DEFAULT ((__u16)-1) + struct lod_qos_rr { __u32 lqr_start_idx; /* start index of new inode */ __u32 lqr_offset_idx; /* aliasing for start_idx */ @@ -58,7 +68,7 @@ struct pool_desc { struct ost_pool pool_obds; /* pool members */ atomic_t pool_refcount; struct lod_qos_rr pool_rr; - cfs_hlist_node_t pool_hash; /* access by poolname */ + struct hlist_node pool_hash; /* access by poolname */ struct list_head pool_list; struct proc_dir_entry *pool_proc_entry; struct obd_device *pool_lobd; /* owner */ @@ -136,7 +146,7 @@ struct lod_tgt_descs { /* Size of the lod_tgts array, granted to be a power of 2 */ __u32 ltd_tgts_size; /* number of registered TGTs */ - int ltd_tgtnr; + __u32 ltd_tgtnr; /* bitmap of TGTs available */ cfs_bitmap_t *ltd_tgt_bitmap; /* TGTs scheduled to be deleted */ @@ -153,7 +163,7 @@ struct lod_device { struct dt_device lod_dt_dev; struct obd_export *lod_child_exp; struct dt_device *lod_child; - cfs_proc_dir_entry_t *lod_proc_entry; + struct proc_dir_entry *lod_proc_entry; struct lprocfs_stats *lod_stats; spinlock_t lod_connects_lock; int lod_connects; @@ -182,15 +192,15 @@ struct lod_device { struct lod_qos lod_qos; /* qos info per lod */ /* OST pool data */ - struct ost_pool lod_pool_info; /* all OSTs in a packed array */ - int lod_pool_count; - cfs_hash_t *lod_pools_hash_body; /* used for key access */ - cfs_list_t lod_pool_list; /* used for sequential access */ - cfs_proc_dir_entry_t *lod_pool_proc_entry; + struct ost_pool lod_pool_info; /* all OSTs in a packed array */ + int lod_pool_count; + cfs_hash_t *lod_pools_hash_body; /* used for key access */ + struct list_head lod_pool_list; /* used for sequential access */ + struct proc_dir_entry *lod_pool_proc_entry; enum lustre_sec_part lod_sp_me; - cfs_proc_dir_entry_t *lod_symlink; + struct proc_dir_entry *lod_symlink; }; #define lod_osts lod_ost_descs.ltd_tgts @@ -270,7 +280,7 @@ struct lod_it { struct lod_thread_info { /* per-thread buffer for LOV EA */ void *lti_ea_store; - int lti_ea_store_size; + __u32 lti_ea_store_size; /* per-thread buffer for LMV EA */ struct lu_buf lti_buf; struct ost_id lti_ostid; @@ -284,6 +294,7 @@ struct lod_thread_info { struct dt_object_format lti_format; struct lu_name lti_name; struct lu_buf lti_linkea_buf; + struct dt_insert_rec lti_dt_rec; }; extern const struct lu_device_operations lod_lu_ops; @@ -375,6 +386,7 @@ lod_name_get(const struct lu_env *env, const void *area, int len) cfs_foreach_bit((__dev)->lod_ost_bitmap, (index)) /* lod_dev.c */ +extern struct kmem_cache *lod_object_kmem; int lod_fld_lookup(const struct lu_env *env, struct lod_device *lod, const struct lu_fid *fid, __u32 *tgt, int *flags); /* lod_lov.c */ @@ -424,13 +436,11 @@ int lod_parse_dir_striping(const struct lu_env *env, struct lod_object *lo, const struct lu_buf *buf); int lod_initialize_objects(const struct lu_env *env, struct lod_object *mo, struct lov_ost_data_v1 *objs); -int lod_store_def_striping(const struct lu_env *env, struct dt_object *dt, - struct thandle *th); int lod_verify_striping(struct lod_device *d, const struct lu_buf *buf, bool is_from_disk); int lod_generate_and_set_lovea(const struct lu_env *env, struct lod_object *mo, struct thandle *th); -int lod_ea_store_resize(struct lod_thread_info *info, int size); +int lod_ea_store_resize(struct lod_thread_info *info, size_t size); /* lod_pool.c */ int lod_ost_pool_add(struct ost_pool *op, __u32 idx, unsigned int min_count); int lod_ost_pool_remove(struct ost_pool *op, __u32 idx); @@ -458,6 +468,8 @@ int lod_procfs_init(struct lod_device *lod); void lod_procfs_fini(struct lod_device *lod); /* lod_object.c */ +extern struct dt_object_operations lod_obj_ops; +extern struct lu_object_operations lod_lu_obj_ops; int lod_load_lmv_shards(const struct lu_env *env, struct lod_object *lo, struct lu_buf *buf, bool resize); int lod_object_set_pool(struct lod_object *o, char *pool);