Mailinglist Archive: yast-devel (61 mails)

< Previous Next >
Re: [yast-devel] Storage Redesign
On Fri, 24 Oct 2014 14:53:06 +0200
Arvin Schnell <aschnell@xxxxxxx> wrote:


Hi Arvin,
thanks for sharing, I post below some comments.

my hackweek project was to evaluate using the boost graph library
(BGL) in libstorage. For me the project was interesting and
successful. I have documented it at The code is
also available there.

So now I would like to redesign the storage part of YaST. Here
are the main steps required:

- Extend libstorage-bgl-eval to fully support disks, partitions
and simply filesystems (probing, committing, testmodes,

- Try to make a compatibility layer.

yes, compatibility layer is needed to smooth migration.

- Make the new API robust against API and ABI changes.

Sounds good, question is how?

- Export new API to Ruby (help would be good) for use by all YaST

I think it would be very cool if we have in ruby nice object oriented
API. I can help you with ruby bindings. I think it is usually better to
have combination of C bindings and ruby code that make usage in ruby

- Get a simply installation working (two partitions, ext4 and

- Extend libstorage-bgl-eval to current libstorage
functionality. Maybe drop a few features, e.g. loop-back
devices (once used for encryption).

- Make the new API suit the needs of all YaST modules (input from
other developers required). If required add utility functions.

I think that if only one module need specific functionality, then it
should do it itself. ( like bootloader do setting pmbr flag for disks ).
If more modules need it, then it make sense to have it in libstorage.

- Make all code in YaST use new API (task for several

For this step we really need some storage setup factory, so e.g. in
bootloader I can replace old mocks of target maps with new stuff and
change code.

- Make expert partitioner use new features, e.g. use disks
without partition table for filesystems.

- Rewrite storage proposal (specification required!).

- Finally drop target-map (as decided during workshop).

That will be great step especially together with object oriented API.
Then we can have something like Disk.find( bios_id:
"0x80").find_partition(mount_to: "/boot").sw_raid? in bootloader.

- Drop compatibility layer.

In the end yast2-storage would ideally only contain dialogs and
no logic for other YaST modules (since all of that moved to
libstorage). But if some utility functions are easier to
implement in Ruby they can stay there.

I think utility can be in ruby bindings of libstorage if it is easier
to do it there.

I assume that altogether the redesigning will take more than half
a year. Anyway I think it is required to keep the code
maintainable and be prepared for new feature requests. Some
existing features request might already be implemented along the
way (e.g.


To unsubscribe, e-mail: yast-devel+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: yast-devel+owner@xxxxxxxxxxxx

< Previous Next >