From: James Simmons <jsimmons@infradead.org> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, devel@driverdev.osuosl.org, Andreas Dilger <andreas.dilger@intel.com>, Oleg Drokin <oleg.drokin@intel.com> Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Lustre Development List <lustre-devel@lists.lustre.org>, Bobi Jam <bobijam.xu@intel.com>, Jinshan Xiong <jinshan.xiong@intel.com>, James Simmons <jsimmons@infradead.org> Subject: [PATCH 32/41] staging: lustre: llite: restart short read/write for normal IO Date: Sun, 2 Oct 2016 22:28:28 -0400 [thread overview] Message-ID: <1475461717-21631-33-git-send-email-jsimmons@infradead.org> (raw) In-Reply-To: <1475461717-21631-1-git-send-email-jsimmons@infradead.org> From: Bobi Jam <bobijam.xu@intel.com> If normal IO got short read/write, we'd restart the IO from where we've accomplished until we meet EOF or error happens. Signed-off-by: Bobi Jam <bobijam.xu@intel.com> Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6389 Reviewed-on: http://review.whamcloud.com/14123 Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> --- drivers/staging/lustre/lnet/libcfs/fail.c | 1 + .../staging/lustre/lustre/include/obd_support.h | 2 + drivers/staging/lustre/lustre/llite/file.c | 41 ++++++++++++-------- drivers/staging/lustre/lustre/llite/vvp_io.c | 19 ++++++++- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/drivers/staging/lustre/lnet/libcfs/fail.c b/drivers/staging/lustre/lnet/libcfs/fail.c index e4b1a0a..3a9c8dd 100644 --- a/drivers/staging/lustre/lnet/libcfs/fail.c +++ b/drivers/staging/lustre/lnet/libcfs/fail.c @@ -113,6 +113,7 @@ int __cfs_fail_check_set(__u32 id, __u32 value, int set) break; case CFS_FAIL_LOC_RESET: cfs_fail_loc = value; + atomic_set(&cfs_fail_count, 0); break; default: LASSERTF(0, "called with bad set %u\n", set); diff --git a/drivers/staging/lustre/lustre/include/obd_support.h b/drivers/staging/lustre/lustre/include/obd_support.h index 1233c34..7f3f8cd 100644 --- a/drivers/staging/lustre/lustre/include/obd_support.h +++ b/drivers/staging/lustre/lustre/include/obd_support.h @@ -458,6 +458,8 @@ extern char obd_jobid_var[]; #define OBD_FAIL_LOV_INIT 0x1403 #define OBD_FAIL_GLIMPSE_DELAY 0x1404 #define OBD_FAIL_LLITE_XATTR_ENOMEM 0x1405 +#define OBD_FAIL_MAKE_LOVEA_HOLE 0x1406 +#define OBD_FAIL_LLITE_LOST_LAYOUT 0x1407 #define OBD_FAIL_GETATTR_DELAY 0x1409 #define OBD_FAIL_FID_INDIR 0x1501 diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index 94caf4f..9bf50bf 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -972,9 +972,11 @@ ll_file_io_generic(const struct lu_env *env, struct vvp_io_args *args, { struct ll_inode_info *lli = ll_i2info(file_inode(file)); struct ll_file_data *fd = LUSTRE_FPRIVATE(file); + struct vvp_io *vio = vvp_env_io(env); struct range_lock range; struct cl_io *io; - ssize_t result; + ssize_t result = 0; + int rc = 0; CDEBUG(D_VFSTRACE, "file: %s, type: %d ppos: %llu, count: %zu\n", file->f_path.dentry->d_name.name, iot, *ppos, count); @@ -1010,9 +1012,8 @@ restart: CDEBUG(D_VFSTRACE, "Range lock [%llu, %llu]\n", range.rl_node.in_extent.start, range.rl_node.in_extent.end); - result = range_lock(&lli->lli_write_tree, - &range); - if (result < 0) + rc = range_lock(&lli->lli_write_tree, &range); + if (rc < 0) goto out; range_locked = true; @@ -1028,7 +1029,7 @@ restart: LBUG(); } ll_cl_add(file, env, io); - result = cl_io_loop(env, io); + rc = cl_io_loop(env, io); ll_cl_remove(file, env); if (args->via_io_subtype == IO_NORMAL) up_read(&lli->lli_trunc_sem); @@ -1040,24 +1041,26 @@ restart: } } else { /* cl_io_rw_init() handled IO */ - result = io->ci_result; + rc = io->ci_result; } if (io->ci_nob > 0) { result = io->ci_nob; + count -= io->ci_nob; *ppos = io->u.ci_wr.wr.crw_pos; + + /* prepare IO restart */ + if (count > 0 && args->via_io_subtype == IO_NORMAL) + args->u.normal.via_iter = vio->vui_iter; } - goto out; out: cl_io_fini(env, io); - /* If any bit been read/written (result != 0), we just return - * short read/write instead of restart io. - */ - if ((result == 0 || result == -ENODATA) && io->ci_need_restart) { - CDEBUG(D_VFSTRACE, "Restart %s on %pD from %lld, count:%zu\n", + + if ((!rc || rc == -ENODATA) && count > 0 && io->ci_need_restart) { + CDEBUG(D_VFSTRACE, "%s: restart %s from %lld, count:%zu, result: %zd\n", + file_dentry(file)->d_name.name, iot == CIT_READ ? "read" : "write", - file, *ppos, count); - LASSERTF(io->ci_nob == 0, "%zd\n", io->ci_nob); + *ppos, count, result); goto restart; } @@ -1070,13 +1073,19 @@ out: ll_stats_ops_tally(ll_i2sbi(file_inode(file)), LPROC_LL_WRITE_BYTES, result); fd->fd_write_failed = false; - } else if (result != -ERESTARTSYS) { + } else if (!result && !rc) { + rc = io->ci_result; + if (rc < 0) + fd->fd_write_failed = true; + else + fd->fd_write_failed = false; + } else if (rc != -ERESTARTSYS) { fd->fd_write_failed = true; } } CDEBUG(D_VFSTRACE, "iot: %d, result: %zd\n", iot, result); - return result; + return result > 0 ? result : rc; } static ssize_t ll_file_read_iter(struct kiocb *iocb, struct iov_iter *to) diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c index 8f1964f..5f93db8 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_io.c +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -84,9 +84,10 @@ static bool can_populate_pages(const struct lu_env *env, struct cl_io *io, /* don't need lock here to check lli_layout_gen as we have held * extent lock and GROUP lock has to hold to swap layout */ - if (ll_layout_version_get(lli) != vio->vui_layout_gen) { + if (ll_layout_version_get(lli) != vio->vui_layout_gen || + OBD_FAIL_CHECK_RESET(OBD_FAIL_LLITE_LOST_LAYOUT, 0)) { io->ci_need_restart = 1; - /* this will return application a short read/write */ + /* this will cause a short read/write */ io->ci_continue = 0; rc = false; } @@ -960,6 +961,20 @@ static int vvp_io_write_start(const struct lu_env *env, CDEBUG(D_VFSTRACE, "write: [%lli, %lli)\n", pos, pos + (long long)cnt); + /* + * The maximum Lustre file size is variable, based on the OST maximum + * object size and number of stripes. This needs another check in + * addition to the VFS checks earlier. + */ + if (pos + cnt > ll_file_maxbytes(inode)) { + CDEBUG(D_INODE, + "%s: file " DFID " offset %llu > maxbytes %llu\n", + ll_get_fsname(inode->i_sb, NULL, 0), + PFID(ll_inode2fid(inode)), pos + cnt, + ll_file_maxbytes(inode)); + return -EFBIG; + } + if (!vio->vui_iter) { /* from a temp io in ll_cl_init(). */ result = 0; -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: James Simmons <jsimmons@infradead.org> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, devel@driverdev.osuosl.org, Andreas Dilger <andreas.dilger@intel.com>, Oleg Drokin <oleg.drokin@intel.com> Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Lustre Development List <lustre-devel@lists.lustre.org>, Bobi Jam <bobijam.xu@intel.com>, Jinshan Xiong <jinshan.xiong@intel.com>, James Simmons <jsimmons@infradead.org> Subject: [lustre-devel] [PATCH 32/41] staging: lustre: llite: restart short read/write for normal IO Date: Sun, 2 Oct 2016 22:28:28 -0400 [thread overview] Message-ID: <1475461717-21631-33-git-send-email-jsimmons@infradead.org> (raw) In-Reply-To: <1475461717-21631-1-git-send-email-jsimmons@infradead.org> From: Bobi Jam <bobijam.xu@intel.com> If normal IO got short read/write, we'd restart the IO from where we've accomplished until we meet EOF or error happens. Signed-off-by: Bobi Jam <bobijam.xu@intel.com> Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com> Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6389 Reviewed-on: http://review.whamcloud.com/14123 Reviewed-by: Andreas Dilger <andreas.dilger@intel.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: James Simmons <jsimmons@infradead.org> --- drivers/staging/lustre/lnet/libcfs/fail.c | 1 + .../staging/lustre/lustre/include/obd_support.h | 2 + drivers/staging/lustre/lustre/llite/file.c | 41 ++++++++++++-------- drivers/staging/lustre/lustre/llite/vvp_io.c | 19 ++++++++- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/drivers/staging/lustre/lnet/libcfs/fail.c b/drivers/staging/lustre/lnet/libcfs/fail.c index e4b1a0a..3a9c8dd 100644 --- a/drivers/staging/lustre/lnet/libcfs/fail.c +++ b/drivers/staging/lustre/lnet/libcfs/fail.c @@ -113,6 +113,7 @@ int __cfs_fail_check_set(__u32 id, __u32 value, int set) break; case CFS_FAIL_LOC_RESET: cfs_fail_loc = value; + atomic_set(&cfs_fail_count, 0); break; default: LASSERTF(0, "called with bad set %u\n", set); diff --git a/drivers/staging/lustre/lustre/include/obd_support.h b/drivers/staging/lustre/lustre/include/obd_support.h index 1233c34..7f3f8cd 100644 --- a/drivers/staging/lustre/lustre/include/obd_support.h +++ b/drivers/staging/lustre/lustre/include/obd_support.h @@ -458,6 +458,8 @@ extern char obd_jobid_var[]; #define OBD_FAIL_LOV_INIT 0x1403 #define OBD_FAIL_GLIMPSE_DELAY 0x1404 #define OBD_FAIL_LLITE_XATTR_ENOMEM 0x1405 +#define OBD_FAIL_MAKE_LOVEA_HOLE 0x1406 +#define OBD_FAIL_LLITE_LOST_LAYOUT 0x1407 #define OBD_FAIL_GETATTR_DELAY 0x1409 #define OBD_FAIL_FID_INDIR 0x1501 diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index 94caf4f..9bf50bf 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -972,9 +972,11 @@ ll_file_io_generic(const struct lu_env *env, struct vvp_io_args *args, { struct ll_inode_info *lli = ll_i2info(file_inode(file)); struct ll_file_data *fd = LUSTRE_FPRIVATE(file); + struct vvp_io *vio = vvp_env_io(env); struct range_lock range; struct cl_io *io; - ssize_t result; + ssize_t result = 0; + int rc = 0; CDEBUG(D_VFSTRACE, "file: %s, type: %d ppos: %llu, count: %zu\n", file->f_path.dentry->d_name.name, iot, *ppos, count); @@ -1010,9 +1012,8 @@ restart: CDEBUG(D_VFSTRACE, "Range lock [%llu, %llu]\n", range.rl_node.in_extent.start, range.rl_node.in_extent.end); - result = range_lock(&lli->lli_write_tree, - &range); - if (result < 0) + rc = range_lock(&lli->lli_write_tree, &range); + if (rc < 0) goto out; range_locked = true; @@ -1028,7 +1029,7 @@ restart: LBUG(); } ll_cl_add(file, env, io); - result = cl_io_loop(env, io); + rc = cl_io_loop(env, io); ll_cl_remove(file, env); if (args->via_io_subtype == IO_NORMAL) up_read(&lli->lli_trunc_sem); @@ -1040,24 +1041,26 @@ restart: } } else { /* cl_io_rw_init() handled IO */ - result = io->ci_result; + rc = io->ci_result; } if (io->ci_nob > 0) { result = io->ci_nob; + count -= io->ci_nob; *ppos = io->u.ci_wr.wr.crw_pos; + + /* prepare IO restart */ + if (count > 0 && args->via_io_subtype == IO_NORMAL) + args->u.normal.via_iter = vio->vui_iter; } - goto out; out: cl_io_fini(env, io); - /* If any bit been read/written (result != 0), we just return - * short read/write instead of restart io. - */ - if ((result == 0 || result == -ENODATA) && io->ci_need_restart) { - CDEBUG(D_VFSTRACE, "Restart %s on %pD from %lld, count:%zu\n", + + if ((!rc || rc == -ENODATA) && count > 0 && io->ci_need_restart) { + CDEBUG(D_VFSTRACE, "%s: restart %s from %lld, count:%zu, result: %zd\n", + file_dentry(file)->d_name.name, iot == CIT_READ ? "read" : "write", - file, *ppos, count); - LASSERTF(io->ci_nob == 0, "%zd\n", io->ci_nob); + *ppos, count, result); goto restart; } @@ -1070,13 +1073,19 @@ out: ll_stats_ops_tally(ll_i2sbi(file_inode(file)), LPROC_LL_WRITE_BYTES, result); fd->fd_write_failed = false; - } else if (result != -ERESTARTSYS) { + } else if (!result && !rc) { + rc = io->ci_result; + if (rc < 0) + fd->fd_write_failed = true; + else + fd->fd_write_failed = false; + } else if (rc != -ERESTARTSYS) { fd->fd_write_failed = true; } } CDEBUG(D_VFSTRACE, "iot: %d, result: %zd\n", iot, result); - return result; + return result > 0 ? result : rc; } static ssize_t ll_file_read_iter(struct kiocb *iocb, struct iov_iter *to) diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c index 8f1964f..5f93db8 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_io.c +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -84,9 +84,10 @@ static bool can_populate_pages(const struct lu_env *env, struct cl_io *io, /* don't need lock here to check lli_layout_gen as we have held * extent lock and GROUP lock has to hold to swap layout */ - if (ll_layout_version_get(lli) != vio->vui_layout_gen) { + if (ll_layout_version_get(lli) != vio->vui_layout_gen || + OBD_FAIL_CHECK_RESET(OBD_FAIL_LLITE_LOST_LAYOUT, 0)) { io->ci_need_restart = 1; - /* this will return application a short read/write */ + /* this will cause a short read/write */ io->ci_continue = 0; rc = false; } @@ -960,6 +961,20 @@ static int vvp_io_write_start(const struct lu_env *env, CDEBUG(D_VFSTRACE, "write: [%lli, %lli)\n", pos, pos + (long long)cnt); + /* + * The maximum Lustre file size is variable, based on the OST maximum + * object size and number of stripes. This needs another check in + * addition to the VFS checks earlier. + */ + if (pos + cnt > ll_file_maxbytes(inode)) { + CDEBUG(D_INODE, + "%s: file " DFID " offset %llu > maxbytes %llu\n", + ll_get_fsname(inode->i_sb, NULL, 0), + PFID(ll_inode2fid(inode)), pos + cnt, + ll_file_maxbytes(inode)); + return -EFBIG; + } + if (!vio->vui_iter) { /* from a temp io in ll_cl_init(). */ result = 0; -- 1.7.1
next prev parent reply other threads:[~2016-10-03 2:31 UTC|newest] Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-10-03 2:27 [PATCH 00/41] missing patches for lustre 2.7.50 to 2.7.55 James Simmons 2016-10-03 2:27 ` [lustre-devel] " James Simmons 2016-10-03 2:27 ` [PATCH 01/41] staging: lustre: obdclass: fix race during key quiescency James Simmons 2016-10-03 2:27 ` [lustre-devel] " James Simmons 2016-10-03 2:27 ` [PATCH 02/41] staging: lustre: obdclass: Add synchro in lu_context_key_degister() James Simmons 2016-10-03 2:27 ` [lustre-devel] " James Simmons 2016-10-03 2:27 ` [PATCH 03/41] staging: lustre: llite: remove client Size on MDS support James Simmons 2016-10-03 2:27 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 04/41] staging: lustre: obd: " James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 05/41] staging: lustre: clio: Revise read ahead implementation James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 06/41] staging: lustre: ldlm: remove unnecessary EXPORT_SYMBOL James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 07/41] staging: lustre: llite: remove duplicate fiemap defines James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 08/41] staging: lustre: ptlrpc: ret -ECONNREFUSED if not context found in req James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 09/41] staging: lustre: llite: default dir stripe index only for mkdir James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 10/41] staging: lustre: libcfs: shortcut to create CPT from NUMA topology James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 11/41] staging: lustre: ptlrpc: Add OBD_CONNECT_MULTIMODRPCS flag James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 12/41] staging: lustre: clio: get rid of lov_stripe_md reference James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 13/41] staging: lustre: clio: use CIT_SETATTR for FSFILT_IOC_SETFLAGS James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 14/41] staging: lustre: ptlrpc: Add a tag field to ptlrpc messages James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 15/41] staging: lustre: osc: fix bug when setting max_pages_per_rpc James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 16/41] staging: lustre: ldlm: Do not use cbpending for group locks James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 17/41] staging: lustre: ptlrpc: remove old protocol compatibility James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 18/41] staging: lustre: llite: Report first encountered error James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 19/41] staging: lustre: ptlrpc: dont take unwrap in req_waittime calculation James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 20/41] staging: lustre: remove Size on MDS support James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 21/41] staging: lustre: mdc: Removed unneeded NULL check James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 22/41] staging: lustre: obd: remove unused LSM parameters James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 23/41] staging: lustre: mgc: MGC should retry for invalid import James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 24/41] staging: lustre: clio: add CIT_DATA_VERSION and remove IOC_LOV_GETINFO James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2018-02-22 3:06 ` NeilBrown 2018-02-22 3:06 ` [lustre-devel] " NeilBrown 2016-10-03 2:28 ` [PATCH 25/41] staging: lustre: lov: add cl_object_layout_get() James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 26/41] staging: lustre: llite: remove lli_has_smd James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 27/41] staging: lustre: llite: add cl_object_maxbytes() James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 28/41] staging: lustre: hsm: make HSM modification requests replayable James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 29/41] staging: lustre: ptlrpc: Move NRS structures out of lustre_net.h James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 30/41] staging: lustre: quota: remove obsolete quota code James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 31/41] staging: lustre: obd: remove destroy cookie handling James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` James Simmons [this message] 2016-10-03 2:28 ` [lustre-devel] [PATCH 32/41] staging: lustre: llite: restart short read/write for normal IO James Simmons 2016-10-09 14:16 ` Greg Kroah-Hartman 2016-10-09 14:16 ` [lustre-devel] " Greg Kroah-Hartman 2016-10-11 23:22 ` James Simmons 2016-10-11 23:22 ` [lustre-devel] " James Simmons 2016-10-12 6:08 ` Greg Kroah-Hartman 2016-10-12 6:08 ` [lustre-devel] " Greg Kroah-Hartman 2016-10-13 22:45 ` James Simmons 2016-10-13 22:45 ` [lustre-devel] " James Simmons 2016-10-14 7:41 ` Greg Kroah-Hartman 2016-10-14 7:41 ` [lustre-devel] " Greg Kroah-Hartman 2016-10-03 2:28 ` [PATCH 33/41] staging: lustre: lov: use obd_get_info() to get def/max LOV EA sizes James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 34/41] staging: lustre: ldlm: cancel aged locks for LRUR James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 35/41] staging: lustre: hsm: Use file lease to implement migration James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-09 14:18 ` Greg Kroah-Hartman 2016-10-09 14:18 ` [lustre-devel] " Greg Kroah-Hartman 2016-10-03 2:28 ` [PATCH 36/41] staging: lustre: ldlm: interval tree search in ldlm_lock_match() James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 37/41] staging: lustre: lov: copy_to_user uses wrong casting James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 38/41] staging: lustre: mdc: add max modify RPCs in flight variable James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 39/41] staging: lustre: osc: remove remaining bits for capa support James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 40/41] staging: lustre: lov: move LSM to LOV layer James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons 2016-10-03 2:28 ` [PATCH 41/41] staging: lustre: echo: request pages in batches James Simmons 2016-10-03 2:28 ` [lustre-devel] " James Simmons
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1475461717-21631-33-git-send-email-jsimmons@infradead.org \ --to=jsimmons@infradead.org \ --cc=andreas.dilger@intel.com \ --cc=bobijam.xu@intel.com \ --cc=devel@driverdev.osuosl.org \ --cc=gregkh@linuxfoundation.org \ --cc=jinshan.xiong@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=lustre-devel@lists.lustre.org \ --cc=oleg.drokin@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.