btrfs-progs: ins: print c/o/s/r time of ROOT_ITEM
diff mbox

Message ID 8bccc1fc-c8bb-9999-dbb7-94185ba5d7e8@jp.fujitsu.com
State New
Headers show

Commit Message

Misono Tomohiro Oct. 31, 2017, 5:40 a.m. UTC
Currently c/o/s/r time of ROOT_ITEM is not printed in print_root_item().
Fix this and print them if the values are not zero. print_timespec()
is moved forward to reuse.

Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com>
---
 ctree.h      | 32 ++++++++++++++++++++++++++++++++
 print-tree.c | 52 ++++++++++++++++++++++++++++++++--------------------
 2 files changed, 64 insertions(+), 20 deletions(-)

Comments

Qu WenRuo Oct. 31, 2017, 5:58 a.m. UTC | #1
On 2017年10月31日 13:40, Misono, Tomohiro wrote:
> Currently c/o/s/r time of ROOT_ITEM is not printed in print_root_item().
> Fix this and print them if the values are not zero. print_timespec()
> is moved forward to reuse.
> 
> Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com>

Reviewed-by: Qu Wenruo <wqu@suse.com>

Thanks,
Qu

> ---
>  ctree.h      | 32 ++++++++++++++++++++++++++++++++
>  print-tree.c | 52 ++++++++++++++++++++++++++++++++--------------------
>  2 files changed, 64 insertions(+), 20 deletions(-)
> 
> diff --git a/ctree.h b/ctree.h
> index 2280659..54a85fd 100644
> --- a/ctree.h
> +++ b/ctree.h
> @@ -2072,6 +2072,38 @@ BTRFS_SETGET_STACK_FUNCS(root_stransid, struct btrfs_root_item,
>  BTRFS_SETGET_STACK_FUNCS(root_rtransid, struct btrfs_root_item,
>  			 rtransid, 64);
>  
> +static inline struct btrfs_timespec *
> +btrfs_root_ctime(struct btrfs_root_item *root_item)
> +{
> +	unsigned long ptr = (unsigned long)root_item;
> +	ptr += offsetof(struct btrfs_root_item, ctime);
> +	return (struct btrfs_timespec *)ptr;
> +}
> +
> +static inline struct btrfs_timespec *
> +btrfs_root_otime(struct btrfs_root_item *root_item)
> +{
> +	unsigned long ptr = (unsigned long)root_item;
> +	ptr += offsetof(struct btrfs_root_item, otime);
> +	return (struct btrfs_timespec *)ptr;
> +}
> +
> +static inline struct btrfs_timespec *
> +btrfs_root_stime(struct btrfs_root_item *root_item)
> +{
> +	unsigned long ptr = (unsigned long)root_item;
> +	ptr += offsetof(struct btrfs_root_item, stime);
> +	return (struct btrfs_timespec *)ptr;
> +}
> +
> +static inline struct btrfs_timespec *
> +btrfs_root_rtime(struct btrfs_root_item *root_item)
> +{
> +	unsigned long ptr = (unsigned long)root_item;
> +	ptr += offsetof(struct btrfs_root_item, rtime);
> +	return (struct btrfs_timespec *)ptr;
> +}
> +
>  /* struct btrfs_root_backup */
>  BTRFS_SETGET_STACK_FUNCS(backup_tree_root, struct btrfs_root_backup,
>  		   tree_root, 64);
> diff --git a/print-tree.c b/print-tree.c
> index 9d1b862..62f3163 100644
> --- a/print-tree.c
> +++ b/print-tree.c
> @@ -551,6 +551,26 @@ static void root_flags_to_str(u64 flags, char *ret)
>  		strcat(ret, "none");
>  }
>  
> +static void print_timespec(struct extent_buffer *eb,
> +		struct btrfs_timespec *timespec, const char *prefix,
> +		const char *suffix)
> +{
> +	struct tm tm;
> +	u64 tmp_u64;
> +	u32 tmp_u32;
> +	time_t tmp_time;
> +	char timestamp[256];
> +
> +	tmp_u64 = btrfs_timespec_sec(eb, timespec);
> +	tmp_u32 = btrfs_timespec_nsec(eb, timespec);
> +	tmp_time = tmp_u64;
> +	localtime_r(&tmp_time, &tm);
> +	strftime(timestamp, sizeof(timestamp),
> +			"%Y-%m-%d %H:%M:%S", &tm);
> +	printf("%s%llu.%u (%s)%s", prefix, (unsigned long long)tmp_u64, tmp_u32,
> +			timestamp, suffix);
> +}
> +
>  static void print_root_item(struct extent_buffer *leaf, int slot)
>  {
>  	struct btrfs_root_item *ri;
> @@ -600,6 +620,18 @@ static void print_root_item(struct extent_buffer *leaf, int slot)
>  				btrfs_root_stransid(&root_item),
>  				btrfs_root_rtransid(&root_item));
>  		}
> +		if (btrfs_timespec_sec(leaf, btrfs_root_ctime(ri)))
> +			print_timespec(leaf, btrfs_root_ctime(ri),
> +					"\t\tctime ", "\n");
> +		if (btrfs_timespec_sec(leaf, btrfs_root_otime(ri)))
> +			print_timespec(leaf, btrfs_root_otime(ri),
> +					"\t\totime ", "\n");
> +		if (btrfs_timespec_sec(leaf, btrfs_root_stime(ri)))
> +			print_timespec(leaf, btrfs_root_stime(ri),
> +					"\t\tstime ", "\n");
> +		if (btrfs_timespec_sec(leaf, btrfs_root_rtime(ri)))
> +			print_timespec(leaf, btrfs_root_rtime(ri),
> +					"\t\trtime ", "\n");
>  	}
>  
>  	btrfs_disk_key_to_cpu(&drop_key, &root_item.drop_progress);
> @@ -858,26 +890,6 @@ static void inode_flags_to_str(u64 flags, char *ret)
>  		strcat(ret, "none");
>  }
>  
> -static void print_timespec(struct extent_buffer *eb,
> -		struct btrfs_timespec *timespec, const char *prefix,
> -		const char *suffix)
> -{
> -	struct tm tm;
> -	u64 tmp_u64;
> -	u32 tmp_u32;
> -	time_t tmp_time;
> -	char timestamp[256];
> -
> -	tmp_u64 = btrfs_timespec_sec(eb, timespec);
> -	tmp_u32 = btrfs_timespec_nsec(eb, timespec);
> -	tmp_time = tmp_u64;
> -	localtime_r(&tmp_time, &tm);
> -	strftime(timestamp, sizeof(timestamp),
> -			"%Y-%m-%d %H:%M:%S", &tm);
> -	printf("%s%llu.%u (%s)%s", prefix, (unsigned long long)tmp_u64, tmp_u32,
> -			timestamp, suffix);
> -}
> -
>  static void print_inode_item(struct extent_buffer *eb,
>  		struct btrfs_inode_item *ii)
>  {
>
David Sterba Nov. 20, 2017, 6:09 p.m. UTC | #2
On Tue, Oct 31, 2017 at 01:58:04PM +0800, Qu Wenruo wrote:
> 
> 
> On 2017年10月31日 13:40, Misono, Tomohiro wrote:
> > Currently c/o/s/r time of ROOT_ITEM is not printed in print_root_item().
> > Fix this and print them if the values are not zero. print_timespec()
> > is moved forward to reuse.
> > 
> > Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com>
> 
> Reviewed-by: Qu Wenruo <wqu@suse.com>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/ctree.h b/ctree.h
index 2280659..54a85fd 100644
--- a/ctree.h
+++ b/ctree.h
@@ -2072,6 +2072,38 @@  BTRFS_SETGET_STACK_FUNCS(root_stransid, struct btrfs_root_item,
 BTRFS_SETGET_STACK_FUNCS(root_rtransid, struct btrfs_root_item,
 			 rtransid, 64);
 
+static inline struct btrfs_timespec *
+btrfs_root_ctime(struct btrfs_root_item *root_item)
+{
+	unsigned long ptr = (unsigned long)root_item;
+	ptr += offsetof(struct btrfs_root_item, ctime);
+	return (struct btrfs_timespec *)ptr;
+}
+
+static inline struct btrfs_timespec *
+btrfs_root_otime(struct btrfs_root_item *root_item)
+{
+	unsigned long ptr = (unsigned long)root_item;
+	ptr += offsetof(struct btrfs_root_item, otime);
+	return (struct btrfs_timespec *)ptr;
+}
+
+static inline struct btrfs_timespec *
+btrfs_root_stime(struct btrfs_root_item *root_item)
+{
+	unsigned long ptr = (unsigned long)root_item;
+	ptr += offsetof(struct btrfs_root_item, stime);
+	return (struct btrfs_timespec *)ptr;
+}
+
+static inline struct btrfs_timespec *
+btrfs_root_rtime(struct btrfs_root_item *root_item)
+{
+	unsigned long ptr = (unsigned long)root_item;
+	ptr += offsetof(struct btrfs_root_item, rtime);
+	return (struct btrfs_timespec *)ptr;
+}
+
 /* struct btrfs_root_backup */
 BTRFS_SETGET_STACK_FUNCS(backup_tree_root, struct btrfs_root_backup,
 		   tree_root, 64);
diff --git a/print-tree.c b/print-tree.c
index 9d1b862..62f3163 100644
--- a/print-tree.c
+++ b/print-tree.c
@@ -551,6 +551,26 @@  static void root_flags_to_str(u64 flags, char *ret)
 		strcat(ret, "none");
 }
 
+static void print_timespec(struct extent_buffer *eb,
+		struct btrfs_timespec *timespec, const char *prefix,
+		const char *suffix)
+{
+	struct tm tm;
+	u64 tmp_u64;
+	u32 tmp_u32;
+	time_t tmp_time;
+	char timestamp[256];
+
+	tmp_u64 = btrfs_timespec_sec(eb, timespec);
+	tmp_u32 = btrfs_timespec_nsec(eb, timespec);
+	tmp_time = tmp_u64;
+	localtime_r(&tmp_time, &tm);
+	strftime(timestamp, sizeof(timestamp),
+			"%Y-%m-%d %H:%M:%S", &tm);
+	printf("%s%llu.%u (%s)%s", prefix, (unsigned long long)tmp_u64, tmp_u32,
+			timestamp, suffix);
+}
+
 static void print_root_item(struct extent_buffer *leaf, int slot)
 {
 	struct btrfs_root_item *ri;
@@ -600,6 +620,18 @@  static void print_root_item(struct extent_buffer *leaf, int slot)
 				btrfs_root_stransid(&root_item),
 				btrfs_root_rtransid(&root_item));
 		}
