* [PATCH 00/40] staging/lustre: patch bomb 1
@ 2013-11-14 16:02 Peng Tao
2013-11-14 16:02 ` [PATCH 01/40] staging/lustre/llite: restore ll_fiemap Peng Tao
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:02 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Peng Tao, Andreas Dilger
Hi Greg,
Here are 40 patches. Three cleanup patches and 37 patches ported
from Lustre master to commit
LU-2940 llite: Fix for oops in vvp_pgcache_show()
There are two more patchsets that I will send out following up.
Thanks,
Tao
Cc: Andreas Dilger <andreas.dilger@intel.com>
Amir Shehata (2):
staging/lustre/lnet: Fix assert on empty group in selftest module
staging/lustre/ptlrpc: Fix a crash when dereferencing NULL pointer
Andreas Dilger (2):
staging/lustre/ldlm: fix resource/fid check, use DLDLMRES
staging/lustre/idl: remove LASSERT/CLASSERT from lustre_idl.h
Andrew Perepechko (1):
staging/lustre/llite: extended attribute cache
Andriy Skulysh (2):
staging/lustre/ptlrpc: Fix race during exp_flock_hash creation
staging/lustre/ptlrpc: flock deadlock detection does not work
Artem Blagodarenko (1):
staging/lustre/mgs: set_param -P option that sets value permanently
Dmitry Eremin (2):
staging/lustre/build: clean up unused variables and dead code
staging/lustre/build: fix compilation issue with is_compat_task
Doug Oucharek (1):
staging/lustre/lnet: Add LNet Router Priority parameter
Fan Yong (2):
staging/lustre/scrub: OI scrub on OST
staging/lustre/scrub: control OI scrub on OST from user space
JC Lafoucriere (5):
staging/lustre/llite: Access to released file trigs a restore
staging/lustre/mdt: HSM coordinator client interface
staging/lustre/mdt: HSM coordinator agent interface
staging/lustre/api: HSM import uses new released pattern
staging/lustre/utils: HSM Posix CopyTool
James Simmons (2):
staging/lustre/autoconf: remove vectored fops tests
staging/lustre/autoconf: remove LIBCFS_HAVE_IS_COMPAT_TASK test
Jinshan Xiong (2):
staging/lustre/hsm: Implementation of exclusive open
staging/lustre/hsm: Add hsm_release feature.
John L. Hammond (7):
staging/lustre: validate open handle cookies
staging/lustre/llite: use correct FID in ll_och_fill()
staging/lustre/lov: convert magic to host-endian in lov_dump_lmm()
staging/lustre/mdc: prevent fall through in mdc_iocontrol()
staging/lustre/lu: shrink lu_object by 8 bytes on x86_64
staging/lustre/llite: don't check for O_CREAT in it_create_mode
staging/lustre/llite: pass correct pointer to obd_iocontrol()
Lai Siyao (1):
staging/lustre/llite: remove ll_d_root_ops
Li Xi (1):
staging/lustre/llog: fix return value of llog_alloc_handle
Mikhail Pershin (4):
staging/lustre/server: use unified request handler for MGS
staging/lustre/llog: MGC to use OSD API for backup logs
staging/lustre/target: move OUT to the unified target code
staging/lustre/seq: unified SEQ handler
Nathaniel Clark (1):
staging/lustre/xattr: separate ACL and XATTR caches
Patrick Farrell (1):
staging/lustre/nfs: writing to new files will return ENOENT
Peng Tao (3):
staging/lustre/llite: restore ll_fiemap
staging/lustre: remove lu_target.h
staging/lustre: remove llog_server.c
.../staging/lustre/include/linux/libcfs/curproc.h | 1 -
.../staging/lustre/include/linux/libcfs/libcfs.h | 2 -
.../lustre/include/linux/libcfs/libcfs_ioctl.h | 1 +
.../staging/lustre/include/linux/lnet/lib-lnet.h | 5 +-
.../staging/lustre/include/linux/lnet/lib-types.h | 2 +-
drivers/staging/lustre/lnet/lnet/api-ni.c | 5 +-
drivers/staging/lustre/lnet/lnet/config.c | 39 +-
drivers/staging/lustre/lnet/lnet/lib-move.c | 6 +
drivers/staging/lustre/lnet/lnet/router.c | 19 +-
drivers/staging/lustre/lnet/lnet/router_proc.c | 16 +-
drivers/staging/lustre/lnet/selftest/conctl.c | 56 +-
drivers/staging/lustre/lnet/selftest/conrpc.c | 2 +-
drivers/staging/lustre/lnet/selftest/console.c | 105 ++--
drivers/staging/lustre/lnet/selftest/console.h | 6 +-
drivers/staging/lustre/lnet/selftest/rpc.c | 2 -
drivers/staging/lustre/lnet/selftest/selftest.h | 3 -
drivers/staging/lustre/lnet/selftest/timer.c | 6 +-
drivers/staging/lustre/lustre/include/cl_object.h | 6 +-
drivers/staging/lustre/lustre/include/dt_object.h | 2 +-
.../lustre/lustre/include/linux/lustre_compat25.h | 4 +-
.../lustre/lustre/include/linux/lustre_intent.h | 2 +-
.../lustre/lustre/include/linux/lustre_lite.h | 1 +
drivers/staging/lustre/lustre/include/lu_object.h | 19 -
drivers/staging/lustre/lustre/include/lu_target.h | 91 ---
.../lustre/lustre/include/lustre/lustre_idl.h | 111 ++--
.../lustre/lustre/include/lustre/lustre_user.h | 63 +-
.../lustre/lustre/include/lustre/lustreapi.h | 208 ++++---
drivers/staging/lustre/lustre/include/lustre_cfg.h | 2 +
.../staging/lustre/lustre/include/lustre_disk.h | 2 +
.../lustre/lustre/include/lustre_dlm_flags.h | 24 +-
drivers/staging/lustre/lustre/include/lustre_fid.h | 6 -
drivers/staging/lustre/lustre/include/lustre_ha.h | 3 -
.../staging/lustre/lustre/include/lustre_handles.h | 5 +-
drivers/staging/lustre/lustre/include/lustre_lib.h | 11 +-
drivers/staging/lustre/lustre/include/lustre_log.h | 13 +-
drivers/staging/lustre/lustre/include/lustre_net.h | 19 +-
.../lustre/lustre/include/lustre_req_layout.h | 7 +
drivers/staging/lustre/lustre/include/md_object.h | 4 +-
drivers/staging/lustre/lustre/include/obd.h | 15 +-
drivers/staging/lustre/lustre/include/obd_class.h | 9 +-
.../staging/lustre/lustre/include/obd_support.h | 10 +
drivers/staging/lustre/lustre/lclient/lcommon_cl.c | 6 +
.../staging/lustre/lustre/lclient/lcommon_misc.c | 4 +-
drivers/staging/lustre/lustre/ldlm/ldlm_flock.c | 69 ++-
drivers/staging/lustre/lustre/ldlm/ldlm_lock.c | 7 +-
drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c | 47 +-
drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 39 +-
drivers/staging/lustre/lustre/ldlm/ldlm_resource.c | 19 +-
.../lustre/lustre/libcfs/linux/linux-curproc.c | 13 -
drivers/staging/lustre/lustre/libcfs/workitem.c | 55 +-
drivers/staging/lustre/lustre/llite/Makefile | 2 +-
drivers/staging/lustre/lustre/llite/dcache.c | 77 +--
drivers/staging/lustre/lustre/llite/dir.c | 47 +-
drivers/staging/lustre/lustre/llite/file.c | 622 ++++++++++++++++++--
.../staging/lustre/lustre/llite/llite_internal.h | 59 +-
drivers/staging/lustre/lustre/llite/llite_lib.c | 91 ++-
drivers/staging/lustre/lustre/llite/llite_nfs.c | 6 +-
drivers/staging/lustre/lustre/llite/lproc_llite.c | 36 ++
drivers/staging/lustre/lustre/llite/namei.c | 53 +-
drivers/staging/lustre/lustre/llite/statahead.c | 7 +-
drivers/staging/lustre/lustre/llite/super25.c | 4 +
drivers/staging/lustre/lustre/llite/vvp_io.c | 54 +-
drivers/staging/lustre/lustre/llite/vvp_object.c | 2 +-
drivers/staging/lustre/lustre/llite/xattr.c | 105 ++--
drivers/staging/lustre/lustre/llite/xattr_cache.c | 559 ++++++++++++++++++
.../staging/lustre/lustre/lov/lov_cl_internal.h | 16 +
drivers/staging/lustre/lustre/lov/lov_internal.h | 4 +-
drivers/staging/lustre/lustre/lov/lov_io.c | 15 +-
drivers/staging/lustre/lustre/lov/lov_object.c | 35 +-
drivers/staging/lustre/lustre/lov/lov_pack.c | 20 +-
drivers/staging/lustre/lustre/mdc/mdc_internal.h | 5 +-
drivers/staging/lustre/lustre/mdc/mdc_lib.c | 31 +-
drivers/staging/lustre/lustre/mdc/mdc_locks.c | 104 +++-
drivers/staging/lustre/lustre/mdc/mdc_reint.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_request.c | 116 ++--
drivers/staging/lustre/lustre/mgc/libmgc.c | 3 -
drivers/staging/lustre/lustre/mgc/mgc_request.c | 492 ++++++++++------
drivers/staging/lustre/lustre/obdclass/genops.c | 2 +-
drivers/staging/lustre/lustre/obdclass/llog.c | 214 ++++---
.../staging/lustre/lustre/obdclass/local_storage.c | 9 +-
.../staging/lustre/lustre/obdclass/local_storage.h | 3 +
.../lustre/lustre/obdclass/lprocfs_status.c | 5 +-
drivers/staging/lustre/lustre/obdclass/lu_object.c | 26 +-
.../lustre/lustre/obdclass/lustre_handles.c | 4 +-
drivers/staging/lustre/lustre/obdclass/md_attrs.c | 4 +-
.../staging/lustre/lustre/obdclass/obd_config.c | 50 +-
drivers/staging/lustre/lustre/obdclass/obd_mount.c | 3 +
.../staging/lustre/lustre/obdecho/echo_client.c | 2 +-
drivers/staging/lustre/lustre/ptlrpc/Makefile | 2 +-
drivers/staging/lustre/lustre/ptlrpc/client.c | 10 +-
drivers/staging/lustre/lustre/ptlrpc/import.c | 2 -
drivers/staging/lustre/lustre/ptlrpc/layout.c | 63 +-
drivers/staging/lustre/lustre/ptlrpc/llog_server.c | 450 --------------
.../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c | 4 +-
drivers/staging/lustre/lustre/ptlrpc/niobuf.c | 16 +-
.../staging/lustre/lustre/ptlrpc/pack_generic.c | 59 +-
drivers/staging/lustre/lustre/ptlrpc/pinger.c | 65 --
drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c | 44 +-
drivers/staging/lustre/lustre/ptlrpc/wiretest.c | 60 +-
99 files changed, 3043 insertions(+), 1793 deletions(-)
delete mode 100644 drivers/staging/lustre/lustre/include/lu_target.h
create mode 100644 drivers/staging/lustre/lustre/llite/xattr_cache.c
delete mode 100644 drivers/staging/lustre/lustre/ptlrpc/llog_server.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 01/40] staging/lustre/llite: restore ll_fiemap
2013-11-14 16:02 [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
@ 2013-11-14 16:02 ` Peng Tao
2013-11-14 16:02 ` [PATCH 02/40] staging/lustre: remove lu_target.h Peng Tao
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:02 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Peng Tao, Peng Tao, Andreas Dilger
From: Peng Tao <tao.peng@emc.com>
It was removed by coan by mistake when first porting the code.
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
---
drivers/staging/lustre/lustre/llite/file.c | 33 ++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c
index fb85a58..c5b721c 100644
--- a/drivers/staging/lustre/lustre/llite/file.c
+++ b/drivers/staging/lustre/lustre/llite/file.c
@@ -2628,6 +2628,38 @@ int ll_getattr(struct vfsmount *mnt, struct dentry *de, struct kstat *stat)
return ll_getattr_it(mnt, de, &it, stat);
}
+int ll_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+ __u64 start, __u64 len)
+{
+ int rc;
+ size_t num_bytes;
+ struct ll_user_fiemap *fiemap;
+ unsigned int extent_count = fieinfo->fi_extents_max;
+
+ num_bytes = sizeof(*fiemap) + (extent_count *
+ sizeof(struct ll_fiemap_extent));
+ OBD_ALLOC_LARGE(fiemap, num_bytes);
+
+ if (fiemap == NULL)
+ return -ENOMEM;
+
+ fiemap->fm_flags = fieinfo->fi_flags;
+ fiemap->fm_extent_count = fieinfo->fi_extents_max;
+ fiemap->fm_start = start;
+ fiemap->fm_length = len;
+ memcpy(&fiemap->fm_extents[0], fieinfo->fi_extents_start,
+ sizeof(struct ll_fiemap_extent));
+
+ rc = ll_do_fiemap(inode, fiemap, num_bytes);
+
+ fieinfo->fi_flags = fiemap->fm_flags;
+ fieinfo->fi_extents_mapped = fiemap->fm_mapped_extents;
+ memcpy(fieinfo->fi_extents_start, &fiemap->fm_extents[0],
+ fiemap->fm_mapped_extents * sizeof(struct ll_fiemap_extent));
+
+ OBD_FREE_LARGE(fiemap, num_bytes);
+ return rc;
+}
struct posix_acl * ll_get_acl(struct inode *inode, int type)
{
@@ -2740,6 +2772,7 @@ struct inode_operations ll_file_inode_operations = {
.getxattr = ll_getxattr,
.listxattr = ll_listxattr,
.removexattr = ll_removexattr,
+ .fiemap = ll_fiemap,
.get_acl = ll_get_acl,
};
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 02/40] staging/lustre: remove lu_target.h
2013-11-14 16:02 [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
2013-11-14 16:02 ` [PATCH 01/40] staging/lustre/llite: restore ll_fiemap Peng Tao
@ 2013-11-14 16:02 ` Peng Tao
2013-11-14 16:02 ` [PATCH 03/40] staging/lustre: remove llog_server.c Peng Tao
2013-11-14 16:12 ` [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
3 siblings, 0 replies; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:02 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Peng Tao, Peng Tao, Andreas Dilger
From: Peng Tao <tao.peng@emc.com>
It is only needed by server code.
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
---
drivers/staging/lustre/lustre/include/lu_target.h | 91 ---------------------
1 file changed, 91 deletions(-)
delete mode 100644 drivers/staging/lustre/lustre/include/lu_target.h
diff --git a/drivers/staging/lustre/lustre/include/lu_target.h b/drivers/staging/lustre/lustre/include/lu_target.h
deleted file mode 100644
index 8d48cf4..0000000
--- a/drivers/staging/lustre/lustre/include/lu_target.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2011, 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#ifndef _LUSTRE_LU_TARGET_H
-#define _LUSTRE_LU_TARGET_H
-
-#include <dt_object.h>
-#include <lustre_disk.h>
-
-struct lu_target {
- struct obd_device *lut_obd;
- struct dt_device *lut_bottom;
- /** last_rcvd file */
- struct dt_object *lut_last_rcvd;
- /* transaction callbacks */
- struct dt_txn_callback lut_txn_cb;
- /** server data in last_rcvd file */
- struct lr_server_data lut_lsd;
- /** Server last transaction number */
- __u64 lut_last_transno;
- /** Lock protecting last transaction number */
- spinlock_t lut_translock;
- /** Lock protecting client bitmap */
- spinlock_t lut_client_bitmap_lock;
- /** Bitmap of known clients */
- unsigned long *lut_client_bitmap;
-};
-
-typedef void (*tgt_cb_t)(struct lu_target *lut, __u64 transno,
- void *data, int err);
-struct tgt_commit_cb {
- tgt_cb_t tgt_cb_func;
- void *tgt_cb_data;
-};
-
-void tgt_boot_epoch_update(struct lu_target *lut);
-int tgt_last_commit_cb_add(struct thandle *th, struct lu_target *lut,
- struct obd_export *exp, __u64 transno);
-int tgt_new_client_cb_add(struct thandle *th, struct obd_export *exp);
-int tgt_init(const struct lu_env *env, struct lu_target *lut,
- struct obd_device *obd, struct dt_device *dt);
-void tgt_fini(const struct lu_env *env, struct lu_target *lut);
-int tgt_client_alloc(struct obd_export *exp);
-void tgt_client_free(struct obd_export *exp);
-int tgt_client_del(const struct lu_env *env, struct obd_export *exp);
-int tgt_client_add(const struct lu_env *env, struct obd_export *exp, int);
-int tgt_client_new(const struct lu_env *env, struct obd_export *exp);
-int tgt_client_data_read(const struct lu_env *env, struct lu_target *tg,
- struct lsd_client_data *lcd, loff_t *off, int index);
-int tgt_client_data_write(const struct lu_env *env, struct lu_target *tg,
- struct lsd_client_data *lcd, loff_t *off, struct thandle *th);
-int tgt_server_data_read(const struct lu_env *env, struct lu_target *tg);
-int tgt_server_data_write(const struct lu_env *env, struct lu_target *tg,
- struct thandle *th);
-int tgt_server_data_update(const struct lu_env *env, struct lu_target *tg, int sync);
-int tgt_truncate_last_rcvd(const struct lu_env *env, struct lu_target *tg, loff_t off);
-
-#endif /* __LUSTRE_LU_TARGET_H */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 03/40] staging/lustre: remove llog_server.c
2013-11-14 16:02 [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
2013-11-14 16:02 ` [PATCH 01/40] staging/lustre/llite: restore ll_fiemap Peng Tao
2013-11-14 16:02 ` [PATCH 02/40] staging/lustre: remove lu_target.h Peng Tao
@ 2013-11-14 16:02 ` Peng Tao
2013-11-14 16:12 ` [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
3 siblings, 0 replies; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:02 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Peng Tao, Peng Tao, Andreas Dilger
From: Peng Tao <tao.peng@emc.com>
It is only used by server.
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
---
drivers/staging/lustre/lustre/include/lustre_net.h | 9 -
drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c | 39 --
drivers/staging/lustre/lustre/ptlrpc/Makefile | 2 +-
drivers/staging/lustre/lustre/ptlrpc/llog_server.c | 450 --------------------
4 files changed, 1 insertion(+), 499 deletions(-)
delete mode 100644 drivers/staging/lustre/lustre/ptlrpc/llog_server.c
diff --git a/drivers/staging/lustre/lustre/include/lustre_net.h b/drivers/staging/lustre/lustre/include/lustre_net.h
index 72edf01..91f28e3 100644
--- a/drivers/staging/lustre/lustre/include/lustre_net.h
+++ b/drivers/staging/lustre/lustre/include/lustre_net.h
@@ -3470,15 +3470,6 @@ static inline void ptlrpc_lprocfs_brw(struct ptlrpc_request *req, int bytes) {}
#endif
/** @} */
-/* ptlrpc/llog_server.c */
-int llog_origin_handle_open(struct ptlrpc_request *req);
-int llog_origin_handle_destroy(struct ptlrpc_request *req);
-int llog_origin_handle_prev_block(struct ptlrpc_request *req);
-int llog_origin_handle_next_block(struct ptlrpc_request *req);
-int llog_origin_handle_read_header(struct ptlrpc_request *req);
-int llog_origin_handle_close(struct ptlrpc_request *req);
-int llog_origin_handle_cancel(struct ptlrpc_request *req);
-
/* ptlrpc/llog_client.c */
extern struct llog_operations llog_client_ops;
diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c
index fde9bcd..40c58b7 100644
--- a/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c
+++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c
@@ -597,45 +597,6 @@ static int ldlm_callback_handler(struct ptlrpc_request *req)
rc = ldlm_handle_setinfo(req);
ldlm_callback_reply(req, rc);
return 0;
- case OBD_LOG_CANCEL: /* remove this eventually - for 1.4.0 compat */
- CERROR("shouldn't be handling OBD_LOG_CANCEL on DLM thread\n");
- req_capsule_set(&req->rq_pill, &RQF_LOG_CANCEL);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOG_CANCEL_NET))
- return 0;
- rc = llog_origin_handle_cancel(req);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOG_CANCEL_REP))
- return 0;
- ldlm_callback_reply(req, rc);
- return 0;
- case LLOG_ORIGIN_HANDLE_CREATE:
- req_capsule_set(&req->rq_pill, &RQF_LLOG_ORIGIN_HANDLE_CREATE);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOGD_NET))
- return 0;
- rc = llog_origin_handle_open(req);
- ldlm_callback_reply(req, rc);
- return 0;
- case LLOG_ORIGIN_HANDLE_NEXT_BLOCK:
- req_capsule_set(&req->rq_pill,
- &RQF_LLOG_ORIGIN_HANDLE_NEXT_BLOCK);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOGD_NET))
- return 0;
- rc = llog_origin_handle_next_block(req);
- ldlm_callback_reply(req, rc);
- return 0;
- case LLOG_ORIGIN_HANDLE_READ_HEADER:
- req_capsule_set(&req->rq_pill,
- &RQF_LLOG_ORIGIN_HANDLE_READ_HEADER);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOGD_NET))
- return 0;
- rc = llog_origin_handle_read_header(req);
- ldlm_callback_reply(req, rc);
- return 0;
- case LLOG_ORIGIN_HANDLE_CLOSE:
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOGD_NET))
- return 0;
- rc = llog_origin_handle_close(req);
- ldlm_callback_reply(req, rc);
- return 0;
case OBD_QC_CALLBACK:
req_capsule_set(&req->rq_pill, &RQF_QC_CALLBACK);
if (OBD_FAIL_CHECK(OBD_FAIL_OBD_QC_CALLBACK_NET))
diff --git a/drivers/staging/lustre/lustre/ptlrpc/Makefile b/drivers/staging/lustre/lustre/ptlrpc/Makefile
index 6d78b80..2ec0c24 100644
--- a/drivers/staging/lustre/lustre/ptlrpc/Makefile
+++ b/drivers/staging/lustre/lustre/ptlrpc/Makefile
@@ -10,7 +10,7 @@ ldlm_objs += $(LDLM)ldlm_pool.o
ldlm_objs += $(LDLM)interval_tree.o
ptlrpc_objs := client.o recover.o connection.o niobuf.o pack_generic.o
ptlrpc_objs += events.o ptlrpc_module.o service.o pinger.o
-ptlrpc_objs += llog_net.o llog_client.o llog_server.o import.o ptlrpcd.o
+ptlrpc_objs += llog_net.o llog_client.o import.o ptlrpcd.o
ptlrpc_objs += pers.o lproc_ptlrpc.o wiretest.o layout.o
ptlrpc_objs += sec.o sec_bulk.o sec_gc.o sec_config.o sec_lproc.o
ptlrpc_objs += sec_null.o sec_plain.o nrs.o nrs_fifo.o
diff --git a/drivers/staging/lustre/lustre/ptlrpc/llog_server.c b/drivers/staging/lustre/lustre/ptlrpc/llog_server.c
deleted file mode 100644
index af9d2ac..0000000
--- a/drivers/staging/lustre/lustre/ptlrpc/llog_server.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2011, 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * lustre/ptlrpc/llog_server.c
- *
- * remote api for llog - server side
- *
- * Author: Andreas Dilger <adilger@clusterfs.com>
- */
-
-#define DEBUG_SUBSYSTEM S_LOG
-
-
-#include <obd_class.h>
-#include <lustre_log.h>
-#include <lustre_net.h>
-#include <lustre_fsfilt.h>
-
-#if defined(LUSTRE_LOG_SERVER)
-static int llog_origin_close(const struct lu_env *env, struct llog_handle *lgh)
-{
- if (lgh->lgh_hdr != NULL && lgh->lgh_hdr->llh_flags & LLOG_F_IS_CAT)
- return llog_cat_close(env, lgh);
- else
- return llog_close(env, lgh);
-}
-
-/* Only open is supported, no new llog can be created remotely */
-int llog_origin_handle_open(struct ptlrpc_request *req)
-{
- struct obd_export *exp = req->rq_export;
- struct obd_device *obd = exp->exp_obd;
- struct obd_device *disk_obd;
- struct lvfs_run_ctxt saved;
- struct llog_handle *loghandle;
- struct llogd_body *body;
- struct llog_logid *logid = NULL;
- struct llog_ctxt *ctxt;
- char *name = NULL;
- int rc;
-
- body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
- if (body == NULL)
- return -EFAULT;
-
- if (ostid_id(&body->lgd_logid.lgl_oi) > 0)
- logid = &body->lgd_logid;
-
- if (req_capsule_field_present(&req->rq_pill, &RMF_NAME, RCL_CLIENT)) {
- name = req_capsule_client_get(&req->rq_pill, &RMF_NAME);
- if (name == NULL)
- return -EFAULT;
- CDEBUG(D_INFO, "%s: opening log %s\n", obd->obd_name, name);
- }
-
- ctxt = llog_get_context(obd, body->lgd_ctxt_idx);
- if (ctxt == NULL) {
- CDEBUG(D_WARNING, "%s: no ctxt. group=%p idx=%d name=%s\n",
- obd->obd_name, &obd->obd_olg, body->lgd_ctxt_idx, name);
- return -ENODEV;
- }
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
-
- rc = llog_open(req->rq_svc_thread->t_env, ctxt, &loghandle, logid,
- name, LLOG_OPEN_EXISTS);
- if (rc)
- GOTO(out_pop, rc);
-
- rc = req_capsule_server_pack(&req->rq_pill);
- if (rc)
- GOTO(out_close, rc = -ENOMEM);
-
- body = req_capsule_server_get(&req->rq_pill, &RMF_LLOGD_BODY);
- body->lgd_logid = loghandle->lgh_id;
-
-out_close:
- llog_origin_close(req->rq_svc_thread->t_env, loghandle);
-out_pop:
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_open);
-
-int llog_origin_handle_destroy(struct ptlrpc_request *req)
-{
- struct obd_device *disk_obd;
- struct lvfs_run_ctxt saved;
- struct llogd_body *body;
- struct llog_logid *logid = NULL;
- struct llog_ctxt *ctxt;
- int rc;
-
- body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
- if (body == NULL)
- return -EFAULT;
-
- if (ostid_id(&body->lgd_logid.lgl_oi) > 0)
- logid = &body->lgd_logid;
-
- if (!(body->lgd_llh_flags & LLOG_F_IS_PLAIN))
- CERROR("%s: wrong llog flags %x\n",
- req->rq_export->exp_obd->obd_name, body->lgd_llh_flags);
-
- ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
- if (ctxt == NULL)
- return -ENODEV;
-
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
-
- rc = req_capsule_server_pack(&req->rq_pill);
- /* erase only if no error and logid is valid */
- if (rc == 0)
- rc = llog_erase(req->rq_svc_thread->t_env, ctxt, logid, NULL);
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_destroy);
-
-int llog_origin_handle_next_block(struct ptlrpc_request *req)
-{
- struct obd_device *disk_obd;
- struct llog_handle *loghandle;
- struct llogd_body *body;
- struct llogd_body *repbody;
- struct lvfs_run_ctxt saved;
- struct llog_ctxt *ctxt;
- __u32 flags;
- void *ptr;
- int rc;
-
- body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
- if (body == NULL)
- return -EFAULT;
-
- ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
- if (ctxt == NULL)
- return -ENODEV;
-
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
-
- rc = llog_open(req->rq_svc_thread->t_env, ctxt, &loghandle,
- &body->lgd_logid, NULL, LLOG_OPEN_EXISTS);
- if (rc)
- GOTO(out_pop, rc);
-
- flags = body->lgd_llh_flags;
- rc = llog_init_handle(req->rq_svc_thread->t_env, loghandle, flags,
- NULL);
- if (rc)
- GOTO(out_close, rc);
-
- req_capsule_set_size(&req->rq_pill, &RMF_EADATA, RCL_SERVER,
- LLOG_CHUNK_SIZE);
- rc = req_capsule_server_pack(&req->rq_pill);
- if (rc)
- GOTO(out_close, rc = -ENOMEM);
-
- repbody = req_capsule_server_get(&req->rq_pill, &RMF_LLOGD_BODY);
- *repbody = *body;
-
- ptr = req_capsule_server_get(&req->rq_pill, &RMF_EADATA);
- rc = llog_next_block(req->rq_svc_thread->t_env, loghandle,
- &repbody->lgd_saved_index, repbody->lgd_index,
- &repbody->lgd_cur_offset, ptr, LLOG_CHUNK_SIZE);
- if (rc)
- GOTO(out_close, rc);
-out_close:
- llog_origin_close(req->rq_svc_thread->t_env, loghandle);
-out_pop:
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_next_block);
-
-int llog_origin_handle_prev_block(struct ptlrpc_request *req)
-{
- struct llog_handle *loghandle;
- struct llogd_body *body;
- struct llogd_body *repbody;
- struct obd_device *disk_obd;
- struct lvfs_run_ctxt saved;
- struct llog_ctxt *ctxt;
- __u32 flags;
- void *ptr;
- int rc;
-
- body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
- if (body == NULL)
- return -EFAULT;
-
- ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
- if (ctxt == NULL)
- return -ENODEV;
-
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
-
- rc = llog_open(req->rq_svc_thread->t_env, ctxt, &loghandle,
- &body->lgd_logid, NULL, LLOG_OPEN_EXISTS);
- if (rc)
- GOTO(out_pop, rc);
-
- flags = body->lgd_llh_flags;
- rc = llog_init_handle(req->rq_svc_thread->t_env, loghandle, flags,
- NULL);
- if (rc)
- GOTO(out_close, rc);
-
- req_capsule_set_size(&req->rq_pill, &RMF_EADATA, RCL_SERVER,
- LLOG_CHUNK_SIZE);
- rc = req_capsule_server_pack(&req->rq_pill);
- if (rc)
- GOTO(out_close, rc = -ENOMEM);
-
- repbody = req_capsule_server_get(&req->rq_pill, &RMF_LLOGD_BODY);
- *repbody = *body;
-
- ptr = req_capsule_server_get(&req->rq_pill, &RMF_EADATA);
- rc = llog_prev_block(req->rq_svc_thread->t_env, loghandle,
- body->lgd_index, ptr, LLOG_CHUNK_SIZE);
- if (rc)
- GOTO(out_close, rc);
-
-out_close:
- llog_origin_close(req->rq_svc_thread->t_env, loghandle);
-out_pop:
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_prev_block);
-
-int llog_origin_handle_read_header(struct ptlrpc_request *req)
-{
- struct obd_device *disk_obd;
- struct llog_handle *loghandle;
- struct llogd_body *body;
- struct llog_log_hdr *hdr;
- struct lvfs_run_ctxt saved;
- struct llog_ctxt *ctxt;
- __u32 flags;
- int rc;
-
- body = req_capsule_client_get(&req->rq_pill, &RMF_LLOGD_BODY);
- if (body == NULL)
- return -EFAULT;
-
- ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
- if (ctxt == NULL)
- return -ENODEV;
-
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
-
- rc = llog_open(req->rq_svc_thread->t_env, ctxt, &loghandle,
- &body->lgd_logid, NULL, LLOG_OPEN_EXISTS);
- if (rc)
- GOTO(out_pop, rc);
-
- /*
- * llog_init_handle() reads the llog header
- */
- flags = body->lgd_llh_flags;
- rc = llog_init_handle(req->rq_svc_thread->t_env, loghandle, flags,
- NULL);
- if (rc)
- GOTO(out_close, rc);
- flags = loghandle->lgh_hdr->llh_flags;
-
- rc = req_capsule_server_pack(&req->rq_pill);
- if (rc)
- GOTO(out_close, rc = -ENOMEM);
-
- hdr = req_capsule_server_get(&req->rq_pill, &RMF_LLOG_LOG_HDR);
- *hdr = *loghandle->lgh_hdr;
-out_close:
- llog_origin_close(req->rq_svc_thread->t_env, loghandle);
-out_pop:
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_read_header);
-
-int llog_origin_handle_close(struct ptlrpc_request *req)
-{
- /* Nothing to do */
- return 0;
-}
-EXPORT_SYMBOL(llog_origin_handle_close);
-
-int llog_origin_handle_cancel(struct ptlrpc_request *req)
-{
- int num_cookies, rc = 0, err, i, failed = 0;
- struct obd_device *disk_obd;
- struct llog_cookie *logcookies;
- struct llog_ctxt *ctxt = NULL;
- struct lvfs_run_ctxt saved;
- struct llog_handle *cathandle;
- struct inode *inode;
- void *handle;
-
- logcookies = req_capsule_client_get(&req->rq_pill, &RMF_LOGCOOKIES);
- num_cookies = req_capsule_get_size(&req->rq_pill, &RMF_LOGCOOKIES,
- RCL_CLIENT) / sizeof(*logcookies);
- if (logcookies == NULL || num_cookies == 0) {
- DEBUG_REQ(D_HA, req, "No llog cookies sent");
- return -EFAULT;
- }
-
- ctxt = llog_get_context(req->rq_export->exp_obd,
- logcookies->lgc_subsys);
- if (ctxt == NULL)
- return -ENODEV;
-
- disk_obd = ctxt->loc_exp->exp_obd;
- push_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- for (i = 0; i < num_cookies; i++, logcookies++) {
- cathandle = ctxt->loc_handle;
- LASSERT(cathandle != NULL);
- inode = cathandle->lgh_file->f_dentry->d_inode;
-
- handle = fsfilt_start_log(disk_obd, inode,
- FSFILT_OP_CANCEL_UNLINK, NULL, 1);
- if (IS_ERR(handle)) {
- CERROR("fsfilt_start_log() failed: %ld\n",
- PTR_ERR(handle));
- GOTO(pop_ctxt, rc = PTR_ERR(handle));
- }
-
- rc = llog_cat_cancel_records(req->rq_svc_thread->t_env,
- cathandle, 1, logcookies);
-
- /*
- * Do not raise -ENOENT errors for resent rpcs. This rec already
- * might be killed.
- */
- if (rc == -ENOENT &&
- (lustre_msg_get_flags(req->rq_reqmsg) & MSG_RESENT)) {
- /*
- * Do not change this message, reply-single.sh test_59b
- * expects to find this in log.
- */
- CDEBUG(D_RPCTRACE, "RESENT cancel req %p - ignored\n",
- req);
- rc = 0;
- } else if (rc == 0) {
- CDEBUG(D_RPCTRACE, "Canceled %d llog-records\n",
- num_cookies);
- }
-
- err = fsfilt_commit(disk_obd, inode, handle, 0);
- if (err) {
- CERROR("Error committing transaction: %d\n", err);
- if (!rc)
- rc = err;
- failed++;
- GOTO(pop_ctxt, rc);
- } else if (rc)
- failed++;
- }
- GOTO(pop_ctxt, rc);
-pop_ctxt:
- pop_ctxt(&saved, &disk_obd->obd_lvfs_ctxt, NULL);
- if (rc)
- CERROR("Cancel %d of %d llog-records failed: %d\n",
- failed, num_cookies, rc);
-
- llog_ctxt_put(ctxt);
- return rc;
-}
-EXPORT_SYMBOL(llog_origin_handle_cancel);
-
-#else /* !__KERNEL__ */
-int llog_origin_handle_open(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-
-int llog_origin_handle_destroy(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-
-int llog_origin_handle_next_block(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_prev_block(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_read_header(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_close(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_cancel(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-#endif
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 00/40] staging/lustre: patch bomb 1
2013-11-14 16:02 [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
` (2 preceding siblings ...)
2013-11-14 16:02 ` [PATCH 03/40] staging/lustre: remove llog_server.c Peng Tao
@ 2013-11-14 16:12 ` Peng Tao
3 siblings, 0 replies; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:12 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Linux Kernel Mailing List, Peng Tao, Andreas Dilger
On Fri, Nov 15, 2013 at 12:02 AM, Peng Tao <bergwolf@gmail.com> wrote:
> Hi Greg,
>
> Here are 40 patches. Three cleanup patches and 37 patches ported
> from Lustre master to commit
> LU-2940 llite: Fix for oops in vvp_pgcache_show()
>
> There are two more patchsets that I will send out following up.
>
oops, my git-send-email died after sending out the first four emails.
I'll resend.
Thanks,
Tao
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 00/40] staging/lustre: patch bomb 1
@ 2013-11-14 16:13 Peng Tao
2013-11-15 3:59 ` Greg Kroah-Hartman
0 siblings, 1 reply; 9+ messages in thread
From: Peng Tao @ 2013-11-14 16:13 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-kernel, Peng Tao, Andreas Dilger
[sadly git-send-email died sending the patchset... so resending]
Hi Greg,
Here are 40 patches. Three cleanup patches and 37 patches ported
from Lustre master to commit
LU-2940 llite: Fix for oops in vvp_pgcache_show()
There are two more patchsets that I will send out following up.
Thanks,
Tao
Cc: Andreas Dilger <andreas.dilger@intel.com>
Amir Shehata (2):
staging/lustre/lnet: Fix assert on empty group in selftest module
staging/lustre/ptlrpc: Fix a crash when dereferencing NULL pointer
Andreas Dilger (2):
staging/lustre/ldlm: fix resource/fid check, use DLDLMRES
staging/lustre/idl: remove LASSERT/CLASSERT from lustre_idl.h
Andrew Perepechko (1):
staging/lustre/llite: extended attribute cache
Andriy Skulysh (2):
staging/lustre/ptlrpc: Fix race during exp_flock_hash creation
staging/lustre/ptlrpc: flock deadlock detection does not work
Artem Blagodarenko (1):
staging/lustre/mgs: set_param -P option that sets value permanently
Dmitry Eremin (2):
staging/lustre/build: clean up unused variables and dead code
staging/lustre/build: fix compilation issue with is_compat_task
Doug Oucharek (1):
staging/lustre/lnet: Add LNet Router Priority parameter
Fan Yong (2):
staging/lustre/scrub: OI scrub on OST
staging/lustre/scrub: control OI scrub on OST from user space
JC Lafoucriere (5):
staging/lustre/llite: Access to released file trigs a restore
staging/lustre/mdt: HSM coordinator client interface
staging/lustre/mdt: HSM coordinator agent interface
staging/lustre/api: HSM import uses new released pattern
staging/lustre/utils: HSM Posix CopyTool
James Simmons (2):
staging/lustre/autoconf: remove vectored fops tests
staging/lustre/autoconf: remove LIBCFS_HAVE_IS_COMPAT_TASK test
Jinshan Xiong (2):
staging/lustre/hsm: Implementation of exclusive open
staging/lustre/hsm: Add hsm_release feature.
John L. Hammond (7):
staging/lustre: validate open handle cookies
staging/lustre/llite: use correct FID in ll_och_fill()
staging/lustre/lov: convert magic to host-endian in lov_dump_lmm()
staging/lustre/mdc: prevent fall through in mdc_iocontrol()
staging/lustre/lu: shrink lu_object by 8 bytes on x86_64
staging/lustre/llite: don't check for O_CREAT in it_create_mode
staging/lustre/llite: pass correct pointer to obd_iocontrol()
Lai Siyao (1):
staging/lustre/llite: remove ll_d_root_ops
Li Xi (1):
staging/lustre/llog: fix return value of llog_alloc_handle
Mikhail Pershin (4):
staging/lustre/server: use unified request handler for MGS
staging/lustre/llog: MGC to use OSD API for backup logs
staging/lustre/target: move OUT to the unified target code
staging/lustre/seq: unified SEQ handler
Nathaniel Clark (1):
staging/lustre/xattr: separate ACL and XATTR caches
Patrick Farrell (1):
staging/lustre/nfs: writing to new files will return ENOENT
Peng Tao (3):
staging/lustre/llite: restore ll_fiemap
staging/lustre: remove lu_target.h
staging/lustre: remove llog_server.c
.../staging/lustre/include/linux/libcfs/curproc.h | 1 -
.../staging/lustre/include/linux/libcfs/libcfs.h | 2 -
.../lustre/include/linux/libcfs/libcfs_ioctl.h | 1 +
.../staging/lustre/include/linux/lnet/lib-lnet.h | 5 +-
.../staging/lustre/include/linux/lnet/lib-types.h | 2 +-
drivers/staging/lustre/lnet/lnet/api-ni.c | 5 +-
drivers/staging/lustre/lnet/lnet/config.c | 39 +-
drivers/staging/lustre/lnet/lnet/lib-move.c | 6 +
drivers/staging/lustre/lnet/lnet/router.c | 19 +-
drivers/staging/lustre/lnet/lnet/router_proc.c | 16 +-
drivers/staging/lustre/lnet/selftest/conctl.c | 56 +-
drivers/staging/lustre/lnet/selftest/conrpc.c | 2 +-
drivers/staging/lustre/lnet/selftest/console.c | 105 ++--
drivers/staging/lustre/lnet/selftest/console.h | 6 +-
drivers/staging/lustre/lnet/selftest/rpc.c | 2 -
drivers/staging/lustre/lnet/selftest/selftest.h | 3 -
drivers/staging/lustre/lnet/selftest/timer.c | 6 +-
drivers/staging/lustre/lustre/include/cl_object.h | 6 +-
drivers/staging/lustre/lustre/include/dt_object.h | 2 +-
.../lustre/lustre/include/linux/lustre_compat25.h | 4 +-
.../lustre/lustre/include/linux/lustre_intent.h | 2 +-
.../lustre/lustre/include/linux/lustre_lite.h | 1 +
drivers/staging/lustre/lustre/include/lu_object.h | 19 -
drivers/staging/lustre/lustre/include/lu_target.h | 91 ---
.../lustre/lustre/include/lustre/lustre_idl.h | 111 ++--
.../lustre/lustre/include/lustre/lustre_user.h | 63 +-
.../lustre/lustre/include/lustre/lustreapi.h | 208 ++++---
drivers/staging/lustre/lustre/include/lustre_cfg.h | 2 +
.../staging/lustre/lustre/include/lustre_disk.h | 2 +
.../lustre/lustre/include/lustre_dlm_flags.h | 24 +-
drivers/staging/lustre/lustre/include/lustre_fid.h | 6 -
drivers/staging/lustre/lustre/include/lustre_ha.h | 3 -
.../staging/lustre/lustre/include/lustre_handles.h | 5 +-
drivers/staging/lustre/lustre/include/lustre_lib.h | 11 +-
drivers/staging/lustre/lustre/include/lustre_log.h | 13 +-
drivers/staging/lustre/lustre/include/lustre_net.h | 19 +-
.../lustre/lustre/include/lustre_req_layout.h | 7 +
drivers/staging/lustre/lustre/include/md_object.h | 4 +-
drivers/staging/lustre/lustre/include/obd.h | 15 +-
drivers/staging/lustre/lustre/include/obd_class.h | 9 +-
.../staging/lustre/lustre/include/obd_support.h | 10 +
drivers/staging/lustre/lustre/lclient/lcommon_cl.c | 6 +
.../staging/lustre/lustre/lclient/lcommon_misc.c | 4 +-
drivers/staging/lustre/lustre/ldlm/ldlm_flock.c | 69 ++-
drivers/staging/lustre/lustre/ldlm/ldlm_lock.c | 7 +-
drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c | 47 +-
drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 39 +-
drivers/staging/lustre/lustre/ldlm/ldlm_resource.c | 19 +-
.../lustre/lustre/libcfs/linux/linux-curproc.c | 13 -
drivers/staging/lustre/lustre/libcfs/workitem.c | 55 +-
drivers/staging/lustre/lustre/llite/Makefile | 2 +-
drivers/staging/lustre/lustre/llite/dcache.c | 77 +--
drivers/staging/lustre/lustre/llite/dir.c | 47 +-
drivers/staging/lustre/lustre/llite/file.c | 622 ++++++++++++++++++--
.../staging/lustre/lustre/llite/llite_internal.h | 59 +-
drivers/staging/lustre/lustre/llite/llite_lib.c | 91 ++-
drivers/staging/lustre/lustre/llite/llite_nfs.c | 6 +-
drivers/staging/lustre/lustre/llite/lproc_llite.c | 36 ++
drivers/staging/lustre/lustre/llite/namei.c | 53 +-
drivers/staging/lustre/lustre/llite/statahead.c | 7 +-
drivers/staging/lustre/lustre/llite/super25.c | 4 +
drivers/staging/lustre/lustre/llite/vvp_io.c | 54 +-
drivers/staging/lustre/lustre/llite/vvp_object.c | 2 +-
drivers/staging/lustre/lustre/llite/xattr.c | 105 ++--
drivers/staging/lustre/lustre/llite/xattr_cache.c | 559 ++++++++++++++++++
.../staging/lustre/lustre/lov/lov_cl_internal.h | 16 +
drivers/staging/lustre/lustre/lov/lov_internal.h | 4 +-
drivers/staging/lustre/lustre/lov/lov_io.c | 15 +-
drivers/staging/lustre/lustre/lov/lov_object.c | 35 +-
drivers/staging/lustre/lustre/lov/lov_pack.c | 20 +-
drivers/staging/lustre/lustre/mdc/mdc_internal.h | 5 +-
drivers/staging/lustre/lustre/mdc/mdc_lib.c | 31 +-
drivers/staging/lustre/lustre/mdc/mdc_locks.c | 104 +++-
drivers/staging/lustre/lustre/mdc/mdc_reint.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_request.c | 116 ++--
drivers/staging/lustre/lustre/mgc/libmgc.c | 3 -
drivers/staging/lustre/lustre/mgc/mgc_request.c | 492 ++++++++++------
drivers/staging/lustre/lustre/obdclass/genops.c | 2 +-
drivers/staging/lustre/lustre/obdclass/llog.c | 214 ++++---
.../staging/lustre/lustre/obdclass/local_storage.c | 9 +-
.../staging/lustre/lustre/obdclass/local_storage.h | 3 +
.../lustre/lustre/obdclass/lprocfs_status.c | 5 +-
drivers/staging/lustre/lustre/obdclass/lu_object.c | 26 +-
.../lustre/lustre/obdclass/lustre_handles.c | 4 +-
drivers/staging/lustre/lustre/obdclass/md_attrs.c | 4 +-
.../staging/lustre/lustre/obdclass/obd_config.c | 50 +-
drivers/staging/lustre/lustre/obdclass/obd_mount.c | 3 +
.../staging/lustre/lustre/obdecho/echo_client.c | 2 +-
drivers/staging/lustre/lustre/ptlrpc/Makefile | 2 +-
drivers/staging/lustre/lustre/ptlrpc/client.c | 10 +-
drivers/staging/lustre/lustre/ptlrpc/import.c | 2 -
drivers/staging/lustre/lustre/ptlrpc/layout.c | 63 +-
drivers/staging/lustre/lustre/ptlrpc/llog_server.c | 450 --------------
.../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c | 4 +-
drivers/staging/lustre/lustre/ptlrpc/niobuf.c | 16 +-
.../staging/lustre/lustre/ptlrpc/pack_generic.c | 59 +-
drivers/staging/lustre/lustre/ptlrpc/pinger.c | 65 --
drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c | 44 +-
drivers/staging/lustre/lustre/ptlrpc/wiretest.c | 60 +-
99 files changed, 3043 insertions(+), 1793 deletions(-)
delete mode 100644 drivers/staging/lustre/lustre/include/lu_target.h
create mode 100644 drivers/staging/lustre/lustre/llite/xattr_cache.c
delete mode 100644 drivers/staging/lustre/lustre/ptlrpc/llog_server.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 00/40] staging/lustre: patch bomb 1
2013-11-14 16:13 Peng Tao
@ 2013-11-15 3:59 ` Greg Kroah-Hartman
2013-11-15 9:51 ` Peng Tao
0 siblings, 1 reply; 9+ messages in thread
From: Greg Kroah-Hartman @ 2013-11-15 3:59 UTC (permalink / raw)
To: Peng Tao; +Cc: linux-kernel, Andreas Dilger
On Fri, Nov 15, 2013 at 12:13:02AM +0800, Peng Tao wrote:
> [sadly git-send-email died sending the patchset... so resending]
>
> Hi Greg,
>
> Here are 40 patches. Three cleanup patches and 37 patches ported
> from Lustre master to commit
> LU-2940 llite: Fix for oops in vvp_pgcache_show()
>
> There are two more patchsets that I will send out following up.
>
> Thanks,
> Tao
>
> Cc: Andreas Dilger <andreas.dilger@intel.com>
>
> Amir Shehata (2):
> staging/lustre/lnet: Fix assert on empty group in selftest module
> staging/lustre/ptlrpc: Fix a crash when dereferencing NULL pointer
>
> Andreas Dilger (2):
> staging/lustre/ldlm: fix resource/fid check, use DLDLMRES
> staging/lustre/idl: remove LASSERT/CLASSERT from lustre_idl.h
>
> Andrew Perepechko (1):
> staging/lustre/llite: extended attribute cache
>
> Andriy Skulysh (2):
> staging/lustre/ptlrpc: Fix race during exp_flock_hash creation
> staging/lustre/ptlrpc: flock deadlock detection does not work
>
> Artem Blagodarenko (1):
> staging/lustre/mgs: set_param -P option that sets value permanently
>
> Dmitry Eremin (2):
> staging/lustre/build: clean up unused variables and dead code
> staging/lustre/build: fix compilation issue with is_compat_task
>
> Doug Oucharek (1):
> staging/lustre/lnet: Add LNet Router Priority parameter
>
> Fan Yong (2):
> staging/lustre/scrub: OI scrub on OST
> staging/lustre/scrub: control OI scrub on OST from user space
>
> JC Lafoucriere (5):
> staging/lustre/llite: Access to released file trigs a restore
> staging/lustre/mdt: HSM coordinator client interface
> staging/lustre/mdt: HSM coordinator agent interface
> staging/lustre/api: HSM import uses new released pattern
> staging/lustre/utils: HSM Posix CopyTool
>
> James Simmons (2):
> staging/lustre/autoconf: remove vectored fops tests
> staging/lustre/autoconf: remove LIBCFS_HAVE_IS_COMPAT_TASK test
>
> Jinshan Xiong (2):
> staging/lustre/hsm: Implementation of exclusive open
> staging/lustre/hsm: Add hsm_release feature.
>
> John L. Hammond (7):
> staging/lustre: validate open handle cookies
> staging/lustre/llite: use correct FID in ll_och_fill()
> staging/lustre/lov: convert magic to host-endian in lov_dump_lmm()
> staging/lustre/mdc: prevent fall through in mdc_iocontrol()
> staging/lustre/lu: shrink lu_object by 8 bytes on x86_64
> staging/lustre/llite: don't check for O_CREAT in it_create_mode
> staging/lustre/llite: pass correct pointer to obd_iocontrol()
>
> Lai Siyao (1):
> staging/lustre/llite: remove ll_d_root_ops
>
> Li Xi (1):
> staging/lustre/llog: fix return value of llog_alloc_handle
>
> Mikhail Pershin (4):
> staging/lustre/server: use unified request handler for MGS
> staging/lustre/llog: MGC to use OSD API for backup logs
> staging/lustre/target: move OUT to the unified target code
> staging/lustre/seq: unified SEQ handler
>
> Nathaniel Clark (1):
> staging/lustre/xattr: separate ACL and XATTR caches
>
> Patrick Farrell (1):
> staging/lustre/nfs: writing to new files will return ENOENT
>
> Peng Tao (3):
> staging/lustre/llite: restore ll_fiemap
> staging/lustre: remove lu_target.h
> staging/lustre: remove llog_server.c
>
> .../staging/lustre/include/linux/libcfs/curproc.h | 1 -
> .../staging/lustre/include/linux/libcfs/libcfs.h | 2 -
> .../lustre/include/linux/libcfs/libcfs_ioctl.h | 1 +
> .../staging/lustre/include/linux/lnet/lib-lnet.h | 5 +-
> .../staging/lustre/include/linux/lnet/lib-types.h | 2 +-
> drivers/staging/lustre/lnet/lnet/api-ni.c | 5 +-
> drivers/staging/lustre/lnet/lnet/config.c | 39 +-
> drivers/staging/lustre/lnet/lnet/lib-move.c | 6 +
> drivers/staging/lustre/lnet/lnet/router.c | 19 +-
> drivers/staging/lustre/lnet/lnet/router_proc.c | 16 +-
> drivers/staging/lustre/lnet/selftest/conctl.c | 56 +-
> drivers/staging/lustre/lnet/selftest/conrpc.c | 2 +-
> drivers/staging/lustre/lnet/selftest/console.c | 105 ++--
> drivers/staging/lustre/lnet/selftest/console.h | 6 +-
> drivers/staging/lustre/lnet/selftest/rpc.c | 2 -
> drivers/staging/lustre/lnet/selftest/selftest.h | 3 -
> drivers/staging/lustre/lnet/selftest/timer.c | 6 +-
> drivers/staging/lustre/lustre/include/cl_object.h | 6 +-
> drivers/staging/lustre/lustre/include/dt_object.h | 2 +-
> .../lustre/lustre/include/linux/lustre_compat25.h | 4 +-
> .../lustre/lustre/include/linux/lustre_intent.h | 2 +-
> .../lustre/lustre/include/linux/lustre_lite.h | 1 +
> drivers/staging/lustre/lustre/include/lu_object.h | 19 -
> drivers/staging/lustre/lustre/include/lu_target.h | 91 ---
> .../lustre/lustre/include/lustre/lustre_idl.h | 111 ++--
> .../lustre/lustre/include/lustre/lustre_user.h | 63 +-
> .../lustre/lustre/include/lustre/lustreapi.h | 208 ++++---
> drivers/staging/lustre/lustre/include/lustre_cfg.h | 2 +
> .../staging/lustre/lustre/include/lustre_disk.h | 2 +
> .../lustre/lustre/include/lustre_dlm_flags.h | 24 +-
> drivers/staging/lustre/lustre/include/lustre_fid.h | 6 -
> drivers/staging/lustre/lustre/include/lustre_ha.h | 3 -
> .../staging/lustre/lustre/include/lustre_handles.h | 5 +-
> drivers/staging/lustre/lustre/include/lustre_lib.h | 11 +-
> drivers/staging/lustre/lustre/include/lustre_log.h | 13 +-
> drivers/staging/lustre/lustre/include/lustre_net.h | 19 +-
> .../lustre/lustre/include/lustre_req_layout.h | 7 +
> drivers/staging/lustre/lustre/include/md_object.h | 4 +-
> drivers/staging/lustre/lustre/include/obd.h | 15 +-
> drivers/staging/lustre/lustre/include/obd_class.h | 9 +-
> .../staging/lustre/lustre/include/obd_support.h | 10 +
> drivers/staging/lustre/lustre/lclient/lcommon_cl.c | 6 +
> .../staging/lustre/lustre/lclient/lcommon_misc.c | 4 +-
> drivers/staging/lustre/lustre/ldlm/ldlm_flock.c | 69 ++-
> drivers/staging/lustre/lustre/ldlm/ldlm_lock.c | 7 +-
> drivers/staging/lustre/lustre/ldlm/ldlm_lockd.c | 47 +-
> drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 39 +-
> drivers/staging/lustre/lustre/ldlm/ldlm_resource.c | 19 +-
> .../lustre/lustre/libcfs/linux/linux-curproc.c | 13 -
> drivers/staging/lustre/lustre/libcfs/workitem.c | 55 +-
> drivers/staging/lustre/lustre/llite/Makefile | 2 +-
> drivers/staging/lustre/lustre/llite/dcache.c | 77 +--
> drivers/staging/lustre/lustre/llite/dir.c | 47 +-
> drivers/staging/lustre/lustre/llite/file.c | 622 ++++++++++++++++++--
> .../staging/lustre/lustre/llite/llite_internal.h | 59 +-
> drivers/staging/lustre/lustre/llite/llite_lib.c | 91 ++-
> drivers/staging/lustre/lustre/llite/llite_nfs.c | 6 +-
> drivers/staging/lustre/lustre/llite/lproc_llite.c | 36 ++
> drivers/staging/lustre/lustre/llite/namei.c | 53 +-
> drivers/staging/lustre/lustre/llite/statahead.c | 7 +-
> drivers/staging/lustre/lustre/llite/super25.c | 4 +
> drivers/staging/lustre/lustre/llite/vvp_io.c | 54 +-
> drivers/staging/lustre/lustre/llite/vvp_object.c | 2 +-
> drivers/staging/lustre/lustre/llite/xattr.c | 105 ++--
> drivers/staging/lustre/lustre/llite/xattr_cache.c | 559 ++++++++++++++++++
> .../staging/lustre/lustre/lov/lov_cl_internal.h | 16 +
> drivers/staging/lustre/lustre/lov/lov_internal.h | 4 +-
> drivers/staging/lustre/lustre/lov/lov_io.c | 15 +-
> drivers/staging/lustre/lustre/lov/lov_object.c | 35 +-
> drivers/staging/lustre/lustre/lov/lov_pack.c | 20 +-
> drivers/staging/lustre/lustre/mdc/mdc_internal.h | 5 +-
> drivers/staging/lustre/lustre/mdc/mdc_lib.c | 31 +-
> drivers/staging/lustre/lustre/mdc/mdc_locks.c | 104 +++-
> drivers/staging/lustre/lustre/mdc/mdc_reint.c | 2 +-
> drivers/staging/lustre/lustre/mdc/mdc_request.c | 116 ++--
> drivers/staging/lustre/lustre/mgc/libmgc.c | 3 -
> drivers/staging/lustre/lustre/mgc/mgc_request.c | 492 ++++++++++------
> drivers/staging/lustre/lustre/obdclass/genops.c | 2 +-
> drivers/staging/lustre/lustre/obdclass/llog.c | 214 ++++---
> .../staging/lustre/lustre/obdclass/local_storage.c | 9 +-
> .../staging/lustre/lustre/obdclass/local_storage.h | 3 +
> .../lustre/lustre/obdclass/lprocfs_status.c | 5 +-
> drivers/staging/lustre/lustre/obdclass/lu_object.c | 26 +-
> .../lustre/lustre/obdclass/lustre_handles.c | 4 +-
> drivers/staging/lustre/lustre/obdclass/md_attrs.c | 4 +-
> .../staging/lustre/lustre/obdclass/obd_config.c | 50 +-
> drivers/staging/lustre/lustre/obdclass/obd_mount.c | 3 +
> .../staging/lustre/lustre/obdecho/echo_client.c | 2 +-
> drivers/staging/lustre/lustre/ptlrpc/Makefile | 2 +-
> drivers/staging/lustre/lustre/ptlrpc/client.c | 10 +-
> drivers/staging/lustre/lustre/ptlrpc/import.c | 2 -
> drivers/staging/lustre/lustre/ptlrpc/layout.c | 63 +-
> drivers/staging/lustre/lustre/ptlrpc/llog_server.c | 450 --------------
> .../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c | 4 +-
> drivers/staging/lustre/lustre/ptlrpc/niobuf.c | 16 +-
> .../staging/lustre/lustre/ptlrpc/pack_generic.c | 59 +-
> drivers/staging/lustre/lustre/ptlrpc/pinger.c | 65 --
> drivers/staging/lustre/lustre/ptlrpc/ptlrpcd.c | 44 +-
> drivers/staging/lustre/lustre/ptlrpc/wiretest.c | 60 +-
> 99 files changed, 3043 insertions(+), 1793 deletions(-)
> delete mode 100644 drivers/staging/lustre/lustre/include/lu_target.h
> create mode 100644 drivers/staging/lustre/lustre/llite/xattr_cache.c
> delete mode 100644 drivers/staging/lustre/lustre/ptlrpc/llog_server.c
Some of the stuff here looks a lot like "new features / functionality"
to me, insead of just cleanups and fixes.
Ideally, you all would only work on cleanups and getting this code out
of staging, and not add new things while it's sitting here. But I know
that's going to be hard as you all are still working with an external
tree.
That external tree is going to be tough to keep up over time, I
_strongly_ suggest you drop it as soon as possible and only use the
upstream tree. Otherwise this whole thing really isn't going to work
out at all.
I'll go dig through these and see what they look like, thanks...
greg k-h
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 00/40] staging/lustre: patch bomb 1
2013-11-15 3:59 ` Greg Kroah-Hartman
@ 2013-11-15 9:51 ` Peng Tao
2013-11-15 20:54 ` Greg Kroah-Hartman
0 siblings, 1 reply; 9+ messages in thread
From: Peng Tao @ 2013-11-15 9:51 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Linux Kernel Mailing List, Andreas Dilger
On Fri, Nov 15, 2013 at 11:59 AM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> Some of the stuff here looks a lot like "new features / functionality"
> to me, insead of just cleanups and fixes.
>
> Ideally, you all would only work on cleanups and getting this code out
> of staging, and not add new things while it's sitting here. But I know
> that's going to be hard as you all are still working with an external
> tree.
>
> That external tree is going to be tough to keep up over time, I
> _strongly_ suggest you drop it as soon as possible and only use the
> upstream tree. Otherwise this whole thing really isn't going to work
> out at all.
>
There are many users of the external tree so we cannot just abandon
it, especially that the upstream client is not shipped in any
distribution yet. Thanks for your understanding.
> I'll go dig through these and see what they look like, thanks...
>
Thanks,
Tao
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 00/40] staging/lustre: patch bomb 1
2013-11-15 9:51 ` Peng Tao
@ 2013-11-15 20:54 ` Greg Kroah-Hartman
0 siblings, 0 replies; 9+ messages in thread
From: Greg Kroah-Hartman @ 2013-11-15 20:54 UTC (permalink / raw)
To: Peng Tao; +Cc: Linux Kernel Mailing List, Andreas Dilger
On Fri, Nov 15, 2013 at 05:51:14PM +0800, Peng Tao wrote:
> On Fri, Nov 15, 2013 at 11:59 AM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> > Some of the stuff here looks a lot like "new features / functionality"
> > to me, insead of just cleanups and fixes.
> >
> > Ideally, you all would only work on cleanups and getting this code out
> > of staging, and not add new things while it's sitting here. But I know
> > that's going to be hard as you all are still working with an external
> > tree.
> >
> > That external tree is going to be tough to keep up over time, I
> > _strongly_ suggest you drop it as soon as possible and only use the
> > upstream tree. Otherwise this whole thing really isn't going to work
> > out at all.
> >
> There are many users of the external tree so we cannot just abandon
> it, especially that the upstream client is not shipped in any
> distribution yet. Thanks for your understanding.
What is keeping people using that tree? Support for older/distro
kernels?
Is it the fact that the server code isn't in the kernel? Should that be
added now too so that we can get a proper view of what can and can not
be changed? Some of your patches are showing that things are shared by
the two chunks of code, so does that mean if I delete things in the
client code that don't look to be used by anything, you will have
problems because the server now breaks?
I think it's time to just merge the server and deal with the whole thing
all at once, otherwise this dependancy on your external tree, and
external code to the kernel, is going to doom the ability to ever get
this code cleaned up and merged properly.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-11-15 20:54 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-14 16:02 [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
2013-11-14 16:02 ` [PATCH 01/40] staging/lustre/llite: restore ll_fiemap Peng Tao
2013-11-14 16:02 ` [PATCH 02/40] staging/lustre: remove lu_target.h Peng Tao
2013-11-14 16:02 ` [PATCH 03/40] staging/lustre: remove llog_server.c Peng Tao
2013-11-14 16:12 ` [PATCH 00/40] staging/lustre: patch bomb 1 Peng Tao
-- strict thread matches above, loose matches on Subject: below --
2013-11-14 16:13 Peng Tao
2013-11-15 3:59 ` Greg Kroah-Hartman
2013-11-15 9:51 ` Peng Tao
2013-11-15 20:54 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).