From 5f79d6e08fbb930aa67dd59eb39cbece6f138b59 Mon Sep 17 00:00:00 2001 From: Xavier Hernandez Date: Thu, 18 Sep 2014 16:50:47 +0200 Subject: ec: Add config information in an xattr To simplify backward compatibility of the ec xlator when some parameter or the implementation itself is changed, a new xattr is added to each file with the configuration needed to recover it. The new attribute is called 'trusted.ec.config', and it's a 64-bit value containing the following information: 8 bits: version of the config information (currently always 0) 8 bits: algorithm used to encode the file (currently always 0) 8 bits: size of the galois field (currently always 8) 8 bits: number of bricks 8 bits: redundancy 24 bits: chunk size (currently 512) This new xattr could allow, in a future version, to have different configurations per file. Change-Id: I8c12d40ff546cc201fc66caa367484be3d48aeb4 BUG: 1140861 Signed-off-by: Xavier Hernandez Reviewed-on: http://review.gluster.org/8770 Tested-by: Gluster Build System Reviewed-by: Dan Lambright Reviewed-by: Vijay Bellur --- xlators/cluster/ec/src/ec-data.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'xlators/cluster/ec/src/ec-data.h') diff --git a/xlators/cluster/ec/src/ec-data.h b/xlators/cluster/ec/src/ec-data.h index 71f047a9aba..49090933ade 100644 --- a/xlators/cluster/ec/src/ec-data.h +++ b/xlators/cluster/ec/src/ec-data.h @@ -25,6 +25,9 @@ #include "ec.h" +struct _ec_config; +typedef struct _ec_config ec_config_t; + struct _ec_fd; typedef struct _ec_fd ec_fd_t; @@ -53,6 +56,16 @@ typedef void (* ec_wind_f)(ec_t *, ec_fop_data_t *, int32_t); typedef int32_t (* ec_handler_f)(ec_fop_data_t *, int32_t); typedef void (* ec_resume_f)(ec_fop_data_t *, int32_t); +struct _ec_config +{ + uint32_t version; + uint8_t algorithm; + uint8_t gf_word_size; + uint8_t bricks; + uint8_t redundancy; + uint32_t chunk_size; +}; + struct _ec_fd { uintptr_t bad; @@ -184,6 +197,7 @@ struct _ec_fop_data uint64_t pre_size; uint64_t post_size; gf_lock_t lock; + ec_config_t config; uint32_t flags; uint32_t first; -- cgit