projects
/
platform
/
upstream
/
btrfs-progs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
btrfs-progs: tests: don't use fallocate in mkfs/014-rootdir-inline-extent
[platform/upstream/btrfs-progs.git]
/
cmds-fi-du.c
diff --git
a/cmds-fi-du.c
b/cmds-fi-du.c
index
895c242
..
8a44665
100644
(file)
--- a/
cmds-fi-du.c
+++ b/
cmds-fi-du.c
@@
-40,6
+40,8
@@
#include "rbtree.h"
#include "interval_tree_generic.h"
#include "rbtree.h"
#include "interval_tree_generic.h"
+#include "help.h"
+#include "fsfeatures.h"
static int summarize = 0;
static unsigned unit_mode = UNITS_RAW;
static int summarize = 0;
static unsigned unit_mode = UNITS_RAW;
@@
-116,7
+118,7
@@
static void cleanup_shared_extents(struct rb_root *root)
}
}
}
}
-#define dprintf(...)
+#define d
bg
printf(...)
/*
* Find all extents which overlap 'n', calculate the space
/*
* Find all extents which overlap 'n', calculate the space
@@
-128,7
+130,7
@@
static u64 count_unique_bytes(struct rb_root *root, struct shared_extent *n)
u64 wstart = n->start;
u64 wlast = n->last;
u64 wstart = n->start;
u64 wlast = n->last;
- dprintf("Count overlaps:");
+ d
bg
printf("Count overlaps:");
do {
/*
do {
/*
@@
-141,7
+143,7
@@
static u64 count_unique_bytes(struct rb_root *root, struct shared_extent *n)
if (wlast < n->last)
wlast = n->last;
if (wlast < n->last)
wlast = n->last;
- dprintf(" (%llu, %llu)", n->start, n->last);
+ d
bg
printf(" (%llu, %llu)", n->start, n->last);
tmp = n;
n = extent_tree_iter_next(n, wstart, wlast);
tmp = n;
n = extent_tree_iter_next(n, wstart, wlast);
@@
-150,7
+152,7
@@
static u64 count_unique_bytes(struct rb_root *root, struct shared_extent *n)
free(tmp);
} while (n);
free(tmp);
} while (n);
- dprintf("; wstart: %llu wlast: %llu total: %llu\n", wstart,
+ d
bg
printf("; wstart: %llu wlast: %llu total: %llu\n", wstart,
wlast, wlast - wstart + 1);
return wlast - wstart + 1;
wlast, wlast - wstart + 1);
return wlast - wstart + 1;
@@
-401,6
+403,7
@@
static int du_walk_dir(struct du_dir_ctxt *ctxt, struct rb_root *shared_extents)
shared_extents, &tot, &shr,
0);
if (ret == -ENOTTY) {
shared_extents, &tot, &shr,
0);
if (ret == -ENOTTY) {
+ ret = 0;
continue;
} else if (ret) {
fprintf(stderr,
continue;
} else if (ret) {
fprintf(stderr,
@@
-430,7
+433,6
@@
static int du_add_file(const char *filename, int dirfd,
u64 file_total = 0;
u64 file_shared = 0;
u64 dir_set_shared = 0;
u64 file_total = 0;
u64 file_shared = 0;
u64 dir_set_shared = 0;
- u64 subvol;
int fd;
DIR *dirstream = NULL;
int fd;
DIR *dirstream = NULL;
@@
-459,16
+461,24
@@
static int du_add_file(const char *filename, int dirfd,
goto out;
}
goto out;
}
- ret = lookup_ino_rootid(fd, &subvol);
- if (ret)
- goto out_close;
+ /*
+ * If st.st_ino == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID ==2, there is no any
+ * related tree
+ */
+ if (st.st_ino != BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) {
+ u64 subvol;
- if (inode_seen(st.st_ino, subvol))
- goto out_close;
+ ret = lookup_path_rootid(fd, &subvol);
+ if (ret)
+ goto out_close;
- ret = mark_inode_seen(st.st_ino, subvol);
- if (ret)
- goto out_close;
+ if (inode_seen(st.st_ino, subvol))
+ goto out_close;
+
+ ret = mark_inode_seen(st.st_ino, subvol);
+ if (ret)
+ goto out_close;
+ }
if (S_ISREG(st.st_mode)) {
ret = du_calc_file_space(fd, shared_extents, &file_total,
if (S_ISREG(st.st_mode)) {
ret = du_calc_file_space(fd, shared_extents, &file_total,