On 2014-01-23 18:49, Vyacheslav Dubeyko wrote: > > On Jan 21, 2014, at 4:59 PM, Andreas Rohner wrote: > > [snip] >> diff --git a/lib/gc.c b/lib/gc.c >> index 0b0e2d6..ebbe0ca 100644 >> --- a/lib/gc.c >> +++ b/lib/gc.c >> @@ -29,6 +29,10 @@ >> #include <syslog.h> >> #endif /* HAVE_SYSLOG_H */ >> >> +#if HAVE_SYS_TIME_H >> +#include <sys/time.h> >> +#endif /* HAVE_SYS_TIME */ >> + >> #include <errno.h> >> #include <assert.h> >> #include <stdarg.h> >> @@ -615,7 +619,10 @@ ssize_t nilfs_reclaim_segment(struct nilfs *nilfs, >> { >> struct nilfs_vector *vdescv, *bdescv, *periodv, *vblocknrv; >> sigset_t sigset, oldset, waitset; >> - ssize_t n, ret = -1; >> + ssize_t n, i, ret = -1; >> + __u32 freeblocks; >> + struct nilfs_suinfo_update *supv; >> + struct timeval tv; >> >> if (nsegs == 0) >> return 0; >> @@ -678,6 +685,41 @@ ssize_t nilfs_reclaim_segment(struct nilfs *nilfs, >> goto out_lock; >> } >> >> + freeblocks = (nilfs_get_blocks_per_segment(nilfs) * n) >> + - (nilfs_vector_get_size(vdescv) >> + + nilfs_vector_get_size(bdescv)); >> + >> + /* if there are less free blocks than the >> + * minimal threshold try to update suinfo >> + * instead of cleaning */ >> + if (freeblocks < minblocks * n) { >> + ret = gettimeofday(&tv, NULL); >> + if (ret < 0) >> + goto out_lock; >> + >> + supv = malloc(sizeof(struct nilfs_suinfo_update) * n); > > Is it enough to allocate memory without zeroing? I use the flags to indicate, which parts of the structure are valid. I don't need to zero everything. > Do you free allocated memory in the case of error? Yes I immediately free it before I check the return value. Could you please read the code a bit more carefully, before you ask such questions? br, Andreas Rohner -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html