f6493483ff
Resolves: #1024095 Version: 1.27-2
23 lines
881 B
Diff
23 lines
881 B
Diff
diff --git a/lib/system.h b/lib/system.h
|
|
index ef46267..e7f531c 100644
|
|
--- a/lib/system.h
|
|
+++ b/lib/system.h
|
|
@@ -389,9 +389,16 @@ extern int errno;
|
|
# define ST_NBLOCKSIZE 512
|
|
#endif
|
|
|
|
+/* Network Appliance file systems store small files directly in the
|
|
+ inode if st_size <= 64; in this case the number of blocks can be
|
|
+ zero. Perhaps other file systems have similar problems; so,
|
|
+ somewhat arbitrarily, do not consider a file to be sparse if
|
|
+ it has no blocks but st_size < ST_NBLOCKSIZE. */
|
|
#define ST_IS_SPARSE(st) \
|
|
(ST_NBLOCKS (st) \
|
|
- < ((st).st_size / ST_NBLOCKSIZE + ((st).st_size % ST_NBLOCKSIZE != 0)))
|
|
+ < ((st).st_size / ST_NBLOCKSIZE \
|
|
+ + ((st).st_size % ST_NBLOCKSIZE != 0 \
|
|
+ && (st).st_size / ST_NBLOCKSIZE != 0)))
|
|
|
|
/* Declare standard functions. */
|
|
|