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

Commit c28cfd60 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd

* 'for-linus' of git://git.open-osd.org/linux-open-osd: (21 commits)
  ore: Enable RAID5 mounts
  exofs: Support for RAID5 read-4-write interface.
  ore: RAID5 Write
  ore: RAID5 read
  fs/Makefile: Always inspect exofs/
  ore: Make ore_calc_stripe_info EXPORT_SYMBOL
  ore/exofs: Change ore_check_io API
  ore/exofs: Define new ore_verify_layout
  ore: Support for partial component table
  ore: Support for short read/writes
  exofs: Support for short read/writes
  ore: Remove check for ios->kern_buff in _prepare_for_striping to later
  ore: cleanup: Embed an ore_striping_info inside ore_io_state
  ore: Only IO one group at a time (API change)
  ore/exofs: Change the type of the devices array (API change)
  ore: Make ore_striping_info and ore_calc_stripe_info public
  exofs: Remove unused data_map member from exofs_sb_info
  exofs: Rename struct ore_components comps => oc
  exofs/super.c: local functions should be static
  exofs/ore.c: local functions should be static
  ...
parents dfa4a423 44231e68
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -11,10 +11,6 @@
# it under the terms of the GNU General Public version 2 License as
# published by the Free Software Foundation
#
# FIXME: SCSI_OSD_INITIATOR should select CONFIG (HMAC) SHA1 somehow.
#        How is it done properly?
#

config SCSI_OSD_INITIATOR
	tristate "OSD-Initiator library"
	depends on SCSI
+1 −1
Original line number Diff line number Diff line
@@ -120,6 +120,6 @@ obj-$(CONFIG_DEBUG_FS) += debugfs/
obj-$(CONFIG_OCFS2_FS)		+= ocfs2/
obj-$(CONFIG_BTRFS_FS)		+= btrfs/
obj-$(CONFIG_GFS2_FS)           += gfs2/
obj-$(CONFIG_EXOFS_FS)          += exofs/
obj-$(y)          		+= exofs/ # Multiple mods, used by nfs/objlayout
obj-$(CONFIG_CEPH_FS)		+= ceph/
obj-$(CONFIG_PSTORE)		+= pstore/
+2 −1
Original line number Diff line number Diff line
@@ -13,7 +13,8 @@
#

# ore module library
obj-$(CONFIG_ORE) += ore.o
libore-y := ore.o ore_raid.o
obj-$(CONFIG_ORE) += libore.o

exofs-y := inode.o file.o symlink.o namei.o dir.o super.o
obj-$(CONFIG_EXOFS_FS) += exofs.o
+8 −1
Original line number Diff line number Diff line
# Note ORE needs to "select ASYNC_XOR". So Not to force multiple selects
# for every ORE user we do it like this. Any user should add itself here
# at the "depends on EXOFS_FS || ..." with an ||. The dependencies are
# selected here, and we default to "ON". So in effect it is like been
# selected by any of the users.
config ORE
	tristate
	depends on EXOFS_FS
	select ASYNC_XOR
	default SCSI_OSD_ULD

config EXOFS_FS
	tristate "exofs: OSD based file system support"
	depends on SCSI_OSD_ULD
	select ORE
	help
	  EXOFS is a file system that uses an OSD storage device,
	  as its backing storage.
+14 −12
Original line number Diff line number Diff line
@@ -53,6 +53,10 @@
/* u64 has problems with printk this will cast it to unsigned long long */
#define _LLU(x) (unsigned long long)(x)

struct exofs_dev {
	struct ore_dev ored;
	unsigned did;
};
/*
 * our extension to the in-memory superblock
 */
@@ -66,13 +70,9 @@ struct exofs_sb_info {
	u32		s_next_generation;	/* next gen # to use          */
	atomic_t	s_curr_pending;		/* number of pending commands */

	struct pnfs_osd_data_map data_map;	/* Default raid to use
						 * FIXME: Needed ?
						 */
	struct ore_layout	layout;		/* Default files layout       */
	struct ore_comp one_comp;		/* id & cred of partition id=0*/
	struct ore_components comps;		/* comps for the partition    */
	struct osd_dev	*_min_one_dev[1];	/* Place holder for one dev   */
	struct ore_components oc;		/* comps for the partition    */
};

/*
@@ -86,7 +86,7 @@ struct exofs_i_info {
	uint32_t       i_dir_start_lookup; /* which page to start lookup      */
	uint64_t       i_commit_size;      /* the object's written length     */
	struct ore_comp one_comp;	   /* same component for all devices  */
	struct ore_components comps;	   /* inode view of the device table  */
	struct ore_components oc;	   /* inode view of the device table  */
};

static inline osd_id exofs_oi_objno(struct exofs_i_info *oi)
@@ -207,7 +207,7 @@ extern const struct inode_operations exofs_fast_symlink_inode_operations;
 * bigger and that the device table repeats twice.
 * See: exofs_read_lookup_dev_table()
 */
static inline void exofs_init_comps(struct ore_components *comps,
static inline void exofs_init_comps(struct ore_components *oc,
				    struct ore_comp *one_comp,
				    struct exofs_sb_info *sbi, osd_id oid)
{
@@ -217,13 +217,15 @@ static inline void exofs_init_comps(struct ore_components *comps,
	one_comp->obj.id = oid;
	exofs_make_credential(one_comp->cred, &one_comp->obj);

	comps->numdevs = sbi->comps.numdevs;
	comps->single_comp = EC_SINGLE_COMP;
	comps->comps = one_comp;
	oc->first_dev = 0;
	oc->numdevs = sbi->layout.group_width * sbi->layout.mirrors_p1 *
							sbi->layout.group_count;
	oc->single_comp = EC_SINGLE_COMP;
	oc->comps = one_comp;

	/* Round robin device view of the table */
	first_dev = (dev_mod * sbi->layout.mirrors_p1) % sbi->comps.numdevs;
	comps->ods = sbi->comps.ods + first_dev;
	first_dev = (dev_mod * sbi->layout.mirrors_p1) % sbi->oc.numdevs;
	oc->ods = &sbi->oc.ods[first_dev];
}

#endif
Loading