[Cluster-devel] [GFS2 PATCH][v4] GFS2: Introduce new gfs2_log_header_v2
Andrew Price
anprice at redhat.com
Thu Jan 18 16:04:23 UTC 2018
On 04/01/18 16:51, Bob Peterson wrote:
<snip>
> diff --git a/include/uapi/linux/gfs2_ondisk.h b/include/uapi/linux/gfs2_ondisk.h
> index 09f0920f07e9..7eb73c32272f 100644
> --- a/include/uapi/linux/gfs2_ondisk.h
> +++ b/include/uapi/linux/gfs2_ondisk.h
> @@ -403,7 +403,15 @@ struct gfs2_ea_header {
> * Log header structure
> */
>
> -#define GFS2_LOG_HEAD_UNMOUNT 0x00000001 /* log is clean */
> +#define GFS2_LOG_HEAD_UNMOUNT 0x00000001 /* log is clean */
> +#define GFS2_LOG_HEAD_FLUSH_NORMAL 0x00000002 /* normal log flush */
> +#define GFS2_LOG_HEAD_FLUSH_SYNC 0x00000004 /* Sync log flush */
> +#define GFS2_LOG_HEAD_FLUSH_SHUTDOWN 0x00000008 /* Shutdown log flush */
> +#define GFS2_LOG_HEAD_FLUSH_FREEZE 0x00000010 /* Freeze flush */
> +#define GFS2_LOG_HEAD_RECOVERY 0x00000020 /* Journal recovery */
> +#define GFS2_LOG_HEAD_USERSPACE 0x80000000 /* Written by gfs2-utils */
> +
> +#define LH_V1_SIZE (offsetofend(struct gfs2_log_header, lh_hash))
>
> struct gfs2_log_header {
> struct gfs2_meta_header lh_header;
> @@ -413,6 +421,21 @@ struct gfs2_log_header {
> __be32 lh_tail; /* Block number of log tail */
> __be32 lh_blkno;
> __be32 lh_hash;
> +
> + /* Version 2 additional fields start here */
> + __be32 lh_crc; /* crc32 of whole block with this field 0 */
> + __be32 lh_nsec; /* Nano second time stamp */
> + __be64 lh_sec; /* Second based time stamp */
> + __be64 lh_addr; /* Block addr of this log header (absolute) */
> + __be64 lh_jinode; /* Journal inode number */
> + __be64 lh_statfs_addr; /* Local statfs inode number */
> + __be64 lh_quota_addr; /* Local quota change inode number */
> +
> + /* Statfs local changes (i.e. diff from global statfs) */
> + __be64 lh_local_total;
> + __be64 lh_local_free;
> + __be64 lh_local_dinodes;
> + __be32 lh_log_origin; /* The origin of this log header */
> };
>
> /*
>
Thinking about tools like fsck.gfs2, which will be built with the new
header but could be looking at older structures on-disk, how would it
know whether to treat the log header as a v1 or v2?
Andy
More information about the Cluster-devel
mailing list