This patch gives yaird support for UUID and LABEL with XFS

commit a859d72be297f7c7f6dde51ea11e347e160913a8
Author: Patrick McManus <[EMAIL PROTECTED]>
Date:   Thu Feb 14 15:21:24 2008 -0500

    yaird label and uuid support for xfs
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=337065
    debian bug 337065 merged with Merged with #341498, #457462;
    
    XFS superblock information that allows yaird to work with UUIDs in
    /etc/fstab as it already can for ext3 and Resier
    
    Use of blkid tool is still a better idea, but this patch is consistent
    with existing support

diff --git a/perl/LabeledPartition.pm b/perl/LabeledPartition.pm
index e1c9553..5cbff3d 100644
--- a/perl/LabeledPartition.pm
+++ b/perl/LabeledPartition.pm
@@ -69,6 +69,7 @@ sub try ($) {
        binmode ($fh);
        $result = tryExt2 ($fh, $path) unless defined $result;
        $result = tryReiser ($fh, $path) unless defined $result;
+       $result = tryXFS ($fh, $path) unless defined $result;
 
        # ignore errors, could not have been very wrong
        # if a working superblock came out of it.
@@ -149,4 +150,42 @@ sub tryReiser ($$) {
        return $result;
 }
 
+sub tryXFS ($$)
+{
+       my ($fh, $path) = @_;
+       my $result = undef;
+       
+       # bytes 32-47 are the uuid
+       # offset is 0 - seek back to start
+       if (! seek ($fh, 0, 0)) {
+               return $result;
+       }
+
+       my $superBlock;
+       my $rc = read ($fh, $superBlock, 120);
+       if (! defined ($rc) || $rc != 120) {
+               return $result;
+       }
+
+       my ($magic, $uuid, $label) =
+               unpack
+               "N x[28] a[16] x[60] Z[12]",
+               $superBlock;
+
+       my $t = join ("", map { sprintf "%02x", ord($_) } split(//, $uuid));
+
+       if ($magic == 0x58465342) {
+
+               $uuid = fancyUuid ($uuid);
+               $result = LabeledPartition->new (
+                       type => "xfs",
+                       label => $label,
+                       uuid => fancyUuid($t),
+                       path => $path,
+                       );
+
+       }
+       return $result;
+}    
+
 1;





-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to