Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-13974 llog: check stale osp object
[fs/lustre-release.git]
/
lustre
/
include
/
lustre_osc.h
diff --git
a/lustre/include/lustre_osc.h
b/lustre/include/lustre_osc.h
index
cd7561c
..
de848ae
100644
(file)
--- a/
lustre/include/lustre_osc.h
+++ b/
lustre/include/lustre_osc.h
@@
-49,6
+49,7
@@
#include <libcfs/libcfs.h>
#include <obd.h>
#include <cl_object.h>
#include <libcfs/libcfs.h>
#include <obd.h>
#include <cl_object.h>
+#include <lustre_crypto.h>
/** \defgroup osc osc
* @{
/** \defgroup osc osc
* @{
@@
-168,6
+169,7
@@
struct osc_thread_info {
*/
pgoff_t oti_next_index;
pgoff_t oti_fn_index; /* first non-overlapped index */
*/
pgoff_t oti_next_index;
pgoff_t oti_fn_index; /* first non-overlapped index */
+ pgoff_t oti_ng_index; /* negative lock caching */
struct cl_sync_io oti_anchor;
struct cl_req_attr oti_req_attr;
struct lu_buf oti_ladvise_buf;
struct cl_sync_io oti_anchor;
struct cl_req_attr oti_req_attr;
struct lu_buf oti_ladvise_buf;
@@
-184,7
+186,7
@@
static inline __u64 osc_enq2ldlm_flags(__u32 enqflags)
if (enqflags & CEF_NONBLOCK)
result |= LDLM_FL_BLOCK_NOWAIT;
if (enqflags & CEF_GLIMPSE)
if (enqflags & CEF_NONBLOCK)
result |= LDLM_FL_BLOCK_NOWAIT;
if (enqflags & CEF_GLIMPSE)
- result |= LDLM_FL_HAS_INTENT;
+ result |= LDLM_FL_HAS_INTENT
|LDLM_FL_CBPENDING
;
if (enqflags & CEF_DISCARD_DATA)
result |= LDLM_FL_AST_DISCARD_DATA;
if (enqflags & CEF_PEEK)
if (enqflags & CEF_DISCARD_DATA)
result |= LDLM_FL_AST_DISCARD_DATA;
if (enqflags & CEF_PEEK)
@@
-221,11
+223,19
@@
enum osc_dap_flags {
* Just check if the desired lock exists, it won't hold reference
* count on lock.
*/
* Just check if the desired lock exists, it won't hold reference
* count on lock.
*/
- OSC_DAP_FL_TEST_LOCK =
1 << 0
,
+ OSC_DAP_FL_TEST_LOCK =
BIT(0)
,
/**
* Return the lock even if it is being canceled.
*/
/**
* Return the lock even if it is being canceled.
*/
- OSC_DAP_FL_CANCELING = 1 << 1
+ OSC_DAP_FL_CANCELING = BIT(1),
+ /**
+ * check ast data is present, requested to cancel cb
+ */
+ OSC_DAP_FL_AST = BIT(2),
+ /**
+ * look at right region for the desired lock
+ */
+ OSC_DAP_FL_RIGHT = BIT(3),
};
/*
};
/*
@@
-495,17
+505,17
@@
struct osc_page {
* An offset within page from which next transfer starts. This is used
* by cl_page_clip() to submit partial page transfers.
*/
* An offset within page from which next transfer starts. This is used
* by cl_page_clip() to submit partial page transfers.
*/
- int ops_from;
+ unsigned int ops_from:PAGE_SHIFT,
/**
/**
- * An offset within page at which next transfer ends.
+ * An offset within page at which next transfer ends
(inclusive)
.
*
* \see osc_page::ops_from.
*/
*
* \see osc_page::ops_from.
*/
- int ops_to;
+ ops_to:PAGE_SHIFT,
/**
* Boolean, true iff page is under transfer. Used for sanity checking.
*/
/**
* Boolean, true iff page is under transfer. Used for sanity checking.
*/
-
unsigned
ops_transfer_pinned:1,
+
ops_transfer_pinned:1,
/**
* in LRU?
*/
/**
* in LRU?
*/
@@
-689,6
+699,10
@@
int osc_fsync_ost(const struct lu_env *env, struct osc_object *obj,
void osc_io_fsync_end(const struct lu_env *env,
const struct cl_io_slice *slice);
void osc_read_ahead_release(const struct lu_env *env, void *cbdata);
void osc_io_fsync_end(const struct lu_env *env,
const struct cl_io_slice *slice);
void osc_read_ahead_release(const struct lu_env *env, void *cbdata);
+int osc_io_lseek_start(const struct lu_env *env,
+ const struct cl_io_slice *slice);
+void osc_io_lseek_end(const struct lu_env *env,
+ const struct cl_io_slice *slice);
/* osc_lock.c */
void osc_lock_to_lockless(const struct lu_env *env, struct osc_lock *ols,
/* osc_lock.c */
void osc_lock_to_lockless(const struct lu_env *env, struct osc_lock *ols,
@@
-737,7
+751,7
@@
static inline struct osc_io *osc_env_io(const struct lu_env *env)
static inline struct osc_device *lu2osc_dev(const struct lu_device *d)
{
static inline struct osc_device *lu2osc_dev(const struct lu_device *d)
{
- return container_of
0
(d, struct osc_device, od_cl.cd_lu_dev);
+ return container_of
_safe
(d, struct osc_device, od_cl.cd_lu_dev);
}
static inline struct obd_export *osc_export(const struct osc_object *obj)
}
static inline struct obd_export *osc_export(const struct osc_object *obj)
@@
-752,7
+766,7
@@
static inline struct client_obd *osc_cli(const struct osc_object *obj)
static inline struct osc_object *cl2osc(const struct cl_object *obj)
{
static inline struct osc_object *cl2osc(const struct cl_object *obj)
{
- return container_of
0
(obj, struct osc_object, oo_cl);
+ return container_of
_safe
(obj, struct osc_object, oo_cl);
}
static inline struct cl_object *osc2cl(const struct osc_object *obj)
}
static inline struct cl_object *osc2cl(const struct osc_object *obj)
@@
-762,8
+776,8
@@
static inline struct cl_object *osc2cl(const struct osc_object *obj)
static inline struct osc_device *obd2osc_dev(const struct obd_device *obd)
{
static inline struct osc_device *obd2osc_dev(const struct obd_device *obd)
{
- return container_of
0
(obd->obd_lu_dev, struct osc_device,
- od_cl.cd_lu_dev);
+ return container_of
_safe
(obd->obd_lu_dev, struct osc_device,
+
od_cl.cd_lu_dev);
}
static inline struct lu_device *osc2lu_dev(struct osc_device *osc)
}
static inline struct lu_device *osc2lu_dev(struct osc_device *osc)
@@
-778,13
+792,13
@@
static inline struct lu_object *osc2lu(struct osc_object *osc)
static inline struct osc_object *lu2osc(const struct lu_object *obj)
{
static inline struct osc_object *lu2osc(const struct lu_object *obj)
{
- return container_of
0
(obj, struct osc_object, oo_cl.co_lu);
+ return container_of
_safe
(obj, struct osc_object, oo_cl.co_lu);
}
static inline struct osc_io *cl2osc_io(const struct lu_env *env,
const struct cl_io_slice *slice)
{
}
static inline struct osc_io *cl2osc_io(const struct lu_env *env,
const struct cl_io_slice *slice)
{
- struct osc_io *oio = container_of
0
(slice, struct osc_io, oi_cl);
+ struct osc_io *oio = container_of(slice, struct osc_io, oi_cl);
LINVRNT(oio == osc_env_io(env));
return oio;
LINVRNT(oio == osc_env_io(env));
return oio;
@@
-812,12
+826,12
@@
static inline enum cl_lock_mode osc_ldlm2cl_lock(enum ldlm_mode mode)
static inline struct osc_page *cl2osc_page(const struct cl_page_slice *slice)
{
static inline struct osc_page *cl2osc_page(const struct cl_page_slice *slice)
{
- return container_of
0
(slice, struct osc_page, ops_cl);
+ return container_of
_safe
(slice, struct osc_page, ops_cl);
}
static inline struct osc_page *oap2osc(struct osc_async_page *oap)
{
}
static inline struct osc_page *oap2osc(struct osc_async_page *oap)
{
- return container_of
0
(oap, struct osc_page, ops_oap);
+ return container_of
_safe
(oap, struct osc_page, ops_oap);
}
static inline pgoff_t osc_index(struct osc_page *opg)
}
static inline pgoff_t osc_index(struct osc_page *opg)
@@
-847,7
+861,7
@@
osc_cl_page_osc(struct cl_page *page, struct osc_object *osc)
static inline struct osc_lock *cl2osc_lock(const struct cl_lock_slice *slice)
{
static inline struct osc_lock *cl2osc_lock(const struct cl_lock_slice *slice)
{
- return container_of
0
(slice, struct osc_lock, ols_cl);
+ return container_of
_safe
(slice, struct osc_lock, ols_cl);
}
static inline int osc_io_srvlock(struct osc_io *oio)
}
static inline int osc_io_srvlock(struct osc_io *oio)
@@
-921,7
+935,9
@@
struct osc_extent {
/** Non-delay RPC should be used for this extent. */
oe_ndelay:1,
/** direct IO pages */
/** Non-delay RPC should be used for this extent. */
oe_ndelay:1,
/** direct IO pages */
- oe_dio:1;
+ oe_dio:1,
+ /** this extent consists of RDMA only pages */
+ oe_is_rdma_only;
/** how many grants allocated for this extent.
* Grant allocated for this extent. There is no grant allocated
* for reading extents and sync write extents. */
/** how many grants allocated for this extent.
* Grant allocated for this extent. There is no grant allocated
* for reading extents and sync write extents. */