From c4d5cef0c6efb959ec8ae8a3cc3d47ed13cc0223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 3 Jul 2008 20:41:31 +0000 Subject: [PATCH] * Now prints the disk size as part of the default name so that different volumes are easier to differentiate. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26241 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/file_systems/ext2/Volume.cpp | 31 ++++++++++++++----- src/add-ons/kernel/file_systems/ext2/Volume.h | 1 + 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.cpp b/src/add-ons/kernel/file_systems/ext2/Volume.cpp index 8c5150d54b..f715d8f24c 100644 --- a/src/add-ons/kernel/file_systems/ext2/Volume.cpp +++ b/src/add-ons/kernel/file_systems/ext2/Volume.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include @@ -242,7 +243,7 @@ Volume::Name() const if (fSuperBlock.name[0]) return fSuperBlock.name; - return "Unnamed Ext2 Volume"; + return fName; } @@ -309,15 +310,31 @@ Volume::Mount(const char* deviceName, uint32 flags) return B_ERROR; status = get_vnode(fFSVolume, EXT2_ROOT_NODE, (void**)&fRootNode); - if (status == B_OK) { - // all went fine - opener.Keep(); - return B_OK; - } else { + if (status != B_OK) { TRACE("could not create root node: get_vnode() failed!\n"); + return status; } - return status; + // all went fine + opener.Keep(); + + if (!fSuperBlock.name[0]) { + // generate a more or less descriptive volume name + uint32 divisor = 1UL << 30; + char unit = 'G'; + if (diskSize < divisor) { + divisor = 1UL << 20; + unit = 'M'; + } + + double size = double((10 * diskSize + divisor - 1) / divisor); + // %g in the kernel does not support precision... + + snprintf(fName, sizeof(fName), "%g %cB Ext2 Volume", + size / 10, unit); + } + + return B_OK; } diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.h b/src/add-ons/kernel/file_systems/ext2/Volume.h index 76a31c62a6..df97d97522 100644 --- a/src/add-ons/kernel/file_systems/ext2/Volume.h +++ b/src/add-ons/kernel/file_systems/ext2/Volume.h @@ -59,6 +59,7 @@ private: fs_volume* fFSVolume; int fDevice; ext2_super_block fSuperBlock; + char fName[32]; uint32 fFlags; uint32 fBlockSize; uint32 fBlockShift;