Exemplo n.º 1
0
static ssize_t
ldiskfs_osd_full_scrub_threshold_rate_seq_write(struct file *file,
						const char __user *buffer,
						size_t count, loff_t *off)
{
	struct seq_file *m = file->private_data;
	struct dt_device *dt = m->private;
	struct osd_device *dev = osd_dt_dev(dt);
	int rc;
	__s64 val;

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_str_to_s64(buffer, count, &val);
	if (rc != 0)
		return rc;

	if (val < 0)
		return -EINVAL;

	dev->od_full_scrub_threshold_rate = val;
	return count;
}
Exemplo n.º 2
0
static int lprocfs_osd_rd_fstype(char *page, char **start, off_t off, int count,
				 int *eof, void *data)
{
	struct osd_device *osd = osd_dt_dev(data);

        LASSERT(osd != NULL);
        return snprintf(page, count, "ldiskfs\n");
}
Exemplo n.º 3
0
static int lprocfs_osd_rd_iused_est(char *page, char **start, off_t off, int count,
					int *eof, void *data)
{
	struct osd_device *osd = osd_dt_dev((struct dt_device *)data);
	LASSERT(osd != NULL);

	return snprintf(page, count, "%d\n", osd->od_quota_iused_est);
}
Exemplo n.º 4
0
static int lprocfs_osd_rd_mntdev(char *page, char **start, off_t off, int count,
				int *eof, void *data)
{
	struct osd_device *osd = osd_dt_dev((struct dt_device *)data);

	LASSERT(osd != NULL);
	*eof = 1;

	return snprintf(page, count, "%s\n", osd->od_mntdev);
}
Exemplo n.º 5
0
static int lprocfs_osd_rd_wcache(char *page, char **start, off_t off,
				 int count, int *eof, void *data)
{
	struct osd_device *osd = osd_dt_dev(data);

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	return snprintf(page, count, "%u\n", osd->od_writethrough_cache);
}
Exemplo n.º 6
0
static int lprocfs_osd_rd_oi_scrub(char *page, char **start, off_t off,
				   int count, int *eof, void *data)
{
	struct osd_device *dev = osd_dt_dev(data);

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	*eof = 1;
	return osd_scrub_dump(dev, page, count);
}
Exemplo n.º 7
0
static int lprocfs_osd_rd_auto_scrub(char *page, char **start, off_t off,
				     int count, int *eof, void *data)
{
	struct osd_device *dev = osd_dt_dev(data);

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	*eof = 1;
	return snprintf(page, count, "%d\n", !dev->od_noscrub);
}
Exemplo n.º 8
0
int lprocfs_osd_rd_readcache(char *page, char **start, off_t off, int count,
			     int *eof, void *data)
{
	struct osd_device	*osd = osd_dt_dev(data);
	int			 rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = snprintf(page, count, LPU64"\n", osd->od_readcache_max_filesize);
	return rc;
}
Exemplo n.º 9
0
static ssize_t
ldiskfs_osd_index_in_idif_seq_write(struct file *file,
				    const char __user *buffer,
				    size_t count, loff_t *off)
{
	struct lu_env env;
	struct seq_file *m = file->private_data;
	struct dt_device *dt = m->private;
	struct osd_device *dev = osd_dt_dev(dt);
	struct lu_target *tgt;
	__s64 val;
	int rc;

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_str_to_s64(buffer, count, &val);
	if (rc != 0)
		return rc;

	if (dev->od_index_in_idif) {
		if (val != 0)
			return count;

		LCONSOLE_WARN("%s: OST-index in IDIF has been enabled, "
			      "it cannot be reverted back.\n", osd_name(dev));
		return -EPERM;
	}

	if (val == 0)
		return count;

	rc = lu_env_init(&env, LCT_DT_THREAD);
	if (rc != 0)
		return rc;

	tgt = dev->od_dt_dev.dd_lu_dev.ld_site->ls_tgt;
	tgt->lut_lsd.lsd_feature_rocompat |= OBD_ROCOMPAT_IDX_IN_IDIF;
	rc = tgt_server_data_update(&env, tgt, 1);
	lu_env_fini(&env);
	if (rc < 0)
		return rc;

	LCONSOLE_INFO("%s: enable OST-index in IDIF successfully, "
		      "it cannot be reverted back.\n", osd_name(dev));

	dev->od_index_in_idif = 1;
	return count;
}
Exemplo n.º 10
0
static int lprocfs_osd_wr_iused_est(struct file *file, const char *buffer,
					unsigned long count, void *data)
{
	struct osd_device *osd = osd_dt_dev((struct dt_device *)data);
	int                rc, val;

	LASSERT(osd != NULL);

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_quota_iused_est = !!val;

	return count;
}
Exemplo n.º 11
0
static int lprocfs_osd_wr_wcache(struct file *file, const char *buffer,
				 unsigned long count, void *data)
{
	struct osd_device	*osd = osd_dt_dev(data);
	int			 val, rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_writethrough_cache = !!val;
	return count;
}
Exemplo n.º 12
0
static int lprocfs_osd_wr_auto_scrub(struct file *file, const char *buffer,
				     unsigned long count, void *data)
{
	struct osd_device *dev = osd_dt_dev(data);
	int val, rc;

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	dev->od_noscrub = !val;
	return count;
}
Exemplo n.º 13
0
static ssize_t
zfs_osd_iused_est_seq_write(struct file *file, const char __user *buffer,
			     size_t count, loff_t *off)
{
	struct seq_file	  *m = file->private_data;
	struct dt_device  *dt = m->private;
	struct osd_device *osd = osd_dt_dev(dt);
	int                rc, val;

	LASSERT(osd != NULL);

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_quota_iused_est = !!val;

	return count;
}
Exemplo n.º 14
0
int lprocfs_osd_wr_readcache(struct file *file, const char *buffer,
			     unsigned long count, void *data)
{
	struct osd_device	*osd = osd_dt_dev(data);
	__u64			 val;
	int			 rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_u64_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_readcache_max_filesize = val > OSD_MAX_CACHE_SIZE ?
					 OSD_MAX_CACHE_SIZE : val;
	return count;
}
Exemplo n.º 15
0
static ssize_t
ldiskfs_osd_auto_scrub_seq_write(struct file *file, const char *buffer,
					size_t count, loff_t *off)
{
	struct seq_file	  *m = file->private_data;
	struct dt_device  *dt = m->private;
	struct osd_device *dev = osd_dt_dev(dt);
	int val, rc;

	LASSERT(dev != NULL);
	if (unlikely(dev->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	dev->od_noscrub = !val;
	return count;
}
Exemplo n.º 16
0
static ssize_t
ldiskfs_osd_wcache_seq_write(struct file *file, const char *buffer,
				size_t count, loff_t *off)
{
	struct seq_file	  *m = file->private_data;
	struct dt_device  *dt = m->private;
	struct osd_device *osd = osd_dt_dev(dt);
	int		   val, rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_writethrough_cache = !!val;
	return count;
}
Exemplo n.º 17
0
static int lprocfs_osd_wr_force_sync(struct file *file, const char *buffer,
				     unsigned long count, void *data)
{
	struct osd_device	*osd = osd_dt_dev(data);
	struct dt_device	*dt = data;
	struct lu_env		 env;
	int			 rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lu_env_init(&env, LCT_LOCAL);
	if (rc)
		return rc;
	rc = dt_sync(&env, dt);
	lu_env_fini(&env);

	return rc == 0 ? count : rc;
}
Exemplo n.º 18
0
ssize_t
ldiskfs_osd_readcache_seq_write(struct file *file, const char *buffer,
				size_t count, loff_t *off)
{
	struct seq_file	  *m = file->private_data;
	struct dt_device  *dt = m->private;
	struct osd_device *osd = osd_dt_dev(dt);
	__u64		   val;
	int		   rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_write_u64_helper(buffer, count, &val);
	if (rc)
		return rc;

	osd->od_readcache_max_filesize = val > OSD_MAX_CACHE_SIZE ?
					 OSD_MAX_CACHE_SIZE : val;
	return count;
}
Exemplo n.º 19
0
static ssize_t
lprocfs_osd_force_sync_seq_write(struct file *file, const char *buffer,
					size_t count, loff_t *off)
{
	struct seq_file	  *m = file->private_data;
	struct dt_device  *dt = m->private;
	struct osd_device *osd = osd_dt_dev(dt);
	struct lu_env	   env;
	int		   rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lu_env_init(&env, LCT_LOCAL);
	if (rc)
		return rc;
	rc = dt_sync(&env, dt);
	lu_env_fini(&env);

	return rc == 0 ? count : rc;
}
Exemplo n.º 20
0
static ssize_t
ldiskfs_osd_readcache_seq_write(struct file *file, const char __user *buffer,
				size_t count, loff_t *off)
{
	struct seq_file *m = file->private_data;
	struct dt_device *dt = m->private;
	struct osd_device *osd = osd_dt_dev(dt);
	__s64 val;
	int rc;

	LASSERT(osd != NULL);
	if (unlikely(osd->od_mnt == NULL))
		return -EINPROGRESS;

	rc = lprocfs_str_with_units_to_s64(buffer, count, &val, '1');
	if (rc)
		return rc;
	if (val < 0)
		return -ERANGE;

	osd->od_readcache_max_filesize = val > OSD_MAX_CACHE_SIZE ?
					 OSD_MAX_CACHE_SIZE : val;
	return count;
}