]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
fallocate: avoid unnecessary computation
authorSami Kerola <kerolasa@iki.fi>
Wed, 16 Jul 2014 20:54:57 +0000 (21:54 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 17 Jul 2014 12:01:00 +0000 (14:01 +0200)
Where POSIX_FADV_SEQUENTIAL and HAVE_POSIX_FADVISE are not available it
is waste of resources to have variables that are meaningful only for
posix_fadvise().  Also initialize the variables immediately to correct
values, and since cachesz is never changed mark it read only.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
sys-utils/fallocate.c

index 93fd3b48e2508c2624ae6b0d37a4bbb45671149b..c619f64ccec2dfa957abdf114ef27bf1de58824e 100644 (file)
@@ -174,17 +174,12 @@ static void dig_holes(int fd, off_t off, off_t len)
 {
        off_t end = len ? off + len : 0;
        off_t hole_start = 0, hole_sz = 0;
-       off_t cache_start = 0;
        uintmax_t ct = 0;
-       size_t bufsz, cachesz;
+       size_t  bufsz;
        char *buf;
        struct stat st;
-
-       if (fstat(fd, &st) != 0)
-               err(EXIT_FAILURE, _("stat failed %s"), filename);
-
-       bufsz = st.st_blksize;
-
+#if defined(POSIX_FADV_SEQUENTIAL) && defined(HAVE_POSIX_FADVISE)
+       off_t cache_start = off;
        /*
         * We don't want to call POSIX_FADV_DONTNEED to discard cached
         * data in PAGE_SIZE steps. IMHO it's overkill (too many syscalls).
@@ -193,15 +188,19 @@ static void dig_holes(int fd, off_t off, off_t len)
         * a good compromise.
         *                                          -- kzak Feb-2014
         */
-       cachesz = getpagesize() * 256;
+       const size_t cachesz = getpagesize() * 256;
+#endif
+
+       if (fstat(fd, &st) != 0)
+               err(EXIT_FAILURE, _("stat failed %s"), filename);
+
+       bufsz = st.st_blksize;
 
        if (lseek(fd, off, SEEK_SET) < 0)
                err(EXIT_FAILURE, _("seek on %s failed"), filename);
 
        /* buffer + extra space for is_nul() sentinel */
        buf = xmalloc(bufsz + sizeof(uintptr_t));
-       cache_start = off;
-
 #if defined(POSIX_FADV_SEQUENTIAL) && defined(HAVE_POSIX_FADVISE)
        posix_fadvise(fd, off, 0, POSIX_FADV_SEQUENTIAL);
 #endif