extent-scan: adjust naming and formatting
authorJim Meyering <meyering@redhat.com>
Mon, 11 Oct 2010 09:19:02 +0000 (11:19 +0200)
committerJim Meyering <meyering@redhat.com>
Sun, 30 Jan 2011 19:44:11 +0000 (20:44 +0100)
* src/extent-scan.h [struct extent_scan]: Rename member:
s/hit_last_extent/hit_final_extent/.  "final" is clearer,
since "last" can be interpreted as "preceding".
Rename extent-scan functions to start with extent_scan_.
* src/Makefile.am (copy_sources): Also distribute extent-scan.h.
* src/extent-scan.c: Don't include error.h or quote.h.  Neither is used.
* src/copy.c: shorten a comment to fit in 80 columns
* src/extent-scan.c, src/extent-scan.h: Correct formatting.

src/Makefile.am
src/copy.c
src/extent-scan.c
src/extent-scan.h

index 9fd7822..bf1d60a 100644 (file)
@@ -450,7 +450,7 @@ uninstall-local:
          fi; \
        fi
 
-copy_sources = copy.c cp-hash.c extent-scan.c
+copy_sources = copy.c cp-hash.c extent-scan.c extent-scan.h
 
 # Use `ginstall' in the definition of PROGRAMS and in dependencies to avoid
 # confusion with the `install' target.  The install rule transforms `ginstall'
