This is an automated email from the git hooks/post-receive script.
teigland pushed a commit to branch master
in repository sanlock.
commit 63fc9a80ee25f384579c700097ab3044f02a50b6
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Mon Oct 22 15:10:10 2018 -0500
sanlock: clear preset sector/align flags
The user may set sector/align flags when reading
the lockspace or resource (sanlock may use them
as hints.) The user-supplied flags may be wrong,
so clear them before returning the actual flags.
---
src/delta_lease.c | 4 ++++
src/paxos_lease.c | 4 ++++
src/sizeflags.c | 28 ++++++++++++++++++++++++++++
src/sizeflags.h | 4 ++++
4 files changed, 40 insertions(+)
diff --git a/src/delta_lease.c b/src/delta_lease.c
index 6859f1f..5616432 100644
--- a/src/delta_lease.c
+++ b/src/delta_lease.c
@@ -197,6 +197,10 @@ int delta_read_lockspace(struct task *task,
if (!align_size)
align_size = sector_size_to_align_size_old(leader.sector_size);
+ /* The flags set by the user may not have been correct. */
+ sanlk_lsf_sector_flags_clear(&ls->flags);
+ sanlk_lsf_align_flags_clear(&ls->flags);
+
ls->flags |= sanlk_lsf_sector_size_to_flag(leader.sector_size);
ls->flags |= sanlk_lsf_align_size_to_flag(align_size);
}
diff --git a/src/paxos_lease.c b/src/paxos_lease.c
index 7b51a10..4573b63 100644
--- a/src/paxos_lease.c
+++ b/src/paxos_lease.c
@@ -1089,6 +1089,10 @@ int paxos_read_resource(struct task *task,
token->sector_size = leader.sector_size;
token->align_size = align_size;
+ /* The flags set by the user may be wrong. */
+ sanlk_res_sector_flags_clear(&res->flags);
+ sanlk_res_align_flags_clear(&res->flags);
+
res->flags |= sanlk_res_sector_size_to_flag(leader.sector_size);
res->flags |= sanlk_res_align_size_to_flag(align_size);
} else if (tmp_sector_size) {
diff --git a/src/sizeflags.c b/src/sizeflags.c
index 3780f0f..94d59cd 100644
--- a/src/sizeflags.c
+++ b/src/sizeflags.c
@@ -158,6 +158,20 @@ uint32_t sanlk_lsf_sector_size_to_flag(int sector_size)
return 0;
}
+void sanlk_lsf_sector_flags_clear(uint32_t *flags)
+{
+ *flags &= ~SANLK_LSF_SECTOR512;
+ *flags &= ~SANLK_LSF_SECTOR4K;
+}
+
+void sanlk_lsf_align_flags_clear(uint32_t *flags)
+{
+ *flags &= ~SANLK_LSF_ALIGN1M;
+ *flags &= ~SANLK_LSF_ALIGN2M;
+ *flags &= ~SANLK_LSF_ALIGN4M;
+ *flags &= ~SANLK_LSF_ALIGN8M;
+}
+
int sanlk_lsf_align_flag_to_size(uint32_t flags)
{
if (flags & SANLK_LSF_ALIGN1M)
@@ -208,6 +222,20 @@ uint32_t sanlk_res_sector_size_to_flag(int sector_size)
return 0;
}
+void sanlk_res_sector_flags_clear(uint32_t *flags)
+{
+ *flags &= ~SANLK_RES_SECTOR512;
+ *flags &= ~SANLK_RES_SECTOR4K;
+}
+
+void sanlk_res_align_flags_clear(uint32_t *flags)
+{
+ *flags &= ~SANLK_RES_ALIGN1M;
+ *flags &= ~SANLK_RES_ALIGN2M;
+ *flags &= ~SANLK_RES_ALIGN4M;
+ *flags &= ~SANLK_RES_ALIGN8M;
+}
+
int sanlk_res_align_flag_to_size(uint32_t flags)
{
if (flags & SANLK_RES_ALIGN1M)
diff --git a/src/sizeflags.h b/src/sizeflags.h
index 76428ac..56035c9 100644
--- a/src/sizeflags.h
+++ b/src/sizeflags.h
@@ -28,11 +28,15 @@ int sanlk_lsf_sector_flag_to_size(uint32_t flags);
uint32_t sanlk_lsf_sector_size_to_flag(int sector_size);
int sanlk_lsf_align_flag_to_size(uint32_t flags);
uint32_t sanlk_lsf_align_size_to_flag(int align_size);
+void sanlk_lsf_sector_flags_clear(uint32_t *flags);
+void sanlk_lsf_align_flags_clear(uint32_t *flags);
int sanlk_res_sector_flag_to_size(uint32_t flags);
uint32_t sanlk_res_sector_size_to_flag(int sector_size);
int sanlk_res_align_flag_to_size(uint32_t flags);
uint32_t sanlk_res_align_size_to_flag(int align_size);
+void sanlk_res_sector_flags_clear(uint32_t *flags);
+void sanlk_res_align_flags_clear(uint32_t *flags);
int sanlk_rif_sector_flag_to_size(uint32_t flags);
uint32_t sanlk_rif_sector_size_to_flag(int sector_size);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.