diff options
Diffstat (limited to 'libglusterfs/src')
-rw-r--r-- | libglusterfs/src/common-utils.c | 24 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.h | 6 |
2 files changed, 30 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 56edc9f4a2b..45886dae3ee 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -4425,3 +4425,27 @@ fop_enum_to_string (glusterfs_fop_t fop) return "UNKNOWNFOP"; } + +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 b7d4845b138..620468e8b09 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -820,4 +820,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 */ |