linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Kay Sievers <kay.sievers@vrfy.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	Greg KH <greg@kroah.com>
Subject: Re: [1/4] DST: Distributed storage documentation.
Date: Mon, 10 Dec 2007 22:33:05 +0300	[thread overview]
Message-ID: <20071210193304.GA24737@2ka.mipt.ru> (raw)
In-Reply-To: <1197313348.6399.106.camel@lov.site>

On Mon, Dec 10, 2007 at 08:02:28PM +0100, Kay Sievers (kay.sievers@vrfy.org) wrote:
> > uganda:~/codes# ls -l /sys/devices/storage/n-0-ffff81003ebc220/
> > total 0
> > drwxr-xr-x 2 root root    0 2007-12-10 13:23 power
> > -r--r--r-- 1 root root 4096 2007-12-10 13:30 size
> > -r--r--r-- 1 root root 4096 2007-12-10 13:30 start
> > -r--r--r-- 1 root root 4096 2007-12-10 13:30 type
> > -rw-r--r-- 1 root root 4096 2007-12-10 13:30 uevent
> 
> This is a "struct device" instance without a subsystem (bus/class),
> right? It will not send an uevent to userspace. Is that intended? Why
> don't you add them all to the dst bus? 

I created dst bus for storage devices only, nodes are very different
objects, and actually they do not need any events from above, but I need
to put some attributes somewhere, so it is 'empty' device.

> > Actually not - I have to set reference counter to something other than 1
> > or +/- 1, and thus will have to call kref_get() in a loop, which is a
> > very ugly step. Is there kref_set() or somethinglike that? At least not
> > in 2.6.22 what I'm using for now.
> 
> Yeah, a loop would look pretty ugly. How about just adding kref_set(),
> if you need it.

Well, then it distributed storage will not be able to build as
standalone module, and kref_set() itself will not be accepted as a single 
patch, since there are no in-kernel users :)
It is easily doable though.

> > > Why don't you use groups for the attributes?
> > 
> > For 3-4 attributes it is faster to register them in a loop than typing
> > another structure :)
> 
> Yeah, but if you would need to recover from an error when the creation
> of a file fails, a group would do the proper "rollback".

I do not care about such errors - if there is such an error for a file,
which exports information about type of the node (i.e. string "L" or "R")
or some other very meaningful info, then system has enough to care about
instead of this, so dst does not do anything special - it ignores such
errors :)

On exit path it will be checked and removed correctly.
If there will be additional sysfs files, I think group is a good way to
implement them.

> > > Why don't you use default attributes for the device, where you get all
> > > error handling done by the core.
> > 
> > What is 'default attributes' and for what devices?
> > All my sysfs files are so much trivial, so they do not need anything
> > special and I do not see what is error handling you mentioned.
> 
> If all devices of a subsystem (bus/class) are of the same type, you can
> set a default array of attributes in the "struct bus/class" to be
> created at every device. If you have multiple types of devices in the
> same subsytem (bus/class) you can to assign a the "device_type", which
> has the default attribute group.
> That way the core will create the files before the event is sent out to
> userspace, and the files can be access from the event itself. Not sure
> if that is needed for dst.

Ok, I see.

DST right now has 3 types of files - storage files, it is common for
every storage device; node files, which are the same for every node; and
per-algorithm private devices - they can be different (actually only
mirroring algorithm exports something to userspace).

I think it is possible to use default attributes for storage devices,
but node device does not have a bus/class, so they will be untouched.

> Thanks,
> Kay

-- 
	Evgeniy Polyakov

  reply	other threads:[~2007-12-10 19:33 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <11qqqasdzxczc036@2ka.mipt.ru>
2007-12-10 11:47 ` [0/4] DST: Distributed storage Evgeniy Polyakov
2007-12-10 11:47   ` [1/4] DST: Distributed storage documentation Evgeniy Polyakov
2007-12-10 11:47     ` [2/4] DST: Core distributed storage files Evgeniy Polyakov
2007-12-10 11:47       ` [3/4] DST: Network state machine Evgeniy Polyakov
2007-12-10 11:47         ` [4/4] DST: Algorithms used in distributed storage Evgeniy Polyakov
2007-12-12  9:12           ` Dmitry Monakhov
2007-12-12 10:20             ` Evgeniy Polyakov
2007-12-13 20:43         ` [3/4] DST: Network state machine Dmitry Monakhov
2007-12-14  6:35           ` Evgeniy Polyakov
2007-12-10 12:51     ` [1/4] DST: Distributed storage documentation Kay Sievers
2007-12-10 12:58       ` Evgeniy Polyakov
2007-12-10 14:31         ` Kay Sievers
2007-12-10 14:50           ` Evgeniy Polyakov
2007-12-10 15:12             ` Evgeniy Polyakov
2007-12-10 19:02             ` Kay Sievers
2007-12-10 19:33               ` Evgeniy Polyakov [this message]
2007-12-10 19:44                 ` Kay Sievers
2007-12-10 19:51                   ` Evgeniy Polyakov
2007-12-10 19:56                     ` Kay Sievers
2007-12-10 20:03                       ` Evgeniy Polyakov
2008-01-22 19:38 [0/4] DST: Distributed storage: Succumbed to live ant Evgeniy Polyakov
2008-01-22 19:38 ` [1/4] DST: Distributed storage documentation Evgeniy Polyakov
  -- strict thread matches above, loose matches on Subject: below --
2007-12-26 11:22 [0/4] DST: Distributed storage: Groundhogs strike back: no New Year for humans Evgeniy Polyakov
2007-12-26 11:22 ` [1/4] DST: Distributed storage documentation Evgeniy Polyakov
2007-12-17 15:03 [0/4] DST: Distributed storage Evgeniy Polyakov
2007-12-17 15:03 ` [1/4] DST: Distributed storage documentation Evgeniy Polyakov
2007-12-17 16:27   ` Kay Sievers
2007-12-04 14:37 [0/4] DST: Distributed storage Evgeniy Polyakov
2007-12-04 14:37 ` [1/4] DST: Distributed storage documentation Evgeniy Polyakov
2007-11-29 12:53 [0/4] dst: Distributed storage Evgeniy Polyakov
2007-11-29 12:53 ` [1/4] dst: Distributed storage documentation Evgeniy Polyakov
2007-12-03  4:50   ` Matt Mackall
2007-12-03 11:16     ` Evgeniy Polyakov

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=20071210193304.GA24737@2ka.mipt.ru \
    --to=johnpol@2ka.mipt.ru \
    --cc=greg@kroah.com \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).