Re: reiser4: FITRIM ioctl -- how to grab the space?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Saturday 16 August 2014 at 15:35:42, Edward Shishkin wrote:	
> 
> On 08/16/2014 01:27 PM, Ivan Shapovalov wrote:
> > On Saturday 16 August 2014 at 10:23:08, Edward Shishkin wrote:	
> >> [...]
> >>>> So I need to find a way to take rwsem in a read-biased mode... Any
> >>>> advice is
> >>>> accepted, including "give up with adding of yet another lock and go with
> >>>> multiple transactions" :)
> >>>
> >>> IMHO this is too complicated.
> >>>
> >>> Why don't you want to grab, say, 20M per iteration?
> >>> It should work without any problems, just maintain a
> >>> counter of blocks allocated in the iteration..
> > I see it mostly like a "good to have" thing.
> 
> 
> Nop, we discuss the reasonable implementation of the "must have" -
> space reservation by the fitrim process..
> 
> 
> >   When the system is under load,
> > FITRIM implemented in this "simple" way will be ineffective: it will miss
> > some blocks that are temporarily allocated (journal, etc.)
> 
> 
> It will be perfectly discarded by the realtime discard
> 
> 
> >   even though it is
> > theoretically possible to stop accepting new transactions, commit all existing
> > ones and perform discard while the system is artificially made idle, then
> > resume everything.
> 
> 
> IMHO complicated and not need.
> Anyway, missing 2 blocks per device is not critical.

OK. Giving up then. Let's go the multiple transaction approach.

> 
> 
> >
> > So I've been trying to check if this is feasible. Looks like it isn't.
> >
> >> add the counter to the struct reiser4_context and
> >> set it to zero at the beginning of every iteration.
> >> use get_current_context() to access the counter.
> > Is it needed? The simple way is just a loop consisting of
> > - grab space
> > - allocate blocks forward from start position (initially 0) until end of
> >    partition or limit reached
> > - update start position to `last allocated block + 1`
> > - put allocated space to the delete set
> > - mark for force-committing
> > - reiser4_txn_restart_current()
> > - if we've reached end of partition earlier, break, otherwise loop
> >
> 
> 
> Ok, it will also work (with more iterations, though),
> well, let's do so..

More iterations? It seems like I don't really understand your idea
with the counter.
Could you please elaborate a bit?

Thanks,
-- 
Ivan Shapovalov / intelfx /

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux