Commit bc4320a9 authored by John L. Hammond's avatar John L. Hammond Committed by Greg Kroah-Hartman

staging/lustre:llite: remove struct ll_ra_read

Ever since removal of the the unused function ll_ra_read_get(),
the struct ll_ra_read members lrr_reader and lrr_linkage and
the struct ll_readahead_state member ras_read_beads unnecessary
so remove them.
In struct vvp_io replace the struct ll_ra_read cui_bead member with
cui_ra_start and cui_ra_count.
Signed-off-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Reviewed-on: http://review.whamcloud.com/13347
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5971Reviewed-by: default avatarBobi Jam <bobijam@hotmail.com>
Reviewed-by: default avatarLai Siyao <lai.siyao@intel.com>
Reviewed-by: default avatarJinshan Xiong <jinshan.xiong@intel.com>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4a4eee07
...@@ -528,13 +528,6 @@ struct ll_sb_info { ...@@ -528,13 +528,6 @@ struct ll_sb_info {
struct completion ll_kobj_unregister; struct completion ll_kobj_unregister;
}; };
struct ll_ra_read {
pgoff_t lrr_start;
pgoff_t lrr_count;
struct task_struct *lrr_reader;
struct list_head lrr_linkage;
};
/* /*
* per file-descriptor read-ahead data. * per file-descriptor read-ahead data.
*/ */
...@@ -592,12 +585,6 @@ struct ll_readahead_state { ...@@ -592,12 +585,6 @@ struct ll_readahead_state {
* will not be accurate when dealing with reads issued via mmap. * will not be accurate when dealing with reads issued via mmap.
*/ */
unsigned long ras_request_index; unsigned long ras_request_index;
/*
* list of struct ll_ra_read's one per read(2) call current in
* progress against this file descriptor. Used by read-ahead code,
* protected by ->ras_lock.
*/
struct list_head ras_read_beads;
/* /*
* The following 3 items are used for detecting the stride I/O * The following 3 items are used for detecting the stride I/O
* mode. * mode.
...@@ -666,8 +653,7 @@ static inline int ll_need_32bit_api(struct ll_sb_info *sbi) ...@@ -666,8 +653,7 @@ static inline int ll_need_32bit_api(struct ll_sb_info *sbi)
#endif #endif
} }
void ll_ra_read_in(struct file *f, struct ll_ra_read *rar); void ll_ras_enter(struct file *f);
void ll_ra_read_ex(struct file *f, struct ll_ra_read *rar);
/* llite/lproc_llite.c */ /* llite/lproc_llite.c */
int ldebugfs_register_mountpoint(struct dentry *parent, int ldebugfs_register_mountpoint(struct dentry *parent,
...@@ -876,14 +862,12 @@ struct vvp_io { ...@@ -876,14 +862,12 @@ struct vvp_io {
} fault; } fault;
} fault; } fault;
} u; } u;
/**
* Read-ahead state used by read and page-fault IO contexts. /* Readahead state. */
*/ pgoff_t cui_ra_start;
struct ll_ra_read cui_bead; pgoff_t cui_ra_count;
/** /* Set when cui_ra_{start,count} have been initialized. */
* Set when cui_bead has been initialized. bool cui_ra_valid;
*/
int cui_ra_window_set;
}; };
/** /**
......
...@@ -258,38 +258,15 @@ static int index_in_window(unsigned long index, unsigned long point, ...@@ -258,38 +258,15 @@ static int index_in_window(unsigned long index, unsigned long point,
return start <= index && index <= end; return start <= index && index <= end;
} }
static struct ll_readahead_state *ll_ras_get(struct file *f) void ll_ras_enter(struct file *f)
{ {
struct ll_file_data *fd; struct ll_file_data *fd = LUSTRE_FPRIVATE(f);
struct ll_readahead_state *ras = &fd->fd_ras;
fd = LUSTRE_FPRIVATE(f);
return &fd->fd_ras;
}
void ll_ra_read_in(struct file *f, struct ll_ra_read *rar)
{
struct ll_readahead_state *ras;
ras = ll_ras_get(f);
spin_lock(&ras->ras_lock); spin_lock(&ras->ras_lock);
ras->ras_requests++; ras->ras_requests++;
ras->ras_request_index = 0; ras->ras_request_index = 0;
ras->ras_consecutive_requests++; ras->ras_consecutive_requests++;
rar->lrr_reader = current;
list_add(&rar->lrr_linkage, &ras->ras_read_beads);
spin_unlock(&ras->ras_lock);
}
void ll_ra_read_ex(struct file *f, struct ll_ra_read *rar)
{
struct ll_readahead_state *ras;
ras = ll_ras_get(f);
spin_lock(&ras->ras_lock);
list_del_init(&rar->lrr_linkage);
spin_unlock(&ras->ras_lock); spin_unlock(&ras->ras_lock);
} }
...@@ -551,7 +528,6 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io, ...@@ -551,7 +528,6 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io,
unsigned long start = 0, end = 0, reserved; unsigned long start = 0, end = 0, reserved;
unsigned long ra_end, len, mlen = 0; unsigned long ra_end, len, mlen = 0;
struct inode *inode; struct inode *inode;
struct ll_ra_read *bead;
struct ra_io_arg *ria = &vti->vti_ria; struct ra_io_arg *ria = &vti->vti_ria;
struct cl_object *clob; struct cl_object *clob;
int ret = 0; int ret = 0;
...@@ -575,17 +551,15 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io, ...@@ -575,17 +551,15 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io,
} }
spin_lock(&ras->ras_lock); spin_lock(&ras->ras_lock);
if (vio->cui_ra_window_set)
bead = &vio->cui_bead;
else
bead = NULL;
/* Enlarge the RA window to encompass the full read */ /* Enlarge the RA window to encompass the full read */
if (bead && ras->ras_window_start + ras->ras_window_len < if (vio->cui_ra_valid &&
bead->lrr_start + bead->lrr_count) { ras->ras_window_start + ras->ras_window_len <
ras->ras_window_len = bead->lrr_start + bead->lrr_count - vio->cui_ra_start + vio->cui_ra_count) {
ras->ras_window_len = vio->cui_ra_start + vio->cui_ra_count -
ras->ras_window_start; ras->ras_window_start;
} }
/* Reserve a part of the read-ahead window that we'll be issuing */ /* Reserve a part of the read-ahead window that we'll be issuing */
if (ras->ras_window_len) { if (ras->ras_window_len) {
start = ras->ras_next_readahead; start = ras->ras_next_readahead;
...@@ -641,15 +615,15 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io, ...@@ -641,15 +615,15 @@ int ll_readahead(const struct lu_env *env, struct cl_io *io,
CDEBUG(D_READA, DFID ": ria: %lu/%lu, bead: %lu/%lu, hit: %d\n", CDEBUG(D_READA, DFID ": ria: %lu/%lu, bead: %lu/%lu, hit: %d\n",
PFID(lu_object_fid(&clob->co_lu)), PFID(lu_object_fid(&clob->co_lu)),
ria->ria_start, ria->ria_end, ria->ria_start, ria->ria_end,
!bead ? 0 : bead->lrr_start, vio->cui_ra_valid ? vio->cui_ra_start : 0,
!bead ? 0 : bead->lrr_count, vio->cui_ra_valid ? vio->cui_ra_count : 0,
hit); hit);
/* at least to extend the readahead window to cover current read */ /* at least to extend the readahead window to cover current read */
if (!hit && bead && if (!hit && vio->cui_ra_valid &&
bead->lrr_start + bead->lrr_count > ria->ria_start) { vio->cui_ra_start + vio->cui_ra_count > ria->ria_start) {
/* to the end of current read window. */ /* to the end of current read window. */
mlen = bead->lrr_start + bead->lrr_count - ria->ria_start; mlen = vio->cui_ra_start + vio->cui_ra_count - ria->ria_start;
/* trim to RPC boundary */ /* trim to RPC boundary */
start = ria->ria_start & (PTLRPC_MAX_BRW_PAGES - 1); start = ria->ria_start & (PTLRPC_MAX_BRW_PAGES - 1);
mlen = min(mlen, PTLRPC_MAX_BRW_PAGES - start); mlen = min(mlen, PTLRPC_MAX_BRW_PAGES - start);
...@@ -730,7 +704,6 @@ void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras) ...@@ -730,7 +704,6 @@ void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras)
spin_lock_init(&ras->ras_lock); spin_lock_init(&ras->ras_lock);
ras_reset(inode, ras, 0); ras_reset(inode, ras, 0);
ras->ras_requests = 0; ras->ras_requests = 0;
INIT_LIST_HEAD(&ras->ras_read_beads);
} }
/* /*
......
...@@ -500,7 +500,6 @@ static int vvp_io_read_start(const struct lu_env *env, ...@@ -500,7 +500,6 @@ static int vvp_io_read_start(const struct lu_env *env,
struct cl_io *io = ios->cis_io; struct cl_io *io = ios->cis_io;
struct cl_object *obj = io->ci_obj; struct cl_object *obj = io->ci_obj;
struct inode *inode = vvp_object_inode(obj); struct inode *inode = vvp_object_inode(obj);
struct ll_ra_read *bead = &vio->cui_bead;
struct file *file = cio->cui_fd->fd_file; struct file *file = cio->cui_fd->fd_file;
int result; int result;
...@@ -530,14 +529,11 @@ static int vvp_io_read_start(const struct lu_env *env, ...@@ -530,14 +529,11 @@ static int vvp_io_read_start(const struct lu_env *env,
cio->cui_fd->fd_file->f_ra.ra_pages = 0; cio->cui_fd->fd_file->f_ra.ra_pages = 0;
/* initialize read-ahead window once per syscall */ /* initialize read-ahead window once per syscall */
if (!vio->cui_ra_window_set) { if (!vio->cui_ra_valid) {
vio->cui_ra_window_set = 1; vio->cui_ra_valid = true;
bead->lrr_start = cl_index(obj, pos); vio->cui_ra_start = cl_index(obj, pos);
/* vio->cui_ra_count = cl_index(obj, tot + PAGE_CACHE_SIZE - 1);
* XXX: explicit PAGE_CACHE_SIZE ll_ras_enter(file);
*/
bead->lrr_count = cl_index(obj, tot + PAGE_CACHE_SIZE - 1);
ll_ra_read_in(file, bead);
} }
/* BUG: 5972 */ /* BUG: 5972 */
...@@ -574,17 +570,6 @@ static int vvp_io_read_start(const struct lu_env *env, ...@@ -574,17 +570,6 @@ static int vvp_io_read_start(const struct lu_env *env,
return result; return result;
} }
static void vvp_io_read_fini(const struct lu_env *env, const struct cl_io_slice *ios)
{
struct vvp_io *vio = cl2vvp_io(env, ios);
struct ccc_io *cio = cl2ccc_io(env, ios);
if (vio->cui_ra_window_set)
ll_ra_read_ex(cio->cui_fd->fd_file, &vio->cui_bead);
vvp_io_fini(env, ios);
}
static int vvp_io_commit_sync(const struct lu_env *env, struct cl_io *io, static int vvp_io_commit_sync(const struct lu_env *env, struct cl_io *io,
struct cl_page_list *plist, int from, int to) struct cl_page_list *plist, int from, int to)
{ {
...@@ -1092,10 +1077,10 @@ static int vvp_io_read_page(const struct lu_env *env, ...@@ -1092,10 +1077,10 @@ static int vvp_io_read_page(const struct lu_env *env,
static const struct cl_io_operations vvp_io_ops = { static const struct cl_io_operations vvp_io_ops = {
.op = { .op = {
[CIT_READ] = { [CIT_READ] = {
.cio_fini = vvp_io_read_fini, .cio_fini = vvp_io_fini,
.cio_lock = vvp_io_read_lock, .cio_lock = vvp_io_read_lock,
.cio_start = vvp_io_read_start, .cio_start = vvp_io_read_start,
.cio_advance = ccc_io_advance .cio_advance = ccc_io_advance,
}, },
[CIT_WRITE] = { [CIT_WRITE] = {
.cio_fini = vvp_io_fini, .cio_fini = vvp_io_fini,
...@@ -1148,7 +1133,7 @@ int vvp_io_init(const struct lu_env *env, struct cl_object *obj, ...@@ -1148,7 +1133,7 @@ int vvp_io_init(const struct lu_env *env, struct cl_object *obj,
CL_IO_SLICE_CLEAN(cio, cui_cl); CL_IO_SLICE_CLEAN(cio, cui_cl);
cl_io_slice_add(io, &cio->cui_cl, obj, &vvp_io_ops); cl_io_slice_add(io, &cio->cui_cl, obj, &vvp_io_ops);
vio->cui_ra_window_set = 0; vio->cui_ra_valid = false;
result = 0; result = 0;
if (io->ci_type == CIT_READ || io->ci_type == CIT_WRITE) { if (io->ci_type == CIT_READ || io->ci_type == CIT_WRITE) {
size_t count; size_t count;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment