X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-ldiskfs%2Fosd_oi.h;h=c9d727d211b91d892f8728f2e8f884b0ad3034ce;hb=6bf1d78ed87dc25cef0e8a48f1ef251f9bb017a8;hp=bae99edc9f16378f1d24d3df58d8f840f8bd2650;hpb=cb1a6851d0815c82fbc48550c49bac4a88cee056;p=fs%2Flustre-release.git diff --git a/lustre/osd-ldiskfs/osd_oi.h b/lustre/osd-ldiskfs/osd_oi.h index bae99ed..c9d727d 100644 --- a/lustre/osd-ldiskfs/osd_oi.h +++ b/lustre/osd-ldiskfs/osd_oi.h @@ -27,7 +27,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, Whamcloud, Inc. + * Copyright (c) 2012, 2013, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -49,10 +49,10 @@ #ifndef _OSD_OI_H #define _OSD_OI_H -#if defined(__KERNEL__) /* struct rw_semaphore */ #include +#include #include #include #include @@ -65,7 +65,6 @@ struct lu_fid; struct osd_thread_info; struct lu_site; -struct thandle; struct dt_device; struct osd_device; @@ -84,6 +83,12 @@ struct osd_inode_id { __u32 oii_gen; /* inode generation */ }; +struct osd_idmap_cache { + struct lu_fid oic_fid; + struct osd_inode_id oic_lid; + struct osd_device *oic_dev; +}; + static inline void osd_id_pack(struct osd_inode_id *tgt, const struct osd_inode_id *src) { @@ -120,19 +125,33 @@ static inline int osd_id_eq(const struct osd_inode_id *id0, id1->oii_gen == OSD_OII_NOGEN); } +static inline int osd_id_eq_strict(const struct osd_inode_id *id0, + const struct osd_inode_id *id1) +{ + return (id0->oii_ino == id1->oii_ino && id0->oii_gen == id1->oii_gen); +} + +enum oi_check_flags { + OI_CHECK_FLD = 0x00000001, + OI_KNOWN_ON_OST = 0x00000002, +}; + int osd_oi_mod_init(void); int osd_oi_init(struct osd_thread_info *info, struct osd_device *osd); void osd_oi_fini(struct osd_thread_info *info, struct osd_device *osd); -int __osd_oi_lookup(struct osd_thread_info *info, struct osd_device *osd, - const struct lu_fid *fid, struct osd_inode_id *id); int osd_oi_lookup(struct osd_thread_info *info, struct osd_device *osd, - const struct lu_fid *fid, struct osd_inode_id *id); + const struct lu_fid *fid, struct osd_inode_id *id, + enum oi_check_flags flags); int osd_oi_insert(struct osd_thread_info *info, struct osd_device *osd, const struct lu_fid *fid, const struct osd_inode_id *id, - struct thandle *th); + handle_t *th, enum oi_check_flags flags); int osd_oi_delete(struct osd_thread_info *info, struct osd_device *osd, const struct lu_fid *fid, - struct thandle *th); + handle_t *th, enum oi_check_flags flags); +int osd_oi_update(struct osd_thread_info *info, struct osd_device *osd, + const struct lu_fid *fid, const struct osd_inode_id *id, + handle_t *th, enum oi_check_flags flags); -#endif /* __KERNEL__ */ +int fid_is_on_ost(struct osd_thread_info *info, struct osd_device *osd, + const struct lu_fid *fid, enum oi_check_flags flags); #endif /* _OSD_OI_H */