I've noticed that fstyp on a floppy media formatted with "pcfs" now needs 
somewhere between
30 - 100 seconds to find out that the floppy media is formatted with "pcfs".

E.g. on sparc snv_48, I currently observe this:
% time fstyp /vol/dev/rdiskette0/nomedia
pcfs
0.01u 0.10s 1:38.84 0.1%


zfs's /usr/lib/fs/zfs/fstyp.so.1 seems to add about 40 seconds to that time, 
because it
reads 1 mbyte from the floppy media (~ 2/3 of a 1.44MB floppy), only to find 
out that the
floppy media does not contain a zfs pool:

SPARC snv_48, before tamarack:
% time /usr/lib/fs/zfs/fstyp /vol/dev/rdiskette0/nomedia
unknown_fstyp (no matches)
0.01u 0.04s 0:36.27 0.1%

x86, snv_53, with tamarack:
% time /usr/lib/fs/zfs/fstyp /dev/rdiskette
unknown_fstyp (no matches)
0.00u 0.01s 0:35.25 0.0%

(the rest of the time is wasted probing for an udfs filesystem)


Isn't the minimum device size required for a zfs pool 64 mbytes?
(SPA_MINDEVSIZE, from the sys/fs/zfs.h header)

Shouldn't zfs/fstyp skip probing for zfs / zpools on small capacity 
devices like a floppy media, that are less than this 64 mbytes ?

diff -r 367766133bfe usr/src/cmd/fs.d/zfs/fstyp/fstyp.c
--- a/usr/src/cmd/fs.d/zfs/fstyp/fstyp.c        Fri Dec 15 09:03:53 2006 -0800
+++ b/usr/src/cmd/fs.d/zfs/fstyp/fstyp.c        Sun Dec 17 11:27:08 2006 +0100
@@ -32,6 +32,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/fs/zfs.h>
 #include <unistd.h>
 #include <libintl.h>
 #include <locale.h>
@@ -88,6 +90,15 @@ fstyp_mod_ident(fstyp_mod_handle_t handl
        char    *str;
        uint64_t u64;
        char    buf[64];
+       struct stat stb;
+
+       /*
+        * don't probe for zfs on small media (e.g. floppy) that is
+        * too small for a zpool.
+        */
+       if (fstat(h->fd, &stb) == 0 && stb.st_size < SPA_MINDEVSIZE) {
+               return (FSTYP_ERR_NO_MATCH);
+       }

        if (zpool_read_label(h->fd, &h->config) != 0 ||
            h->config == NULL) {
 
 
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to