#include <linux/lustre_net.h>
#include <linux/lustre_dlm.h>
#include <linux/init.h>
+#include <linux/lprocfs_status.h>
+
+extern lprocfs_vars_t status_var_nm_1[];
+extern lprocfs_vars_t status_class_var[];
static int ost_destroy(struct ptlrpc_request *req)
{
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_getattr(conn, &repbody->oa, NULL);
RETURN(0);
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_open(conn, &repbody->oa, NULL);
RETURN(0);
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_close(conn, &repbody->oa, NULL);
RETURN(0);
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_create(conn, &repbody->oa, NULL);
RETURN(0);
body = lustre_msg_buf(req->rq_reqmsg, 0);
- if (!(body->oa.o_valid & OBD_MD_FLSIZE) ||
- !(body->oa.o_valid & OBD_MD_FLBLOCKS))
+ if ((NTOH__u32(body->oa.o_valid) & (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS))!=
+ (OBD_MD_FLSIZE | OBD_MD_FLBLOCKS))
RETURN(-EINVAL);
rc = lustre_pack_msg(1, &size, NULL, &req->rq_replen, &req->rq_repmsg);
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_punch(conn, &repbody->oa, NULL,
- repbody->oa.o_blocks, repbody->oa.o_size);
+ repbody->oa.o_size, repbody->oa.o_blocks);
RETURN(0);
}
RETURN(rc);
repbody = lustre_msg_buf(req->rq_repmsg, 0);
+ /* FIXME: unpack only valid fields instead of memcpy, endianness */
memcpy(&repbody->oa, &body->oa, sizeof(body->oa));
req->rq_status = obd_setattr(conn, &repbody->oa, NULL);
RETURN(0);
MOD_DEC_USE_COUNT;
RETURN(0);
}
+int ost_attach(struct obd_device *dev,
+ obd_count len, void *data)
+{
+ /* lprocfs_reg_dev(dev, (lprocfs_group_t*)lprocfs_ptlrpc_nm,
+ sizeof(struct lprofiler_ptlrpc));
+ */
+ lprocfs_reg_obd(dev, (lprocfs_vars_t*)status_var_nm_1, (void*)dev);
+ return 0;
+}
+
+int ost_detach(struct obd_device *dev)
+{
+ /* lprocfs_dereg_dev(dev); */
+ lprocfs_dereg_obd(dev);
+ return 0;
+
+}
+
+
/* use obd ops to offer management infrastructure */
static struct obd_ops ost_obd_ops = {
+ o_attach: ost_attach,
+ o_detach: ost_detach,
o_setup: ost_setup,
o_cleanup: ost_cleanup,
};
static int __init ost_init(void)
{
- class_register_type(&ost_obd_ops, LUSTRE_OST_NAME);
+ int rc;
+
+ rc = class_register_type(&ost_obd_ops,
+ (lprocfs_vars_t*)status_class_var,
+ LUSTRE_OST_NAME);
+ if (rc) RETURN(rc);
+
return 0;
+
}
static void __exit ost_exit(void)
{
+
class_unregister_type(LUSTRE_OST_NAME);
}