From: Jason Vas Dias <jason.vas.dias@gmail.com>
To: 7eggert@gmx.de, linux-kernel@vger.kernel.org
Subject: Re: per-chroot clock module ?
Date: Mon, 29 Nov 2010 12:52:36 +0000 [thread overview]
Message-ID: <201011291252.36604.jason.vas.dias@gmail.com> (raw)
In-Reply-To: <E1PMfDt-00012L-Is@be1.7eggert.dyndns.org>
On Sunday 28 November 2010 11:15:13 you wrote:
> Jason Vas Dias <jason.vas.dias@gmail.com> wrote:
>
> > This would allow one to very easily support websites for totally different
> > timezones
>
> Timezones can be set using environment variables.
>
> man 8 tzselect
>
> example:
>
> $ date
> Sun Nov 28 12:11:39 CET 2010
> $ TZ="America/New_York" date
> Sun Nov 28 06:11:46 EST 2010
>
>
>
>
Yes, but that's not what I'm trying to do - as I said in previous mail:
"support websites for totally different timezones , where offsets need not be
restricted to legal timezone offsets but could encompass years
"
I'm not talking about legal locale timezones but of "enabling groups of processes
running in zones of completely different date / time values" without adverse filesystem
"modification time in the future" side-effects - no false modification times would be
stored on disk nor any non-zero offset added to times seen by processses running
outside of a chroot.
More precisely , the new "per_chroot_clock" module will provide :
A built-in module function:
o A very high performance "per_chroot_clock_for_root_inode()" kernel / builtin function will return any associated
real-time clock offset for the root inode of the current process or 0 if not found or the
per_chroot_clock module is not installed. There would also be an 'per_chroot_any_clocks()'
function to return >=1 if the module is installed and there are any successfully chroot-ed into root inodes with
clocks defined, 0 otherwise.
When the "per_chroot_clock" module is installed and there are any per_chroot clocks defined :
o After a successful chroot, all processes running with a root inode of that chroot directory
that issue the "clock_settime" system call will affect only the per-chroot clock offset for their root inode directory.
o A "modify file stat" / "write inode" hook is added that will remove the offset from any inode modification times
written by a process with a root device inode in the set of inodes for which "clock_for_root_inode()"
returns a non-zero value.
o A "read inode" hook is added that will add any non-zero offset returned by "clock_for_root_inode()" when
any stat() returns for a call from a process with such a root inode. Processes which issue stat() from outside
the chroot will not see any offsets in file modification times when they look at files under the chroot .
o time(), gettimofday(), clock_gettime () all get similar hooks so that if the module is installed, the root inode
number of the current process is used to lookup a clock offset to be added to the value returned , and processes
that invoke these calls from within a chroot have that value added, while those outside the chroot see no difference
to the real-time clock time.
o possibly clock_settime() and clock_gettime() could accept one single new "illegal clock" clock_t value that means
"ROOT_INODE_CLOCK" ; all processes could then inspect their per-root inode clock, regardless of whether
they have a chroot-ed root inode or not, and if there is none, the real-time clock is used.
o a /proc filesystem interface ( eg /proc/$pid/per_chroot_clock ) will read / write the per_chroot root inode clock for
the process - setting to 0 removes the offset.
I would find the above useful , and have already begun investigation & development on it -
I still don't know if anyone else would or if there is anything that does something like it out there .
All the best,
Jason
next prev parent reply other threads:[~2010-11-29 12:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fTxH4-2pP-5@gated-at.bofh.it>
[not found] ` <fTya5-30n-9@gated-at.bofh.it>
[not found] ` <fTyD7-3UB-11@gated-at.bofh.it>
2010-11-28 11:15 ` per-chroot clock module ? Bodo Eggert
2010-11-29 12:52 ` Jason Vas Dias [this message]
2010-11-27 18:21 Jason Vas Dias
2010-11-27 18:57 ` Ben Gamari
2010-11-27 19:22 ` Jason Vas Dias
2010-11-27 23:51 ` Andre Tomt
2010-11-27 19:27 ` Elias Gabriel Amaral da Silva
2010-12-03 19:36 ` Pavel Machek
2010-12-30 20:31 ` webmaster
2011-01-02 5:32 ` Pavel Machek
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=201011291252.36604.jason.vas.dias@gmail.com \
--to=jason.vas.dias@gmail.com \
--cc=7eggert@gmx.de \
--cc=linux-kernel@vger.kernel.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.