nfsd: Add a super simple flex file server
Have a simple flex file server where the mds (NFSv4.1 or NFSv4.2) is also the ds (NFSv3). I.e., the metadata and the data file are the exact same file. This will allow testing of the flex file client. Simply add the "pnfs" export option to your export in /etc/exports and mount from a client that supports flex files. Signed-off-by: Tom Haynes <loghyr@primarydata.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:

committed by
J. Bruce Fields

szülő
d7c920d134
commit
9b9960a0ca
@@ -27,6 +27,9 @@ static const struct nfsd4_callback_ops nfsd4_cb_layout_ops;
|
||||
static const struct lock_manager_operations nfsd4_layouts_lm_ops;
|
||||
|
||||
const struct nfsd4_layout_ops *nfsd4_layout_ops[LAYOUT_TYPE_MAX] = {
|
||||
#ifdef CONFIG_NFSD_FLEXFILELAYOUT
|
||||
[LAYOUT_FLEX_FILES] = &ff_layout_ops,
|
||||
#endif
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
[LAYOUT_BLOCK_VOLUME] = &bl_layout_ops,
|
||||
#endif
|
||||
@@ -122,17 +125,24 @@ nfsd4_set_deviceid(struct nfsd4_deviceid *id, const struct svc_fh *fhp,
|
||||
|
||||
void nfsd4_setup_layout_type(struct svc_export *exp)
|
||||
{
|
||||
#if defined(CONFIG_NFSD_BLOCKLAYOUT) || defined(CONFIG_NFSD_SCSILAYOUT)
|
||||
struct super_block *sb = exp->ex_path.mnt->mnt_sb;
|
||||
#endif
|
||||
|
||||
if (!(exp->ex_flags & NFSEXP_PNFS))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Check if the file system supports exporting a block-like layout.
|
||||
* If flex file is configured, use it by default. Otherwise
|
||||
* check if the file system supports exporting a block-like layout.
|
||||
* If the block device supports reservations prefer the SCSI layout,
|
||||
* otherwise advertise the block layout.
|
||||
*/
|
||||
#ifdef CONFIG_NFSD_FLEXFILELAYOUT
|
||||
exp->ex_layout_type = LAYOUT_FLEX_FILES;
|
||||
#endif
|
||||
#ifdef CONFIG_NFSD_BLOCKLAYOUT
|
||||
/* overwrite flex file layout selection if needed */
|
||||
if (sb->s_export_op->get_uuid &&
|
||||
sb->s_export_op->map_blocks &&
|
||||
sb->s_export_op->commit_blocks)
|
||||
|
Reference in New Issue
Block a user