index 902c6bb..270009b 100644 (file)
@@ -204,19 +204,18 @@ extent_copy (int src_fd, int dest_fd, size_t buf_size,
   uint64_t last_ext_len = 0;
   uint64_t last_read_size = 0;
 
-  open_extent_scan (src_fd, &scan);
+  extent_scan_init (src_fd, &scan);
 
   do
     {
-      bool ok = get_extents_info (&scan);
+      bool ok = extent_scan_read (&scan);
       if (! ok)
         {
-          if (scan.hit_last_extent)
+          if (scan.hit_final_extent)
             break;
 
           if (scan.initial_scan_failed)
             {
-              close_extent_scan (&scan);
               *require_normal_copy = true;
               return false;
             }
@@ -288,7 +287,7 @@ extent_copy (int src_fd, int dest_fd, size_t buf_size,
 
               if (n_read == 0)
                 {
-                  /* Figure out how many bytes read from the previous extent.  */
+                  /* Record number of bytes read from the previous extent.  */
                   last_read_size = last_ext_len - ext_len;
                   break;
                 }
@@ -304,11 +303,10 @@ extent_copy (int src_fd, int dest_fd, size_t buf_size,
         }
 
       /* Release the space allocated to scan->ext_info.  */
-      free_extents_info (&scan);
-    } while (! scan.hit_last_extent);
+      extent_scan_free (&scan);
 
-  /* Do nothing now.  */
-  close_extent_scan (&scan);
+    }
+  while (! scan.hit_final_extent);
 
   /* If a file ends up with holes, the sum of the last extent logical offset
      and the read-returned size or the last extent length will be shorter than
index f371b87..3bb0d53 100644 (file)
 
 #include "system.h"
 #include "extent-scan.h"
-#include "error.h"
-#include "quote.h"
 
 #ifndef HAVE_FIEMAP
 # include "fiemap.h"
 #endif
 
 /* Allocate space for struct extent_scan, initialize the entries if
-   necessary and return it as the input argument of get_extents_info().  */
+   necessary and return it as the input argument of extent_scan_read().  */
 extern void
-open_extent_scan (int src_fd, struct extent_scan *scan)
+extent_scan_init (int src_fd, struct extent_scan *scan)
 {
   scan->fd = src_fd;
   scan->ei_count = 0;
   scan->scan_start = 0;
   scan->initial_scan_failed = false;
-  scan->hit_last_extent = false;
+  scan->hit_final_extent = false;
 }
 
 #ifdef __linux__
@@ -50,14 +48,13 @@ open_extent_scan (int src_fd, struct extent_scan *scan)
 /* Call ioctl(2) with FS_IOC_FIEMAP (available in linux 2.6.27) to
    obtain a map of file extents excluding holes.  */
 extern bool
-get_extents_info (struct extent_scan *scan)
+extent_scan_read (struct extent_scan *scan)
 {
   union { struct fiemap f; char c[4096]; } fiemap_buf;
   struct fiemap *fiemap = &fiemap_buf.f;
   struct fiemap_extent *fm_extents = &fiemap->fm_extents[0];
   enum { count = (sizeof fiemap_buf - sizeof *fiemap) / sizeof *fm_extents };
   verify (count != 0);
-  unsigned int i;
 
   /* This is required at least to initialize fiemap->fm_start,
      but also serves (in mid 2010) to appease valgrind, which
@@ -81,13 +78,14 @@ get_extents_info (struct extent_scan *scan)
   /* If 0 extents are returned, then more get_extent_table() are not needed.  */
   if (fiemap->fm_mapped_extents == 0)
     {
-      scan->hit_last_extent = true;
+      scan->hit_final_extent = true;
       return false;
     }
 
   scan->ei_count = fiemap->fm_mapped_extents;
   scan->ext_info = xnmalloc (scan->ei_count, sizeof (struct extent_info));
 
+  unsigned int i;
   for (i = 0; i < scan->ei_count; i++)
     {
       assert (fm_extents[i].fe_logical <= OFF_T_MAX);
@@ -100,7 +98,7 @@ get_extents_info (struct extent_scan *scan)
   i--;
   if (scan->ext_info[i].ext_flags & FIEMAP_EXTENT_LAST)
     {
-      scan->hit_last_extent = true;
+      scan->hit_final_extent = true;
       return true;
     }
 
@@ -109,5 +107,10 @@ get_extents_info (struct extent_scan *scan)
   return true;
 }
 #else
-extern bool get_extents_info (ignored) { errno = ENOTSUP; return false; }
+extern bool
+extent_scan_read (struct extent_scan *scan ATTRIBUTE_UNUSED)
+{
+  errno = ENOTSUP;
+  return false;
+}
 #endif
index 07c2e5b..ac9e500 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef EXTENT_SCAN_H
 # define EXTENT_SCAN_H
 
-/* Structure used to reserve information of each extent.  */
+/* Structure used to store information of each extent.  */
 struct extent_info
 {
   /* Logical offset of an extent.  */
@@ -44,25 +44,25 @@ struct extent_scan
   /* How many extent info returned for a scan.  */
   uint32_t ei_count;
 
-  /* If true, fall back to a normal copy, either
-     set by the failure of ioctl(2) for FIEMAP or
-     lseek(2) with SEEK_DATA.  */
+  /* If true, fall back to a normal copy, either set by the
+     failure of ioctl(2) for FIEMAP or lseek(2) with SEEK_DATA.  */
   bool initial_scan_failed;
 
-  /* If ture, the total extent scan per file has been finished.  */
-  bool hit_last_extent;
+  /* If true, the total extent scan per file has been finished.  */
+  bool hit_final_extent;
 
-  /* Extent information.  */
+  /* Extent information: a malloc'd array of ei_count structs.  */
   struct extent_info *ext_info;
 };
 
-void
-open_extent_scan (int src_fd, struct extent_scan *scan);
+void extent_scan_init (int src_fd, struct extent_scan *scan);
 
-bool
-get_extents_info (struct extent_scan *scan);
+bool extent_scan_read (struct extent_scan *scan);
 
-#define free_extents_info(ext_scan) free ((ext_scan)->ext_info)
-#define close_extent_scan(ext_scan) /* empty */
+static inline void
+extent_scan_free (struct extent_scan *scan)
+{
+  free (scan->ext_info);
+}
 
 #endif /* EXTENT_SCAN_H */