+2011-11-03 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Make reiserfs label retrieval similar to other *_label functions.
+
+ * grub-core/fs/reiserfs.c (grub_reiserfs_superblock): New field label.
+ (REISERFS_MAX_LABEL_LENGTH): Removed.
+ (REISERFS_LABEL_OFFSET): Likewise.
+ (grub_reiserfs_label): Rewritten.
+
+2011-11-03 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/fs/nilfs2.c (grub_nilfs2_mtime): Use correct superblock
+ field.
+
2011-11-03 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/zfs/zfs.c (read_device): Support raidz3.
#define REISERFS_MAGIC_DESC_BLOCK "ReIsErLB"
/* If the 3rd bit of an item state is set, then it's visible. */
#define GRUB_REISERFS_VISIBLE_MASK ((grub_uint16_t) 0x04)
-#define REISERFS_MAX_LABEL_LENGTH 16
-#define REISERFS_LABEL_OFFSET 0x64
#define S_IFLNK 0xA000
grub_uint32_t inode_generation;
grub_uint8_t unused[4];
grub_uint16_t uuid[8];
+ char label[16];
} __attribute__ ((packed));
struct grub_reiserfs_journal_header
static grub_err_t
grub_reiserfs_label (grub_device_t device, char **label)
{
- *label = grub_malloc (REISERFS_MAX_LABEL_LENGTH);
- if (*label)
+ struct grub_reiserfs_data *data;
+ grub_disk_t disk = device->disk;
+
+ grub_dl_ref (my_mod);
+
+ data = grub_reiserfs_mount (disk);
+ if (data)
{
- grub_disk_read (device->disk,
- REISERFS_SUPER_BLOCK_OFFSET / GRUB_DISK_SECTOR_SIZE,
- REISERFS_LABEL_OFFSET, REISERFS_MAX_LABEL_LENGTH,
- *label);
+ *label = grub_strndup (data->superblock.label,
+ sizeof (data->superblock.label));
}
+ else
+ *label = NULL;
+
+ grub_dl_unref (my_mod);
+
+ grub_free (data);
+
return grub_errno;
}