-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
- */
-/*
- * Copyright (c) 2011 Whamcloud, Inc.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#include <dt_object.h>
#include <lvfs.h>
+/* LU-1051, temperary solution to reduce llog credits */
+#define DECLARE_LLOG_REWRITE 0
+#define DECLARE_LLOG_WRITE INT_MAX
+
struct md_device;
struct md_device_operations;
struct md_object;
struct md_capainfo {
__u32 mc_auth;
__u32 mc_padding;
- const struct lu_fid *mc_fid[MD_CAPAINFO_MAX];
+ struct lu_fid mc_fid[MD_CAPAINFO_MAX];
struct lustre_capa *mc_capa[MD_CAPAINFO_MAX];
};
MA_LMV = (1 << 4),
MA_ACL_DEF = (1 << 5),
MA_LOV_DEF = (1 << 6),
-/* (Layout lock will used #7 here) */
+ MA_LAY_GEN = (1 << 7),
MA_HSM = (1 << 8),
MA_SOM = (1 << 9),
MA_PFID = (1 << 10)
__u64 ma_need;
__u64 ma_attr_flags;
struct lu_attr ma_attr;
+ struct lu_fid ma_pfid;
+ struct md_hsm ma_hsm;
struct lov_mds_md *ma_lmm;
- int ma_lmm_size;
struct lmv_stripe_md *ma_lmv;
- int ma_lmv_size;
void *ma_acl;
- int ma_acl_size;
struct llog_cookie *ma_cookie;
- int ma_cookie_size;
struct lustre_capa *ma_capa;
- struct md_hsm ma_hsm;
struct md_som_data *ma_som;
- struct lu_fid ma_pfid;
+ int ma_lmm_size;
+ int ma_big_lmm_used:1;
+ int ma_lmv_size;
+ int ma_acl_size;
+ int ma_cookie_size;
+ __u16 ma_layout_gen;
};
/** Additional parameters for create */
struct md_object *cobj, const struct lu_name *lname,
struct md_attr *ma);
+ /** This method is used to compare a requested layout to an existing
+ * layout (struct lov_mds_md_v1/3 vs struct lov_mds_md_v1/3) */
+ int (*mdo_lum_lmm_cmp)(const struct lu_env *env,
+ struct md_object *cobj,
+ const struct md_op_spec *spec,
+ struct md_attr *ma);
+
/** partial ops for cross-ref case */
int (*mdo_name_insert)(const struct lu_env *env,
struct md_object *obj,
int *md_size, int *cookie_size);
int (*mdo_statfs)(const struct lu_env *env, struct md_device *m,
- cfs_kstatfs_t *sfs);
+ struct obd_statfs *sfs);
int (*mdo_init_capa_ctxt)(const struct lu_env *env, struct md_device *m,
int mode, unsigned long timeout, __u32 alg,
return c->mo_dir_ops->mdo_unlink(env, p, c, lname, ma);
}
+static inline int mdo_lum_lmm_cmp(const struct lu_env *env,
+ struct md_object *c,
+ const struct md_op_spec *spec,
+ struct md_attr *ma)
+{
+ LASSERT(c->mo_dir_ops->mdo_lum_lmm_cmp);
+ return c->mo_dir_ops->mdo_lum_lmm_cmp(env, c, spec, ma);
+}
+
static inline int mdo_name_insert(const struct lu_env *env,
struct md_object *p,
const struct lu_name *lname,