From: "Thomas Schöbel-Theuer" <tst@1und1.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Thomas Schoebel-Theuer <tst@schoebel-theuer.de>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 49/50] mars: generic pre-patch for mars
Date: Wed, 02 Jul 2014 18:20:20 +0200 [thread overview]
Message-ID: <53B43144.6010306@1und1.de> (raw)
In-Reply-To: <20140702145024.GA19425@infradead.org>
> Most likely you shouldn't do either. A block driver really should not
> be removing directories from the filesystem namespace.
Please take into account that MARS Light is not just a "device driver",
but a long-distance distributed system dealing with huge masses of state
information.
The /mars/ filesystem (which is a reserved directory) is a means for
storage of transaction logfiles. This has one big advantage: it is a
_shared_ storage space for _multiple_ resources.
The current setup at 1&1 datacenters is dealing with at least 7
resources in parallel; the number is likely to grow in future.
IMHO, replacing the /mars/ filesystem by block device storage would
likely mean to have a rather static ring-buffer like structure for
_each_ of multiple resources.
When taking your argument (which I can understand) to the extreme, I
would not even be allowed to use files as a dynamic storage for
transaction logfiles at all.
In essence, I fear that such a requirement would mean to re-implement
the core functionality of a classical filesystem, namely (a) creating
multiple instances of _dynamic_ storage (aka files) out of a single
static storage (aka block device), and (b) synchronizing parallel access
to that. My idea was to re-use that functionality already implemented by
filesystems, where fundamental problems such as fragmentation are
already solved.
There is a second reason for using a filesystem:
As explained in slide 10 of the LinuxTag presentation, the symlink tree
residing in /mars/ is also used for storage and propagation of metadata
information.
Unfortunately, the slides don't contain my oral explanations (both at
LCA2014 and LinuxTag2014) about the symlink tree. It is used for three
purposes at the same time:
1) as a _persistent_ key->value store.
2) as the _only_ means of high-level metadata communication in the
long-distance cluster.
3) as interface between userspace and kernelspace (no longer any binary
interfaces).
IMHO, if I had to avoid filesystem operations at least regarding
symlinks, the complete MARS Light design would have to be redesigend /
re-implemented in a very different way, essentially a completely
different implementation, essentially forcing me to throw away the
effort of years.
Notice that MARS Full is planned to abstract away from concrete storage
formats such as filesystems, so your objective could probably be met in
future (if it will have some advantages).
Please permit me to use /mars/ for MARS Light as a reserved space where
not only transaction logfiles for multiple resources are residing, but
also the symlink tree is allowed to reside.
Cheers,
Thomas
next prev parent reply other threads:[~2014-07-02 16:20 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 21:46 Please review: generic brick framework + first application: asynchronous block device replication Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 01/50] mars: add new file include/linux/brick/lamport.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 02/50] mars: add new file drivers/block/mars/lamport.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 03/50] mars: add new file include/linux/brick/brick_say.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 04/50] mars: add new file drivers/block/mars/brick_say.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 05/50] mars: add new file include/linux/brick/brick_mem.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 06/50] mars: add new file drivers/block/mars/brick_mem.c Thomas Schoebel-Theuer
2014-07-03 15:01 ` Michal Marek
2014-07-01 21:46 ` [PATCH 07/50] mars: add new file include/linux/brick/brick_checking.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 08/50] mars: add new file include/linux/brick/meta.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 09/50] mars: add new file include/linux/brick/brick.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 10/50] mars: add new file drivers/block/mars/brick.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 11/50] mars: add new file include/linux/brick/lib_pairing_heap.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 12/50] mars: add new file include/linux/brick/lib_queue.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 13/50] mars: add new file include/linux/brick/lib_rank.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 14/50] mars: add new file drivers/block/mars/lib_rank.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 15/50] mars: add new file include/linux/brick/lib_timing.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 16/50] mars: add new file drivers/block/mars/lib_timing.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 17/50] mars: add new file include/linux/brick/lib_limiter.h Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 18/50] mars: add new file drivers/block/mars/lib_limiter.c Thomas Schoebel-Theuer
2014-07-01 21:46 ` [PATCH 19/50] mars: add new file include/linux/xio.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 20/50] mars: add new file drivers/block/mars/xio_bricks/xio.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 21/50] mars: add new file include/linux/xio_net.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 22/50] mars: add new file drivers/block/mars/xio_bricks/xio_net.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 23/50] mars: add new file include/linux/lib_mapfree.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 24/50] mars: add new file drivers/block/mars/xio_bricks/lib_mapfree.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 25/50] mars: add new file include/linux/lib_log.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 26/50] mars: add new file drivers/block/mars/xio_bricks/lib_log.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 27/50] mars: add new file include/linux/xio/xio_bio.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 28/50] mars: add new file drivers/block/mars/xio_bricks/xio_bio.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 29/50] mars: add new file include/linux/xio/xio_aio.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 30/50] mars: add new file drivers/block/mars/xio_bricks/xio_aio.c Thomas Schoebel-Theuer
2014-07-03 19:59 ` Andi Kleen
2014-07-01 21:47 ` [PATCH 31/50] mars: add new file include/linux/xio/xio_client.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 32/50] mars: add new file drivers/block/mars/xio_bricks/xio_client.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 33/50] mars: add new file include/linux/xio/xio_if.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 34/50] mars: add new file drivers/block/mars/xio_bricks/xio_if.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 35/50] mars: add new file include/linux/xio/xio_copy.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 36/50] mars: add new file drivers/block/mars/xio_bricks/xio_copy.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 37/50] mars: add new file include/linux/xio/xio_trans_logger.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 38/50] mars: add new file drivers/block/mars/xio_bricks/xio_trans_logger.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 39/50] mars: add new file include/linux/mars_light/light_strategy.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 40/50] mars: add new file drivers/block/mars/mars_light/light_strategy.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 41/50] mars: add new file drivers/block/mars/mars_light/light_net.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 42/50] mars: add new file include/linux/xio/xio_server.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 43/50] mars: add new file drivers/block/mars/xio_bricks/xio_server.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 44/50] mars: add new file include/linux/mars_light/mars_proc.h Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 45/50] mars: add new file drivers/block/mars/mars_light/mars_proc.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 46/50] mars: add new file drivers/block/mars/mars_light/mars_light.c Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 47/50] mars: add new file drivers/block/mars/Makefile Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 48/50] mars: add new file drivers/block/mars/Kconfig Thomas Schoebel-Theuer
2014-07-01 21:47 ` [PATCH 49/50] mars: generic pre-patch for mars Thomas Schoebel-Theuer
2014-07-01 22:36 ` Greg KH
2014-07-02 7:19 ` Thomas Schoebel-Theuer
2014-07-02 8:24 ` Greg KH
2014-07-02 9:02 ` Thomas Schoebel-Theuer
2014-07-02 16:36 ` Greg KH
2014-07-02 13:27 ` Christoph Hellwig
2014-07-02 14:36 ` Thomas Schöbel-Theuer
2014-07-02 14:50 ` Christoph Hellwig
2014-07-02 16:20 ` Thomas Schöbel-Theuer [this message]
2014-07-02 18:41 ` Christoph Hellwig
2014-07-03 6:10 ` Thomas Schöbel-Theuer
2014-07-03 10:41 ` Christoph Hellwig
2014-07-01 21:47 ` [PATCH 50/50] mars: activate MARS in drivers/block/mars/ Thomas Schoebel-Theuer
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=53B43144.6010306@1und1.de \
--to=tst@1und1.de \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tst@schoebel-theuer.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox