]> www.infradead.org Git - mtd-utils.git/commitdiff
fs-tests: integck: teach link_new to return error on creation failure
authorArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Mon, 18 Apr 2011 10:41:38 +0000 (13:41 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Fri, 22 Apr 2011 11:29:52 +0000 (14:29 +0300)
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
tests/fs-tests/integrity/integck.c

index fbf24fb704072c20197d82576627dbb70cdc7cfd..14d112f31bdd0e4260ea33765d0358f428f54461 100644 (file)
@@ -542,8 +542,8 @@ static int file_new(struct dir_info *parent, const char *name)
        return 0;
 }
 
-static void link_new(struct dir_info *parent, const char *name,
-                    struct file_info *file)
+static int link_new(struct dir_info *parent, const char *name,
+                   struct file_info *file)
 {
        struct dir_entry_info *entry;
        char *path, *target;
@@ -551,21 +551,26 @@ static void link_new(struct dir_info *parent, const char *name,
 
        entry = file->links;
        if (!entry)
-               return;
+               return 0;
+
        path = dir_path(parent, name);
        target = dir_path(entry->parent, entry->name);
        ret = link(target, path);
        if (ret != 0) {
-               CHECK(errno == ENOSPC);
+               if (errno == ENOSPC) {
+                       ret = 0;
+                       full = 1;
+               } else
+                       pcv("cannot create hardlink %s in directory %s to file %s",
+                           path, parent->name, target);
                free(target);
                free(path);
-               full = 1;
-               return;
+               return ret;
        }
        free(target);
        free(path);
-
        add_dir_entry(parent, 'f', name, file);
+       return 0;
 }
 
 static void file_close(struct fd_info *fdi);
@@ -1952,7 +1957,7 @@ static int operate_on_dir(struct dir_info *dir)
                return dir_new(dir, make_name(dir));
        else if (r == 2 && grow && (file = pick_file()) != NULL)
                /* When growing, 1 time in 14 create a hard link */
-               link_new(dir, make_name(dir), file);
+               return link_new(dir, make_name(dir), file);
        else if (r == 3 && grow && random_no(5) == 0)
                /* When growing, 1 time in 70 create a symbolic link */
                return symlink_new(dir, make_name(dir));