]> git.neil.brown.name Git - lafs-utils.git/commitdiff
FORMAT CHANGE add timestamp to group_head in write cluster
authorNeilBrown <neilb@suse.de>
Wed, 4 May 2011 03:47:43 +0000 (13:47 +1000)
committerNeilBrown <neilb@suse.de>
Wed, 4 May 2011 03:47:43 +0000 (13:47 +1000)
This allows exact preservation of time stamp during roll forward

Signed-off-by: NeilBrown <neilb@suse.de>
include/lafs/layout.h
lib/lafs_cluster_flush.c
lib/lafs_print_cluster.c

index 36a3a42f2d222b8d5279138c8638f82290ee55d6..2e7fb633ae91a5a671e3e3652234713022cb2693 100644 (file)
@@ -81,6 +81,9 @@ struct miniblock {
 struct group_head {
        u32     inum;
        u32     fsnum;
+       u64     timestamp;      /* If non-zero, the ctime and mtime
+                                * of the file should be set to this.
+                                */
        u16     truncatenum_and_flag;
        u16     group_size_words;       /* 4byte words */
        union {
index ac317182d772b87543eaf2a2ac73da415cd0a658..7118900e3337239b0c4e5c2bb6ada711489ccbdc 100644 (file)
@@ -147,6 +147,7 @@ static void cluster_addhead(struct lafs_cluster *wc, struct lafs_ino *ino,
        *headstart = gh;
        gh->inum = __cpu_to_le32(ino->inum);
        gh->fsnum = __cpu_to_le32(ino->filesys->inum);
+       gh->timestamp = 0;
        tnf = ((ino->generation<<8) | (ino->trunc_gen & 0xff))
                & 0x7fff;
        if (cnum)
index c1e4124e34b782114fab86c6ebdee91dfd616f02..bddf1d8a17f74aa43454a8fadfc4894d5073ab6a 100644 (file)
@@ -63,6 +63,7 @@ void lafs_print_cluster(struct cluster_head *head, int blocksize,
                        printf(" Group[%d]:\n", i);
                        printf("  Inum    : %d\n", (int)le32_to_cpu(gh->inum));
                        printf("  FSnum   : %d\n", (int)le32_to_cpu(gh->fsnum));
+                       printf("  Tstamp  : %llu\n", (unsigned long long)__le64_to_cpu(gh->timestamp));
                        printf("  Flag    : %s\n", (__le16_to_cpu(gh->truncatenum_and_flag) & 0x8000) ? "old":"new");
                        printf("  TRnum   : %d\n", (int)__le16_to_cpu(gh->truncatenum_and_flag) & 0x7fff);
                        printf("  Size    : %d words\n", (int)__le16_to_cpu(gh->group_size_words));