All of lore.kernel.org
 help / color / mirror / Atom feed
* Avoid error message during a scan of a static /dev directory
@ 2011-10-21 17:36 Goffredo Baroncelli
  0 siblings, 0 replies; only message in thread
From: Goffredo Baroncelli @ 2011-10-21 17:36 UTC (permalink / raw)
  To: linux-btrfs, hugo, chris.mason; +Cc: Helmut Hullen


[-- Attachment #1.1: Type: text/plain, Size: 1660 bytes --]

Hi all,

as highlighted by Helmut (see "Re: btrfs still looks for not existing 
devices"), some btrfs tools (like mkfs.btrfs, btrfsck, btrfs-image, btrfs-
label...) have the habit to scan the /dev directories looking for a valid 
block device in order to assemble all the devices of a btrfs filesystems.

Some systems doesn't use udev, so they have a static /dev with a lot of block 
device nodes without a real device. Another source of error is that some 
devices return ENOMEDIUM (No medium found) when they haven't a medium (think 
about a CD with the tray empty, or a SD/CF reader). These two kind of errors 
are reported by these tools. 

I think that it is perfectly safe to ignore these error because the fact that 
a device doesn't exist or a CD is empty is not an error which should be 
handled and/or reported when the system is trying to assemble the devices for 
a filesystem.

In any case if a device *needed* for a btrfs filesystem is missing, an error is 
raised.

The patch enclosed allow to ignore the errors:
- ENXIO (device don't exists) 
- ENOMEDIUM (No medium found)

avoiding spurious messages during a scanning of the /dev directory.

I have to highlight that if a CDROM/DVD is inserted, the btrfs tools read the 
cdrom, and this is a very slow operation.

Hugo, Chris,
please apply.

Anyway comments are welcome.

BR


P.S.
you can pull this patch from the following repository:

        http://cassiopea.homelinux.net/git/btrfs-progs-unstable.git

branch

	skip-not-existent-devices

-- 
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack@inwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E  C054 BF04 F161 3DC5 0512

[-- Attachment #1.2: skip-not-existant-devices.diff --]
[-- Type: text/x-patch, Size: 1157 bytes --]

commit 3635fcf3f7358f006a5025b9773034088bdd01fd
Author: Goffredo Baroncelli <kreijack@inwind.it>
Date:   Fri Oct 21 19:00:28 2011 +0200

    Ignore the error ENXIO and ENOMEDIUM during a devs scan
    
    Ignore the error ENXIO (device don't exists) and ENOMEDIUM (
    No medium found -> like a cd tray empty) in the function
    btrfs_scan_one_dir.
    This avoids spurios errors due to an empty CD or a block device node
    without a device (which is frequent in a static /dev).
    
    
    Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>

diff --git a/utils.c b/utils.c
index 86c643c..5761e47 100644
--- a/utils.c
+++ b/utils.c
@@ -997,8 +997,14 @@ again:
 		}
 		fd = open(fullpath, O_RDONLY);
 		if (fd < 0) {
-			fprintf(stderr, "failed to read %s: %s\n", fullpath,
-					strerror(errno));
+			/* ignore the following errors:
+				ENXIO (device don't exists) 
+				ENOMEDIUM (No medium found -> 
+					like a cd tray empty)
+			*/
+			if(errno != ENXIO && errno != ENOMEDIUM) 
+				fprintf(stderr, "failed to read %s: %s\n", 
+					fullpath, strerror(errno));
 			continue;
 		}
 		ret = btrfs_scan_one_device(fd, fullpath, &tmp_devices,

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 190 bytes --]

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-10-21 17:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-21 17:36 Avoid error message during a scan of a static /dev directory Goffredo Baroncelli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.