struct list_head oo_xattr_list;
struct lu_object_header *oo_header;
+ __u64 oo_dirent_count;
};
struct osd_obj_seq {
enum osd_op_type {
OSD_OT_ATTR_SET = 0,
- OSD_OT_PUNCH = 1,
- OSD_OT_XATTR_SET = 2,
- OSD_OT_CREATE = 3,
- OSD_OT_DESTROY = 4,
- OSD_OT_REF_ADD = 5,
- OSD_OT_REF_DEL = 6,
- OSD_OT_WRITE = 7,
- OSD_OT_INSERT = 8,
- OSD_OT_DELETE = 9,
- OSD_OT_QUOTA = 10,
- OSD_OT_MAX = 11
+ OSD_OT_PUNCH,
+ OSD_OT_XATTR_SET,
+ OSD_OT_CREATE,
+ OSD_OT_DESTROY,
+ OSD_OT_REF_ADD,
+ OSD_OT_REF_DEL,
+ OSD_OT_WRITE,
+ OSD_OT_INSERT,
+ OSD_OT_DELETE,
+ OSD_OT_QUOTA,
+ OSD_OT_PREALLOC,
+ OSD_OT_MAX
};
struct osd_access_lock {
int osd_security_file_alloc(struct file *file);
+#define osd_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode), flag)
+
#ifdef HAVE_INODE_TIMESPEC64
# define osd_timespec timespec64
-# define osd_timespec_trunc(ts, gran) timespec64_trunc((ts), (gran))
#else
# define osd_timespec timespec
-# define osd_timespec_trunc(ts, gran) timespec_trunc((ts), (gran))
#endif
static inline struct osd_timespec osd_inode_time(struct inode *inode,
{
struct osd_timespec ts = { .tv_sec = seconds };
- return osd_timespec_trunc(ts, inode->i_sb->s_time_gran);
+ return ts;
}
#define OSD_INS_CACHE_SIZE 8
extern int ldiskfs_pdo;
+/* autoconf test is in lustre-build-ldiskfs.m4 */
#ifdef HAVE_BVEC_ITER_ALL
#define DECLARE_BVEC_ITER_ALL(iter) struct bvec_iter_all iter
#else
#define DECLARE_BVEC_ITER_ALL(iter) int iter
#endif
-#ifndef HAVE_VFS_SETXATTR
-#define osd_setxattr(dentry, inode, name, buf, len, flag) \
- ((inode)->i_op->setxattr(dentry, name, buf, len, flag))
-#define osd_getxattr(dentry, inode, name, buf, len) \
- ((inode)->i_op->getxattr(dentry, name, buf, len))
-#define osd_removexattr(dentry, inode, name) \
- ((inode)->i_op->removexattr(dentry, name))
-#else /* HAVE_VFS_SETXATTR */
-#define osd_setxattr(dentry, inode, name, buf, len, flag) \
- __vfs_setxattr(dentry, inode, name, buf, len, flag)
-#define osd_getxattr(dentry, inode, name, buf, len) \
- __vfs_getxattr(dentry, inode, name, buf, len)
-#define osd_removexattr(dentry, inode, name) \
- __vfs_removexattr(dentry, name)
-#endif /* !HAVE_VFS_SETXATTR */
-
static inline int __osd_xattr_get(struct inode *inode, struct dentry *dentry,
const char *name, void *buf, int len)
{
dentry->d_inode = inode;
dentry->d_sb = inode->i_sb;
- return osd_getxattr(dentry, inode, name, buf, len);
+ return ll_vfs_getxattr(dentry, inode, name, buf, len);
}
static inline int __osd_xattr_set(struct osd_thread_info *info,
dquot_initialize(inode);
dentry->d_inode = inode;
dentry->d_sb = inode->i_sb;
- return osd_setxattr(dentry, inode, name, buf, buflen, fl);
+ return ll_vfs_setxattr(dentry, inode, name, buf, buflen, fl);
}
#ifdef CONFIG_PROC_FS
#ifdef HAVE_LDISKFS_IGET_WITH_FLAGS
# define osd_ldiskfs_iget(sb, ino) \
- ldiskfs_iget((sb), (ino), LDISKFS_IGET_HANDLE)
+ ldiskfs_iget((sb), (ino), \
+ LDISKFS_IGET_HANDLE | LDISKFS_IGET_SPECIAL)
#else
# define osd_ldiskfs_iget(sb, ino) ldiskfs_iget((sb), (ino))
#endif
return ERR_PTR(rc);
return ldiskfs_append(handle, inode, nblock);
}
-# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
+
+# ifdef HAVE___LDISKFS_FIND_ENTRY
+# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
(__ldiskfs_find_entry(dir, name, de, inlined, lock) ?: \
ERR_PTR(-ENOENT))
+# else
+# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
+ (ldiskfs_find_entry_locked(dir, name, de, inlined, lock) ?: \
+ ERR_PTR(-ENOENT))
+# endif
+
# define osd_journal_start(inode, type, nblocks) \
ldiskfs_journal_start(inode, type, nblocks)
# define osd_transaction_size(dev) \
return bh;
}
-# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
+# ifdef HAVE___LDISKFS_FIND_ENTRY
+# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
(__ldiskfs_find_entry(dir, name, de, lock) ?: \
ERR_PTR(-ENOENT))
+# else
+# define osd_ldiskfs_find_entry(dir, name, de, inlined, lock) \
+ (ldiskfs_find_entry_locked(dir, name, de, lock) ?: \
+ ERR_PTR(-ENOENT))
+# endif
# define osd_journal_start(inode, type, nblocks) \
ldiskfs_journal_start(inode, nblocks)
# define osd_transaction_size(dev) \
(osd_journal(dev)->j_max_transaction_buffers)
+#endif /* LDISKFS_HT_MISC */
+
+#ifndef HAVE___LDISKFS_FIND_ENTRY
+# define __ldiskfs_add_entry(handle, child, inode, hlock) \
+ ldiskfs_add_entry_locked(handle, child, inode, hlock)
#endif
/*
static inline struct osd_device *osd_dt_dev(const struct dt_device *d)
{
- LASSERT(lu_device_is_osd(&d->dd_lu_dev));
- return container_of0(d, struct osd_device, od_dt_dev);
+ LASSERT(lu_device_is_osd(&d->dd_lu_dev));
+ return container_of(d, struct osd_device, od_dt_dev);
}
static inline struct osd_device *osd_dev(const struct lu_device *d)
{
- LASSERT(lu_device_is_osd(d));
- return osd_dt_dev(container_of0(d, struct dt_device, dd_lu_dev));
+ LASSERT(lu_device_is_osd(d));
+ return osd_dt_dev(container_of(d, struct dt_device, dd_lu_dev));
}
static inline struct osd_device *osd_obj2dev(const struct osd_object *o)
static inline struct osd_object *osd_obj(const struct lu_object *o)
{
- LASSERT(lu_device_is_osd(o->lo_dev));
- return container_of0(o, struct osd_object, oo_dt.do_lu);
+ LASSERT(lu_device_is_osd(o->lo_dev));
+ return container_of(o, struct osd_object, oo_dt.do_lu);
}
static inline struct osd_object *osd_dt_obj(const struct dt_object *d)
oh->ot_credits += credits;
}
+/* linux: v5.4-rc3-21-g933f1c1e0b75 renamed h_buffer_credits */
+#ifdef HAVE_JOURNAL_TOTAL_CREDITS
+#define h_buffer_credits h_total_credits
+#endif
+
static inline void osd_trans_exec_op(const struct lu_env *env,
struct thandle *th,
enum osd_op_type op)
int osd_trunc_lock(struct osd_object *obj, struct osd_thandle *oh,
bool shared);
-void osd_trunc_unlock_all(struct list_head *list);
+void osd_trunc_unlock_all(const struct lu_env *env, struct list_head *list);
void osd_process_truncates(struct list_head *list);
void osd_execute_truncate(struct osd_object *obj);