]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blobdiff - e2fsck/iscan.c
e2fsck: mark device inodes with EXT4_EXTENTS_FL bad
[thirdparty/e2fsprogs.git] / e2fsck / iscan.c
index 16fb59115d6ffdbce6dea0684671037ff03c895a..52cad11e341095665db586f5861abb0c0d153a8c 100644 (file)
@@ -3,6 +3,7 @@
  * anything else)
  */
 
+#include "config.h"
 #include <string.h>
 #include <fcntl.h>
 #include <ctype.h>
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
-#ifdef HAVE_MNTENT_H
-#include <mntent.h>
-#endif
 #include <sys/ioctl.h>
+#ifdef HAVE_MALLOC_H
 #include <malloc.h>
+#endif
 
 #include "et/com_err.h"
 #include "e2fsck.h"
@@ -38,7 +38,7 @@ int invalid_bitmaps = 0;
 
 struct resource_track  global_rtrack;
 
-static void usage(NOARGS)
+static void usage(void)
 {
        fprintf(stderr,
                _("Usage: %s [-F] [-I inode_buffer_blocks] device\n"),
@@ -49,26 +49,22 @@ static void usage(NOARGS)
 static void PRS(int argc, char *argv[])
 {
        int             flush = 0;
-       char            c;
+       int             c;
 #ifdef MTRACE
        extern void     *mallwatch;
 #endif
+       errcode_t       retval;
 
        setbuf(stdout, NULL);
        setbuf(stderr, NULL);
        initialize_ext2_error_table();
-       
+
        if (argc && *argv)
                program_name = *argv;
        while ((c = getopt (argc, argv, "FI")) != EOF)
                switch (c) {
                case 'F':
-#ifdef BLKFLSBUF
                        flush = 1;
-#else
-                       fprintf(stderr, _("-F not supported"));
-                       exit(1);
-#endif
                        break;
                case 'I':
                        inode_buffer_blocks = atoi(optarg);
@@ -78,7 +74,6 @@ static void PRS(int argc, char *argv[])
                }
        device_name = argv[optind];
        if (flush) {
-#ifdef BLKFLSBUF
                int     fd = open(device_name, O_RDONLY, 0);
 
                if (fd < 0) {
@@ -86,29 +81,25 @@ static void PRS(int argc, char *argv[])
                            _("while opening %s for flushing"), device_name);
                        exit(FSCK_ERROR);
                }
-               if (ioctl(fd, BLKFLSBUF, 0) < 0) {
-                       com_err("BLKFLSBUF", errno,
+               if ((retval = ext2fs_sync_device(fd, 1))) {
+                       com_err("ext2fs_sync_device", retval,
                                _("while trying to flush %s"), device_name);
                        exit(FSCK_ERROR);
                }
                close(fd);
-#else
-               fprintf(stderr, _("BLKFLSBUF not supported"));
-               exit(1);
-#endif /* BLKFLSBUF */
        }
 }
-                                       
+
 int main (int argc, char *argv[])
 {
        errcode_t       retval = 0;
        int             exit_value = FSCK_OK;
        ext2_filsys     fs;
-       ino_t   ino;
-       int     num_inodes = 0;
+       ext2_ino_t      ino;
+       __u32   num_inodes = 0;
        struct ext2_inode inode;
        ext2_inode_scan scan;
-       
+
        init_resource_track(&global_rtrack);
 
        PRS(argc, argv);
@@ -116,13 +107,13 @@ int main (int argc, char *argv[])
        retval = ext2fs_open(device_name, 0,
                             0, 0, unix_io_manager, &fs);
        if (retval) {
-               com_err(program_name, retval, _("while trying to open %s"),
+               com_err(program_name, retval, _("while trying to open '%s'"),
                        device_name);
                exit(1);
        }
 
        ehandler_init(fs->io);
-       
+
        retval = ext2fs_open_inode_scan(fs, inode_buffer_blocks, &scan);
        if (retval) {
                com_err(program_name, retval, _("while opening inode scan"));
@@ -140,9 +131,9 @@ int main (int argc, char *argv[])
                        break;
                num_inodes++;
        }
-       
+
        print_resource_track(NULL, &global_rtrack);
-       printf(_("%d inodes scanned.\n"), num_inodes);
-       
+       printf(_("%u inodes scanned.\n"), num_inodes);
+
        exit(0);
 }