* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
struct lu_attr {
/** size in bytes */
__u64 la_size;
- /** modification time in seconds since Epoch */
- obd_time la_mtime;
- /** access time in seconds since Epoch */
- obd_time la_atime;
- /** change time in seconds since Epoch */
- obd_time la_ctime;
+ /** modification time in seconds since Epoch */
+ s64 la_mtime;
+ /** access time in seconds since Epoch */
+ s64 la_atime;
+ /** change time in seconds since Epoch */
+ s64 la_ctime;
/** 512-byte blocks allocated to object */
__u64 la_blocks;
/** permission bits and file type */
__u64 la_valid;
};
+static inline void lu_attr_cpu_to_le(struct lu_attr *dst_attr,
+ struct lu_attr *src_attr)
+{
+ dst_attr->la_size = cpu_to_le64(src_attr->la_size);
+ dst_attr->la_mtime = cpu_to_le64(src_attr->la_mtime);
+ dst_attr->la_atime = cpu_to_le64(src_attr->la_atime);
+ dst_attr->la_ctime = cpu_to_le64(src_attr->la_ctime);
+ dst_attr->la_blocks = cpu_to_le64(src_attr->la_blocks);
+ dst_attr->la_mode = cpu_to_le32(src_attr->la_mode);
+ dst_attr->la_uid = cpu_to_le32(src_attr->la_uid);
+ dst_attr->la_gid = cpu_to_le32(src_attr->la_gid);
+ dst_attr->la_flags = cpu_to_le32(src_attr->la_flags);
+ dst_attr->la_nlink = cpu_to_le32(src_attr->la_nlink);
+ dst_attr->la_blkbits = cpu_to_le32(src_attr->la_blkbits);
+ dst_attr->la_blksize = cpu_to_le32(src_attr->la_blksize);
+ dst_attr->la_rdev = cpu_to_le32(src_attr->la_rdev);
+ dst_attr->la_valid = cpu_to_le64(src_attr->la_valid);
+}
+
+static inline void lu_attr_le_to_cpu(struct lu_attr *dst_attr,
+ struct lu_attr *src_attr)
+{
+ dst_attr->la_size = le64_to_cpu(src_attr->la_size);
+ dst_attr->la_mtime = le64_to_cpu(src_attr->la_mtime);
+ dst_attr->la_atime = le64_to_cpu(src_attr->la_atime);
+ dst_attr->la_ctime = le64_to_cpu(src_attr->la_ctime);
+ dst_attr->la_blocks = le64_to_cpu(src_attr->la_blocks);
+ dst_attr->la_mode = le32_to_cpu(src_attr->la_mode);
+ dst_attr->la_uid = le32_to_cpu(src_attr->la_uid);
+ dst_attr->la_gid = le32_to_cpu(src_attr->la_gid);
+ dst_attr->la_flags = le32_to_cpu(src_attr->la_flags);
+ dst_attr->la_nlink = le32_to_cpu(src_attr->la_nlink);
+ dst_attr->la_blkbits = le32_to_cpu(src_attr->la_blkbits);
+ dst_attr->la_blksize = le32_to_cpu(src_attr->la_blksize);
+ dst_attr->la_rdev = le32_to_cpu(src_attr->la_rdev);
+ dst_attr->la_valid = le64_to_cpu(src_attr->la_valid);
+}
+
/** Bit-mask of valid attributes */
enum la_valid {
LA_ATIME = 1 << 0,
struct lu_site_bkt_data {
/**
- * number of busy object on this bucket
+ * number of object in this bucket on the lsb_lru list.
*/
- long lsb_busy;
+ long lsb_lru_len;
/**
* LRU list, updated on each access to object. Protected by
* bucket lock of lu_site::ls_obj_hash.
* XXX: a hack! fld has to find md_site via site, remove when possible
*/
struct seq_server_site *ld_seq_site;
+ /**
+ * Pointer to the lu_target for this site.
+ */
+ struct lu_target *ls_tgt;
};
static inline struct lu_site_bkt_data *
struct lu_device *dev,
const struct lu_fid *f,
const struct lu_object_conf *conf);
-void lu_object_purge(const struct lu_env *env, struct lu_device *dev,
- const struct lu_fid *f);
struct lu_object *lu_object_find_slice(const struct lu_env *env,
struct lu_device *dev,
const struct lu_fid *f,
int lu_buf_check_and_grow(struct lu_buf *buf, size_t len);
struct lu_buf *lu_buf_check_and_alloc(struct lu_buf *buf, size_t len);
+extern __u32 lu_context_tags_default;
+extern __u32 lu_session_tags_default;
+
+static inline bool lu_device_is_cl(const struct lu_device *d)
+{
+ return d->ld_type->ldt_tags & LU_DEVICE_CL;
+}
+
+static inline bool lu_object_is_cl(const struct lu_object *o)
+{
+ return lu_device_is_cl(o->lo_dev);
+}
+
/** @} lu */
#endif /* __LUSTRE_LU_OBJECT_H */