Index: uspace/srv/fs/cdfs/cdfs_ops.c
===================================================================
--- uspace/srv/fs/cdfs/cdfs_ops.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/srv/fs/cdfs/cdfs_ops.c	(revision 9c96634956b80aafcc5328e99766a340e7dc12d5)
@@ -208,4 +208,5 @@
 	service_id_t service_id;  /**< Service ID of block device */
 	cdfs_enc_t enc;		  /**< Filesystem string encoding */
+	char *vol_ident;	  /**< Volume identifier */
 } cdfs_t;
 
@@ -483,4 +484,5 @@
  * @param data	File name buffer
  * @param dsize	Fine name buffer size
+ * @param enc   Encoding
  * @param dtype	Directory entry type
  * @return	Decoded file name (allocated string)
@@ -515,4 +517,29 @@
 	
 	return name;
+}
+
+/** Decode volume identifier.
+ *
+ * @param data	Volume identifier buffer
+ * @param dsize	Volume identifier buffer size
+ * @param enc   Encoding
+ * @return	Decoded volume identifier (allocated string)
+ */
+static char *cdfs_decode_vol_ident(void *data, size_t dsize, cdfs_enc_t enc)
+{
+	char *ident;
+	size_t i;
+	
+	ident = cdfs_decode_str(data, dsize, enc);
+	if (ident == NULL)
+		return NULL;
+	
+	/* Trim trailing spaces */
+	i = str_size(ident);
+	while (i > 0 && ident[i - 1] == ' ')
+		--i;
+	ident[i] = '\0';
+	
+	return ident;
 }
 
@@ -841,8 +868,9 @@
  * @param rlba		Place to store LBA of root dir
  * @param rsize		Place to store size of root dir
+ * @param vol_ident	Place to store pointer to volume identifier
  * @return 		EOK if found, ENOENT if not
  */
 static int cdfs_find_joliet_svd(service_id_t sid, cdfs_lba_t altroot,
-    uint32_t *rlba, uint32_t *rsize)
+    uint32_t *rlba, uint32_t *rsize, char **vol_ident)
 {
 	cdfs_lba_t bi;
@@ -899,4 +927,8 @@
 		*rlba = uint32_lb(vol_desc->data.prisec.root_dir.lba);
 		*rsize = uint32_lb(vol_desc->data.prisec.root_dir.size);
+
+		*vol_ident = cdfs_decode_vol_ident(vol_desc->data.prisec.ident,
+		    32, enc_ucs2);
+
 		block_put(block);
 		return EOK;
@@ -908,5 +940,5 @@
 /** Read the volume descriptors. */
 static bool iso_read_vol_desc(service_id_t sid, cdfs_lba_t altroot,
-    uint32_t *rlba, uint32_t *rsize, cdfs_enc_t *enc)
+    uint32_t *rlba, uint32_t *rsize, cdfs_enc_t *enc, char **vol_ident)
 {
 	/* First 16 blocks of isofs are empty */
@@ -962,5 +994,5 @@
 	uint32_t jrsize;
 	
-	rc = cdfs_find_joliet_svd(sid, altroot, &jrlba, &jrsize);
+	rc = cdfs_find_joliet_svd(sid, altroot, &jrlba, &jrsize, vol_ident);
 	if (rc == EOK) {
 		/* Found */
@@ -972,4 +1004,6 @@
 		*rsize = uint32_lb(vol_desc->data.prisec.root_dir.size);
 		*enc = enc_ascii;
+		*vol_ident = cdfs_decode_vol_ident(vol_desc->data.prisec.ident,
+		    32, enc_ascii);
 	}
 	
@@ -986,5 +1020,5 @@
 	
 	rc = iso_read_vol_desc(fs->service_id, altroot, &node->lba,
-	    &node->size, &fs->enc);
+	    &node->size, &fs->enc, &fs->vol_ident);
 	if (rc != EOK)
 		return false;
@@ -1032,4 +1066,6 @@
 static int cdfs_fsprobe(service_id_t service_id, vfs_fs_probe_info_t *info)
 {
+	char *vol_ident;
+
 	/* Initialize the block layer */
 	int rc = block_init(service_id, BLOCK_SIZE);
@@ -1070,9 +1106,13 @@
 	uint32_t rsize;
 	cdfs_enc_t enc;
-	if (!iso_read_vol_desc(service_id, altroot, &rlba, &rsize, &enc)) {
+	if (!iso_read_vol_desc(service_id, altroot, &rlba, &rsize, &enc,
+	    &vol_ident)) {
 		block_cache_fini(service_id);
 		block_fini(service_id);
 		return EIO;
 	}
+	
+	str_cpy(info->label, FS_LABEL_MAXLEN + 1, vol_ident);
+	free(vol_ident);
 	
 	return EOK;
@@ -1160,4 +1200,5 @@
 	block_cache_fini(fs->service_id);
 	block_fini(fs->service_id);
+	free(fs->vol_ident);
 	free(fs);
 }
Index: uspace/srv/volsrv/part.c
===================================================================
--- uspace/srv/volsrv/part.c	(revision 8d2dd7f2d52fbc7693f94b66e451eeff3756d061)
+++ uspace/srv/volsrv/part.c	(revision 9c96634956b80aafcc5328e99766a340e7dc12d5)
@@ -182,5 +182,6 @@
 
 	if (fst->name != NULL) {
-		log_msg(LOG_DEFAULT, LVL_NOTE, "Found %s", fst->name);
+		log_msg(LOG_DEFAULT, LVL_NOTE, "Found %s, label '%s'",
+		    fst->name, info.label);
 		part->pcnt = vpc_fs;
 		part->fstype = fst->fstype;
