*/
/*
* This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
*
* lustre/osd/osd_internal.h
*
};
enum osd_t10_type {
- OSD_T10_TYPE_UNKNOWN = 0,
- OSD_T10_TYPE1_CRC,
- OSD_T10_TYPE3_CRC,
- OSD_T10_TYPE1_IP,
- OSD_T10_TYPE3_IP
+ OSD_T10_TYPE_UNKNOWN = 0,
+ OSD_T10_TYPE1 = 0x1,
+ OSD_T10_TYPE3 = 0x2,
+ OSD_T10_TYPE_CRC = 0x4,
+ OSD_T10_TYPE1_CRC = OSD_T10_TYPE1 | OSD_T10_TYPE_CRC,
+ OSD_T10_TYPE3_CRC = OSD_T10_TYPE3 | OSD_T10_TYPE_CRC,
+ OSD_T10_TYPE1_IP = OSD_T10_TYPE1,
+ OSD_T10_TYPE3_IP = OSD_T10_TYPE3,
};
/*
od_nonrotational:1;
- __s64 od_auto_scrub_interval;
__u32 od_dirent_journal;
int od_index;
struct proc_dir_entry *od_proc_entry;
struct osd_access_lock {
struct list_head tl_list;
struct osd_object *tl_obj;
+ loff_t tl_start;
+ loff_t tl_end;
+ int tl_mode;
bool tl_shared;
bool tl_truncate;
+ bool tl_punch;
};
struct osd_thandle {
struct page **oti_dio_pages;
int oti_dio_pages_used;
+
+ struct osd_it_ea_dirent *oti_seq_dirent;
+ struct osd_it_ea_dirent *oti_dir_dirent;
};
extern int ldiskfs_pdo;
return ll_vfs_setxattr(dentry, inode, name, buf, buflen, fl);
}
+static inline char *osd_oid_name(char *name, size_t name_size,
+ const struct lu_fid *fid, u64 id)
+{
+ snprintf(name, name_size,
+ (fid_seq_is_rsvd(fid_seq(fid)) ||
+ fid_seq_is_mdt0(fid_seq(fid)) ||
+ fid_seq_is_idif(fid_seq(fid))) ? "%llu" : "%llx", id);
+
+ return name;
+}
+
#ifdef CONFIG_PROC_FS
/* osd_lproc.c */
extern struct lprocfs_vars lprocfs_osd_obd_vars[];
struct osd_inode_id *id, struct lu_fid *fid);
int osd_ea_fid_set(struct osd_thread_info *info, struct inode *inode,
const struct lu_fid *fid, __u32 compat, __u32 incompat);
+struct osd_obj_seq *osd_seq_load(struct osd_thread_info *info,
+ struct osd_device *osd, u64 seq);
int osd_get_lma(struct osd_thread_info *info, struct inode *inode,
struct dentry *dentry, struct lustre_ost_attrs *loa);
void osd_add_oi_cache(struct osd_thread_info *info, struct osd_device *osd,
struct osd_inode_id *id, const struct lu_fid *fid);
int osd_get_idif(struct osd_thread_info *info, struct inode *inode,
struct dentry *dentry, struct lu_fid *fid);
+struct osd_it_ea *osd_it_dir_init(const struct lu_env *env, struct inode *inode,
+ __u32 attr);
+void osd_it_dir_fini(const struct lu_env *env, struct osd_it_ea *oie,
+ struct inode *inode);
+int osd_ldiskfs_it_fill(const struct lu_env *env, const struct dt_it *di);
int osd_obj_map_init(const struct lu_env *env, struct osd_device *osd);
void osd_obj_map_fini(struct osd_device *dev);
int osd_obj_spec_update(struct osd_thread_info *info, struct osd_device *osd,
const struct lu_fid *fid, const struct osd_inode_id *id,
handle_t *th);
+int osd_obj_del_entry(struct osd_thread_info *info, struct osd_device *osd,
+ struct dentry *dird, char *name, int namelen,
+ handle_t *th);
char *osd_lf_fid2name(const struct lu_fid *fid);
int osd_scrub_start(const struct lu_env *env, struct osd_device *dev,
# define ldiskfs_has_feature_dirdata(sb) \
LDISKFS_HAS_INCOMPAT_FEATURE(sb, LDISKFS_FEATURE_INCOMPAT_DIRDATA)
# endif
+# ifdef LDISKFS_FEATURE_INCOMPAT_LARGEDIR
+# define ldiskfs_has_feature_largedir(sb) \
+ LDISKFS_HAS_INCOMPAT_FEATURE(sb, LDISKFS_FEATURE_INCOMPAT_LARGEDIR)
+# define ldiskfs_set_feature_largedir(sb) \
+ LDISKFS_SET_INCOMPAT_FEATURE(sb, LDISKFS_FEATURE_INCOMPAT_LARGEDIR)
+# endif
# ifdef LDISKFS_FEATURE_COMPAT_HAS_JOURNAL
# define ldiskfs_has_feature_journal(sb) \
LDISKFS_HAS_COMPAT_FEATURE(sb, LDISKFS_FEATURE_COMPAT_HAS_JOURNAL)
int osd_trunc_lock(struct osd_object *obj, struct osd_thandle *oh,
bool shared);
void osd_trunc_unlock_all(const struct lu_env *env, struct list_head *list);
-void osd_process_truncates(struct list_head *list);
+void osd_process_truncates(const struct lu_env *env, struct list_head *list);
void osd_execute_truncate(struct osd_object *obj);
#ifdef HAVE_BIO_ENDIO_USES_ONE_ARG
#define osd_bio_nr_segs(bio) bio_segments((bio))
#endif /* HAVE_BIO_BI_PHYS_SEGMENTS */
+#ifdef HAVE_GET_INODE_USAGE
+#define lock_dquot_transfer(inode) down_read(&LDISKFS_I(inode)->xattr_sem)
+#define unlock_dquot_transfer(inode) up_read(&LDISKFS_I(inode)->xattr_sem)
+#else
+#define lock_dquot_transfer(inode) do {} while (0)
+#define unlock_dquot_transfer(inode) do {} while (0)
+#endif
+
#endif /* _OSD_INTERNAL_H */