mirror of
https://github.com/versity/scoutfs.git
synced 2026-07-30 20:13:17 +00:00
scoutfs: add uniq_name mount option
Each mount is getting a specified unique name. This can be used to identify a reconnecting mount that indicates that an old instance of the same unique name can no longer exist and doesn't need to be fenced. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
@@ -349,6 +349,7 @@ struct scoutfs_betimespec {
|
||||
#define member_sizeof(TYPE, MEMBER) (sizeof(((TYPE *)0)->MEMBER))
|
||||
|
||||
#define SCOUTFS_UUID_BYTES 16
|
||||
#define SCOUTFS_UNIQUE_NAME_MAX_BYTES 64 /* includes null */
|
||||
|
||||
/* XXX ipv6 */
|
||||
struct scoutfs_inet_addr {
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
static const match_table_t tokens = {
|
||||
{Opt_listen, "listen=%s"},
|
||||
{Opt_cluster, "cluster=%s"},
|
||||
{Opt_uniq_name, "uniq_name=%s"},
|
||||
{Opt_err, NULL}
|
||||
};
|
||||
|
||||
@@ -86,6 +87,12 @@ int scoutfs_parse_options(struct super_block *sb, char *options,
|
||||
match_strlcpy(parsed->cluster_name, args,
|
||||
MAX_CLUSTER_NAME_LEN);
|
||||
break;
|
||||
case Opt_uniq_name:
|
||||
len = match_strlcpy(parsed->uniq_name, args,
|
||||
SCOUTFS_UNIQUE_NAME_MAX_BYTES);
|
||||
if (len == 0 || len > SCOUTFS_UNIQUE_NAME_MAX_BYTES)
|
||||
return -EINVAL;
|
||||
break;
|
||||
default:
|
||||
scoutfs_err(sb, "Unknown or malformed option, \"%s\"\n",
|
||||
p);
|
||||
@@ -93,6 +100,11 @@ int scoutfs_parse_options(struct super_block *sb, char *options,
|
||||
}
|
||||
}
|
||||
|
||||
if (parsed->uniq_name[0] == '\0') {
|
||||
scoutfs_err(sb, "must provide a uniq_name option");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ enum {
|
||||
* the number of items in each block as though the blocks were tiny.
|
||||
*/
|
||||
Opt_btree_force_tiny_blocks,
|
||||
Opt_uniq_name,
|
||||
Opt_err,
|
||||
};
|
||||
|
||||
@@ -20,6 +21,7 @@ struct mount_options
|
||||
{
|
||||
struct scoutfs_inet_addr listen_addr;
|
||||
char cluster_name[MAX_CLUSTER_NAME_LEN];
|
||||
char uniq_name[SCOUTFS_UNIQUE_NAME_MAX_BYTES];
|
||||
};
|
||||
|
||||
int scoutfs_parse_options(struct super_block *sb, char *options,
|
||||
|
||||
Reference in New Issue
Block a user