Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 752727a1 authored by Sage Weil's avatar Sage Weil
Browse files

ceph: add file layout validation



This tracks updates to code shared with userspace.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent 13e38c8a
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -3,6 +3,30 @@
 */
#include "types.h"

/*
 * return true if @layout appears to be valid
 */
int ceph_file_layout_is_valid(const struct ceph_file_layout *layout)
{
	__u32 su = le32_to_cpu(layout->fl_stripe_unit);
	__u32 sc = le32_to_cpu(layout->fl_stripe_count);
	__u32 os = le32_to_cpu(layout->fl_object_size);

	/* stripe unit, object size must be non-zero, 64k increment */
	if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1)))
		return 0;
	if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1)))
		return 0;
	/* object size must be a multiple of stripe unit */
	if (os < su || os % su)
		return 0;
	/* stripe count must be non-zero */
	if (!sc)
		return 0;
	return 1;
}


int ceph_flags_to_mode(int flags)
{
#ifdef O_DIRECTORY  /* fixme */
+2 −0
Original line number Diff line number Diff line
@@ -72,7 +72,9 @@ struct ceph_file_layout {
	__le32 fl_pg_pool;      /* namespace, crush ruleset, rep level */
} __attribute__ ((packed));

#define CEPH_MIN_STRIPE_UNIT 65536

int ceph_file_layout_is_valid(const struct ceph_file_layout *layout);


/*********************************************