On Monday 20 October 2014 at 00:04:39, Edward Shishkin wrote: > > On 08/17/2014 11:52 PM, Ivan Shapovalov wrote: > > This is used for FITRIM ioctl which will iteratively grab, allocate and trim disk space > > bit by bit to avoid starving the rest of system. > > > > Signed-off-by: Ivan Shapovalov <intelfx100@xxxxxxxxx> > > --- > > fs/reiser4/block_alloc.c | 5 +++++ > > fs/reiser4/block_alloc.h | 5 ++++- > > 2 files changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/fs/reiser4/block_alloc.c b/fs/reiser4/block_alloc.c > > index d3d730c..9eed7fc 100644 > > --- a/fs/reiser4/block_alloc.c > > +++ b/fs/reiser4/block_alloc.c > > @@ -276,6 +276,11 @@ reiser4_grab(reiser4_context * ctx, __u64 count, reiser4_ba_flags_t flags) > > > > free_blocks = sbinfo->blocks_free; > > > > + if (flags & BA_SOME_SPACE) { > > + /* Reserve 25% of all free space. */ > > if (free_blocks == 0) { > /* nothing to trim */ > ret= RETERR(-ENOSPC); > goto unlock_and_ret; > } Makes sense, but IMO without returning error. TRIM'ing a completely full filesystem is a no-op (== all blocks busy, nothing to trim), not a failure. > > > + count = free_blocks >> 2; > > if (count == 0) > /* there are 1, 2, or 3 free blocks */ > count = free_blocks; Done. Thanks, -- Ivan Shapovalov / intelfx /
Attachment:
signature.asc
Description: This is a digitally signed message part.