/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, 2013, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
static const char *placement_name[] = {
[PLACEMENT_CHAR_POLICY] = "CHAR",
- [PLACEMENT_NID_POLICY] = "NID"
+ [PLACEMENT_NID_POLICY] = "NID",
+ [PLACEMENT_INVAL_POLICY] = "INVAL"
};
static placement_policy_t placement_name2policy(char *name, int len)
placement_policy_t policy;
struct lmv_obd *lmv;
- if (cfs_copy_from_user(dummy, buffer, MAX_POLICY_STRING_SIZE))
+ if (copy_from_user(dummy, buffer, MAX_POLICY_STRING_SIZE))
return -EFAULT;
LASSERT(dev != NULL);
static void *lmv_tgt_seq_start(struct seq_file *p, loff_t *pos)
{
- struct obd_device *dev = p->private;
- struct lmv_obd *lmv = &dev->u.lmv;
- return (*pos >= lmv->desc.ld_tgt_count) ? NULL : &(lmv->tgts[*pos]);
-
+ struct obd_device *dev = p->private;
+ struct lmv_obd *lmv = &dev->u.lmv;
+ return (*pos >= lmv->desc.ld_tgt_count) ? NULL : lmv->tgts[*pos];
}
static void lmv_tgt_seq_stop(struct seq_file *p, void *v)
static void *lmv_tgt_seq_next(struct seq_file *p, void *v, loff_t *pos)
{
- struct obd_device *dev = p->private;
- struct lmv_obd *lmv = &dev->u.lmv;
- ++*pos;
- return (*pos >=lmv->desc.ld_tgt_count) ? NULL : &(lmv->tgts[*pos]);
+ struct obd_device *dev = p->private;
+ struct lmv_obd *lmv = &dev->u.lmv;
+ ++*pos;
+ return (*pos >= lmv->desc.ld_tgt_count) ? NULL : lmv->tgts[*pos];
}
static int lmv_tgt_seq_show(struct seq_file *p, void *v)
{
- struct lmv_tgt_desc *tgt = v;
- struct obd_device *dev = p->private;
- struct lmv_obd *lmv = &dev->u.lmv;
- int idx = tgt - &(lmv->tgts[0]);
+ struct lmv_tgt_desc *tgt = v;
- return seq_printf(p, "%d: %s %sACTIVE\n", idx, tgt->ltd_uuid.uuid,
- tgt->ltd_active ? "" : "IN");
+ if (tgt == NULL)
+ return 0;
+ return seq_printf(p, "%d: %s %sACTIVE\n", tgt->ltd_idx,
+ tgt->ltd_uuid.uuid, tgt->ltd_active ? "" : "IN");
}
struct seq_operations lmv_tgt_sops = {