On Sunday 17 August 2014 at 22:25:07, Edward Shishkin wrote: > Great, thanks! > I'll take a look at leisure. > What is the status of this code? Did you test it? The v1 does not compile and is bogus. The v2 works for me; tested 1) in idle and 2) simultaneously with while :; do rm -rf *; git reset --hard; done on the Linux source tree on the same partition, ten times in a row. No corruptions so far, however, there has been only one testing session. I think I'll schedule a hourly fstrim to all partitions involved. -- Ivan Shapovalov / intelfx / > > Edward. > > > On 08/17/2014 06:26 PM, Ivan Shapovalov wrote: > > This patch series implements FITRIM ioctl support in reiser4. > > > > The FITRIM ioctl is supposed to be applied to any directory inside the target > > filesystem. At least, this can be deduced from `fstrim` utility behavior on > > mainstream filesystems (e. g. ext2/3/4). > > > > The idea of implementation is per Edward's advices: FITRIM handler iteratively > > grabs a portion of disk space, sequentially allocates extents within grabbed > > space and commits the resulting atom. This way we avoid starving concurrent > > processes of the disk space. This process is repeated until the partition has > > been fully scanned and processed. > > > > Points I'm really uncertain of: > > - grabbing fixed amount of space (new BA_SOME_SPACE flag, grabs 25% of disk space) > > - creation of empty atoms (reiser4_create_atom()) > > - handling of empty atoms in commit_current_atom() > > > > v2: - fix PATCH 5/7 "reiser4: txnmgr: call reiser4_post_write_back_hook() for empty atoms." > > * fix a typo > > * release atom spinlock before calling reiser4_post_write_back_hook() > > > > Ivan Shapovalov (7): > > reiser4: block_alloc: add BA_SOME_SPACE flag for grabbing a fixed amount of space. > > reiser4: block_alloc: add a "forward" parameter to reiser4_blocknr_hint to allocate blocks only in forward direction. > > reiser4: txnmgr: free allocated but unneeded atom in atom_begin_and_assign_to_txnh(). > > reiser4: txnmgr: add reiser4_create_atom() which creates an empty atom without capturing any nodes. > > reiser4: txnmgr: call reiser4_post_write_back_hook() for empty atoms. > > reiser4: batch discard support: add a dummy FITRIM ioctl handler for directories. > > reiser4: batch discard support: actually implement the FITRIM ioctl handler. > > > > fs/reiser4/block_alloc.c | 6 ++ > > fs/reiser4/block_alloc.h | 10 ++- > > fs/reiser4/plugin/dir/dir.h | 2 + > > fs/reiser4/plugin/file_ops.c | 62 ++++++++++++++++++ > > fs/reiser4/plugin/object.c | 6 +- > > fs/reiser4/plugin/space/bitmap.c | 3 +- > > fs/reiser4/super_ops.c | 131 +++++++++++++++++++++++++++++++++++++++ > > fs/reiser4/txnmgr.c | 57 +++++++++++------ > > fs/reiser4/txnmgr.h | 2 + > > 9 files changed, 255 insertions(+), 24 deletions(-) > > >
Attachment:
signature.asc
Description: This is a digitally signed message part.