Lines Matching full:fs

69 static void print_header(struct filefrag_struct *fs)  in print_header()  argument
71 if (fs->options & VERBOSE_OPT) { in print_header()
72 fprintf(fs->f, "%4s %*s %*s %*s %*s\n", "ext", in print_header()
73 fs->logical_width, "logical", fs->physical_width, in print_header()
74 "physical", fs->physical_width, "expected", in print_header()
75 fs->logical_width, "length"); in print_header()
79 static void report_filefrag(struct filefrag_struct *fs) in report_filefrag() argument
81 if (fs->num == 0) in report_filefrag()
83 if (fs->options & VERBOSE_OPT) { in report_filefrag()
84 if (fs->expected) in report_filefrag()
85 fprintf(fs->f, "%4d %*lu %*llu %*llu %*lu\n", fs->ext, in report_filefrag()
86 fs->logical_width, in report_filefrag()
87 (unsigned long) fs->logical_start, in report_filefrag()
88 fs->physical_width, in report_filefrag()
89 (unsigned long long) fs->physical_start, in report_filefrag()
90 fs->physical_width, in report_filefrag()
91 (unsigned long long) fs->expected, in report_filefrag()
92 fs->logical_width, (unsigned long) fs->num); in report_filefrag()
94 fprintf(fs->f, "%4d %*lu %*llu %*s %*lu\n", fs->ext, in report_filefrag()
95 fs->logical_width, in report_filefrag()
96 (unsigned long) fs->logical_start, in report_filefrag()
97 fs->physical_width, in report_filefrag()
98 (unsigned long long) fs->physical_start, in report_filefrag()
99 fs->physical_width, "", in report_filefrag()
100 fs->logical_width, (unsigned long) fs->num); in report_filefrag()
102 fs->ext++; in report_filefrag()
111 struct filefrag_struct *fs = private; in filefrag_blocks_proc() local
116 if ((fs->num == 0) || (blockcnt != fs->logical_start + fs->num) || in filefrag_blocks_proc()
117 (*blocknr != fs->physical_start + fs->num)) { in filefrag_blocks_proc()
118 report_filefrag(fs); in filefrag_blocks_proc()
119 if (blockcnt == fs->logical_start + fs->num) in filefrag_blocks_proc()
120 fs->expected = fs->physical_start + fs->num; in filefrag_blocks_proc()
122 fs->expected = 0; in filefrag_blocks_proc()
123 fs->logical_start = blockcnt; in filefrag_blocks_proc()
124 fs->physical_start = *blocknr; in filefrag_blocks_proc()
125 fs->num = 1; in filefrag_blocks_proc()
126 fs->cont_ext++; in filefrag_blocks_proc()
128 fs->num++; in filefrag_blocks_proc()
133 struct filefrag_struct *fs) in filefrag() argument
138 fs->logical_width = int_log10((EXT2_I_SIZE(inode) + blocksize - 1) / in filefrag()
140 if (fs->logical_width < 7) in filefrag()
141 fs->logical_width = 7; in filefrag()
142 fs->ext = 0; in filefrag()
143 fs->cont_ext = 0; in filefrag()
144 fs->logical_start = 0; in filefrag()
145 fs->physical_start = 0; in filefrag()
146 fs->num = 0; in filefrag()
148 if (fs->options & VERBOSE_OPT) { in filefrag()
155 fprintf(fs->f, "\n%s has %llu block(s), i_size is %llu\n", in filefrag()
156 fs->name, (unsigned long long) num_blocks, in filefrag()
159 print_header(fs); in filefrag()
163 filefrag_blocks_proc, fs); in filefrag()
168 report_filefrag(fs); in filefrag()
169 fprintf(fs->f, "%s: %d contiguous extents%s\n", fs->name, fs->ext, in filefrag()
181 struct filefrag_struct *fs = private; in filefrag_dir_proc() local
199 cp = malloc(strlen(fs->dir_name) + strlen(name) + 2); in filefrag_dir_proc()
202 fs->dir_name, name); in filefrag_dir_proc()
206 sprintf(cp, "%s/%s", fs->dir_name, name); in filefrag_dir_proc()
207 fs->name = cp; in filefrag_dir_proc()
209 if (debugfs_read_inode(ino, &inode, fs->name)) in filefrag_dir_proc()
212 filefrag(ino, &inode, fs); in filefrag_dir_proc()
214 if ((fs->options & RECURSIVE_OPT) && LINUX_S_ISDIR(inode.i_mode)) { in filefrag_dir_proc()
220 fs->name); in filefrag_dir_proc()
226 if (fs->dir_last) in filefrag_dir_proc()
227 fs->dir_last->next = p; in filefrag_dir_proc()
229 fs->dir_list = p; in filefrag_dir_proc()
230 fs->dir_last = p; in filefrag_dir_proc()
235 fs->name = 0; in filefrag_dir_proc()
240 static void dir_iterate(ext2_ino_t ino, struct filefrag_struct *fs) in dir_iterate() argument
245 fs->dir_name = fs->name; in dir_iterate()
249 0, filefrag_dir_proc, fs); in dir_iterate()
254 fs->dir_list = p->next; in dir_iterate()
255 if (!fs->dir_list) in dir_iterate()
256 fs->dir_last = 0; in dir_iterate()
259 p = fs->dir_list; in dir_iterate()
263 fs->dir_name = p->name; in dir_iterate()
270 struct filefrag_struct fs; in do_filefrag() local
275 memset(&fs, 0, sizeof(fs)); in do_filefrag()
283 fs.options |= DIR_OPT; in do_filefrag()
286 fs.options |= VERBOSE_OPT; in do_filefrag()
289 fs.options |= RECURSIVE_OPT; in do_filefrag()
304 fs.name = "."; in do_filefrag()
307 fs.name = argv[optind]; in do_filefrag()
315 fs.f = open_pager(); in do_filefrag()
316 fs.physical_width = int_log10(ext2fs_blocks_count(current_fs->super)); in do_filefrag()
317 fs.physical_width++; in do_filefrag()
318 if (fs.physical_width < 8) in do_filefrag()
319 fs.physical_width = 8; in do_filefrag()
321 if (!LINUX_S_ISDIR(inode.i_mode) || (fs.options & DIR_OPT)) in do_filefrag()
322 filefrag(ino, &inode, &fs); in do_filefrag()
324 dir_iterate(ino, &fs); in do_filefrag()
326 fprintf(fs.f, "\n"); in do_filefrag()
327 close_pager(fs.f); in do_filefrag()