+		if (btrfs_timespec_sec(leaf, btrfs_root_ctime(ri)))
+			print_timespec(leaf, btrfs_root_ctime(ri),
+					"\t\tctime ", "\n");
+		if (btrfs_timespec_sec(leaf, btrfs_root_otime(ri)))
+			print_timespec(leaf, btrfs_root_otime(ri),
+					"\t\totime ", "\n");
+		if (btrfs_timespec_sec(leaf, btrfs_root_stime(ri)))
+			print_timespec(leaf, btrfs_root_stime(ri),
+					"\t\tstime ", "\n");
+		if (btrfs_timespec_sec(leaf, btrfs_root_rtime(ri)))
+			print_timespec(leaf, btrfs_root_rtime(ri),
+					"\t\trtime ", "\n");
 	}
 
 	btrfs_disk_key_to_cpu(&drop_key, &root_item.drop_progress);
@@ -858,26 +890,6 @@  static void inode_flags_to_str(u64 flags, char *ret)
 		strcat(ret, "none");
 }
 
-static void print_timespec(struct extent_buffer *eb,
-		struct btrfs_timespec *timespec, const char *prefix,
-		const char *suffix)
-{
-	struct tm tm;
-	u64 tmp_u64;
-	u32 tmp_u32;
-	time_t tmp_time;
-	char timestamp[256];
-
-	tmp_u64 = btrfs_timespec_sec(eb, timespec);
-	tmp_u32 = btrfs_timespec_nsec(eb, timespec);
-	tmp_time = tmp_u64;
-	localtime_r(&tmp_time, &tm);
-	strftime(timestamp, sizeof(timestamp),
-			"%Y-%m-%d %H:%M:%S", &tm);
-	printf("%s%llu.%u (%s)%s", prefix, (unsigned long long)tmp_u64, tmp_u32,
-			timestamp, suffix);
-}
-
 static void print_inode_item(struct extent_buffer *eb,
 		struct btrfs_inode_item *ii)
 {