diff options
Diffstat (limited to 'libglusterfs')
-rw-r--r-- | libglusterfs/src/common-utils.c | 23 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.h | 6 |
2 files changed, 29 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 40d9b637b7a..337d5ed00fc 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -4076,3 +4076,26 @@ list_node_del (struct list_node *node) GF_FREE (node); } +gf_boolean_t +gf_is_zero_filled_stat (struct iatt *buf) +{ + if (!buf) + return 1; + + /* Do not use st_dev because it is transformed to store the xlator id + * in place of the device number. Do not use st_ino because by this time + * we've already mapped the root ino to 1 so it is not guaranteed to be + * 0. + */ + if ((buf->ia_nlink == 0) && (buf->ia_ctime == 0)) + return 1; + + return 0; +} + +void +gf_zero_fill_stat (struct iatt *buf) +{ + buf->ia_nlink = 0; + buf->ia_ctime = 0; +} diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index ca9ce78c845..bfcc480293a 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -790,4 +790,10 @@ gf_nwrite (int fd, const void *buf, size_t count); void _mask_cancellation (void); void _unmask_cancellation (void); +gf_boolean_t +gf_is_zero_filled_stat (struct iatt *buf); + +void +gf_zero_fill_stat (struct iatt *buf); + #endif /* _COMMON_UTILS_H */ |