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

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

 




On 08/16/2014 07:05 PM, Ivan Shapovalov wrote:
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?


Everything is OK with the number of iterations.
I misunderstood your design in the first reading..

Thanks,
Edward.
--
To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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