Just take a practical example: a graphical partition manager (gparted, qtparted, any partition manager in any linux installation program etc.).<br><br>There you need to implement the partitioning using parted, most likely done using the operation stack parted provides, need to know about partition flags, need to convert data types and do your own structures representing the partitions in the UI etc. This is not really trivial, and can result in a more or less heavy implementation. Next to that, you need your program to check which file systems are supported (ext2/3/4, brtfs, xfs, ...), and need to implement the different options to check, format and handle each file system, not mentioning that the implementations on different platforms for the filesystem tools do not always match looking on the provided options.<br>
Now, every partition manager written nowdays does that on it&#39;s own, so we have dozens of different implementations of partitioning and file system formatting.<br><br>UDisks should put this into literally one place where this kind of things are developed, and the end user application only makes use of the functionality udisks provides and &quot;shows&quot; the results. In my case, my implementation for a partition manager (Tribe) went down from ~6000 LoC to ~1200 LoC (ONLY the partitioning part, without the UI) using UDisks over DBus. And my implementation is not close to the length or perfection of other implementations (paradus has a ~13.000 LoC implementation, debian ~9.000 LoC, etc.).<br>
<br>You still need operation stacks and similar, but you don&#39;t need to care about all the low-level calls and what-is-supported and what not, the permission handling (which udisks does using a quite nice policykit implementation).<br>
<br>As a system administrator you probably will not need that in first place, but it easens up the work of application developers in need of disk/partitioning stuff [a lot].<br><br>Best regards,<br>Georg<br><br><div class="gmail_quote">
On Tue, Nov 8, 2011 at 3:34 PM, Ivo Georgiev <span dir="ltr">&lt;<a href="mailto:ivo@linvo.org">ivo@linvo.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im HOEnZb">I think a D-Bus interface is much easier to implement in a program that needs to handle anything partition related. Plus, it&#39;s all a unified interface - getting data about devices, partitions and/or modifying them.<br>

<br>
<br>
In general, the problem of resizing file-systems and partitions is something that, in Linux, has no unified solution, To resize/check/create/modify a file-system you need to call the specific tool for the given FS. This is really tedious and annoying to implement, considering it is already implemented in other programs but the code is not reusable. When it comes to modifying the partition table itself, libparted is difficult to use. Having a unified system interface to do everything related to storage devices is really the way to go.<br>

<br>
By the way, how about implementing a Resize method in the device class if it is resizeable that abstracts Filesystem.Resize and Partition.Resize and calls them in the valid order or throws an error if the given dimensions overlap with other partitions.<br>

<br>
Also, a property that defines if the partition+filesystem can be shrinked/expanded/moved according to the FS type (e.g. XFS cannot be shrunk) would be nice. Also, that property should be influenced by which external tools are available (e.g. if e2fstools are not installed, this property of all partitions with ext* type will indicate you cannot modify them).<br>

<br>
On 08.11.2011, at 01:44, walt &lt;<a href="mailto:w41ter@gmail.com">w41ter@gmail.com</a>&gt; wrote:<br>
<br>
</div><div class="HOEnZb"><div class="h5">&gt; On 11/07/2011 11:56 AM, David Zeuthen wrote:<br>
&gt;<br>
&gt;&gt; ...<br>
&gt;&gt; The current code in master simply shells out to the parted(8),<br>
&gt;&gt; sgdisk(8) and sfdisk(8) tools to do the heavy lifting. I expect the<br>
&gt;&gt; implementation of Partition.Resize() to do something similar...<br>
&gt;<br>
&gt; Hi David.  I&#39;m very familiar with parted and friends because I use them<br>
&gt; often, but I&#39;m completely confused by why udisk should get involved with<br>
&gt; those tasks when I (the user) can use the same tools directly.<br>
&gt;<br>
&gt; What is the problem that udisk would be solving by supplying the same<br>
&gt; functions?  Who whould be using udisk to do those tasks instead of<br>
&gt; using the tools directly?  I ask as a udisk outsider, so a very short<br>
&gt; answer would be more than sufficient :)<br>
&gt;<br>
&gt; Thanks.<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; devkit-devel mailing list<br>
&gt; <a href="mailto:devkit-devel@lists.freedesktop.org">devkit-devel@lists.freedesktop.org</a><br>
&gt; <a href="http://lists.freedesktop.org/mailman/listinfo/devkit-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/devkit-devel</a><br>
<br>
_______________________________________________<br>
devkit-devel mailing list<br>
<a href="mailto:devkit-devel@lists.freedesktop.org">devkit-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/devkit-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/devkit-devel</a><br>
</div></div></blockquote></div><br>