All of lore.kernel.org
 help / color / mirror / Atom feed
From: Evert Mouw <post-yfx6isLFVcpeoWH0uzbU5w@public.gmane.org>
To: linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Ryusuke Konishi
	<konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
Subject: Re: time-shifting
Date: Mon, 08 Aug 2011 00:17:58 +0200	[thread overview]
Message-ID: <4E3F0F16.7020200@evert.net> (raw)
In-Reply-To: <20110807.231959.212685724.ryusuke-sG5X7nlA6pw@public.gmane.org>

Hi,

Op 2011-08-07 16:19, Ryusuke Konishi schreef:
> At present, nilfs does not have such per-file pointer to past
> versions, so actually it's not optimal for file history lookups.
>
> We may be able to do indirectly by adding a new field to on-disk inode
> to keep a checkpoint number in which the inode lastly changed.
> However, the new field must be updated every time garbage collector
> thins out the previous version, -- this may complicate things
> unacceptably because the current nilfs is designed so that it never
> overwrites in-use blocks except super blocks.
Very interesting, thanks for your explanation. I agree that updating 
such a field to a previous checkpoint should not be overwritten. A 
solution would be to not update the field when the garbage collector 
runs. The result is that a pointer to a previous checkpoint could point 
to a non-existing checkpoint. That should not be a problem, because it 
is known which checkpoints do exist, so a simple "if ( ( 
previous-checkpoint == X ) and ( X not element of available checkpoints 
) ) then previous-checkpoint = NULL" would do. That would enable easier 
checks for previous versions, although if there is some chechpoint 
series like "1 2 3 4" and some file exists in all four of those, and if 
you remove checkpoint 2, then this system will never find the oldest 
version in checkpoint 1. But such a scenario is unlikely because the 
garbage collector removes the oldest checkpoints first. Also, this 
solution doesn't need to be perfect to be better than nothing at all.

Just my 2 cents, for I don't have any filesystem development experience.

Regards, Evert

--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2011-08-07 22:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-06  7:38 time-shifting Evert Mouw
     [not found] ` <4E3CEF72.1070303-yfx6isLFVcpeoWH0uzbU5w@public.gmane.org>
2011-08-07 14:19   ` time-shifting Ryusuke Konishi
     [not found]     ` <20110807.231959.212685724.ryusuke-sG5X7nlA6pw@public.gmane.org>
2011-08-07 22:17       ` Evert Mouw [this message]
     [not found]         ` <4E3F0F16.7020200-yfx6isLFVcpeoWH0uzbU5w@public.gmane.org>
2011-08-08 12:28           ` time-shifting Ryusuke Konishi
     [not found]             ` <20110808.212859.255403671.ryusuke-sG5X7nlA6pw@public.gmane.org>
2011-08-08 14:02               ` time-shifting Evert Mouw

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E3F0F16.7020200@evert.net \
    --to=post-yfx6islfvcpeowh0uzbu5w@public.gmane.org \
    --cc=konishi.ryusuke-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org \
    --cc=linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.