diff options
Diffstat (limited to 'tests/fs-tests/integrity')
| -rw-r--r-- | tests/fs-tests/integrity/integck.c | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c index fbf24fb..14d112f 100644 --- a/tests/fs-tests/integrity/integck.c +++ b/tests/fs-tests/integrity/integck.c @@ -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)); | 
