|
From: Tony S. <tsh...@os...> - 2007-04-13 20:09:21
|
This just keeps getting better and better. I might note here that I'm
no c programmer, so be nice to me. :)
I've added this into mysqlfs.c:
static int mysqlfs_statfs(const char *path, struct statvfs *buf)
{
(void) path;
buf->f_namemax = 255;
buf->f_bsize = 4096;
/* df seems to use f_bsize instead of f_frsize, so make them the
same */
buf->f_frsize = buf->f_bsize;
buf->f_blocks = buf->f_bfree = buf->f_bavail =
1000ULL * 1024 * 1024 * 1024 / buf->f_frsize;
buf->f_files = buf->f_ffree = 1000000000;
return 0;
}
and also added a declaration for it to the fuse_operations struct. I
might also mention that the hard drive in this system isn't all that
large, about 20GB if I recall, and I'm connecting to a local MySQL
database. This ought to strike you as funny then:
/dev/fuse3 1.0T 0B 1.0T 0% /mysqlfs
Obviously I have f_namemax and f_bsize completely wrong. :P That, and I
still can't write. Same errors. Grrr...I'm missing something here, I
just don't know what.
Tony Shadwick wrote:
> Ugh, I did it again. Here's the URL spelling out how to fix this:
>
> http://fuse4bsd.creo.hu/doc/html_single_out/doc.html#hd001005
>
> Tony Shadwick wrote:
>> Well, I replied to myself from the wrong address earlier, so it didn't
>> get posted. ooops.
>>
>> Okay, the compile error was fixed by first running ./configure, then
>> modifying Makefile to remove -Wall from CFLAGS (there are two instances
>> of it).
>>
>> So it compiles, and I can mount the filesytem:
>>
>> manager# df -h
>> Filesystem Size Used Avail Capacity Mounted on
>> /dev/ad0s1a 496M 76M 380M 17% /
>> devfs 1.0K 1.0K 0B 100% /dev
>> /dev/ad0s1e 496M 20K 456M 0% /tmp
>> /dev/ad0s1f 28G 1.9G 24G 7% /usr
>> /dev/ad0s1d 2.9G 39M 2.6G 1% /var
>> devfs 1.0K 1.0K 0B 100% /var/named/dev
>> /dev/fuse1 0B 0B 0B 100% /mysqlfs
>>
>> Um...capacity 100%?
>>
>> It gets better:
>>
>> manager# cd /mysqlfs/
>> manager# ls -alhs
>> total 2
>> 0 drwxr-xr-x 1 root wheel 0B Apr 13 14:01 .
>> 2 drwxr-xr-x 22 root wheel 512B Apr 13 14:00 ..
>> manager# touch test
>> touch: test: No such file or directory
>> manager# mkdir test
>> mkdir: .: No such file or directory
>> manager# pwd
>> /mysqlfs
>>
>> I did a little research on this, and came across this page:
>>
>> http://datafarm.apgrid.org/ml/gfarm-discuss/msg00162.html
>>
>> It makes mention of sys/statfs.h, configure.in not being right, and most
>> importantly:
>>
>> "statvfs->f_frsize is not set, therefore df command cannot work
>> correctly on FreeBSD."
>>
>> It seems to be a bit more than that though, as I can't execute any file
>> operations at all, and nothing appears to be getting logged...
>>
>> Tony Shadwick wrote:
>>> Well, figured this out partially. time.h on freebsd doesn't define the
>>> struct utimbuf. utime.h does, however including it with or without
>>> time.h makes no difference, I get the same error. :\
>>>
>>> Tony Shadwick
>>> OSS Solutions
>>>
>>> Tony Shadwick wrote:
>>>> Yes, there is Fuse for FreeBSD. I've built it from ports, and it's
>>>> using API 2.6.
>>>>
>>>> Anyhooo....../configure is okay (after editing fuse.h to report the
>>>> correct API, apparently it has a backwards compat mode to version 2.1
>>>> and defaults to that. Changing to 2.6 per the instructions works
>>>> fine!), then when I attempt to do make or gmake, I get this error:
>>>>
>>>> manager# gmake
>>>> gmake all-am
>>>> gmake[1]: Entering directory `/usr/local/src/mysqlfs-0.4.0-rc1'
>>>> if gcc -DHAVE_CONFIG_H -I. -I. -I. -I/usr/include -I/usr/local/include
>>>> -L/usr/lib -L/usr/local/lib -I/usr/include -I/usr/local/include
>>>> -L/usr/lib -L/usr/local/lib -I/usr/local/include -Wall -Werror
>>>> -I/usr/local/include/mysql -Wall -Werror -MT query.o -MD -MP -MF
>>>> ".deps/query.Tpo" -c -o query.o query.c; \
>>>> then mv -f ".deps/query.Tpo" ".deps/query.Po"; else rm -f
>>>> ".deps/query.Tpo"; exit 1; fi
>>>> query.c: In function `query_utime':
>>>> query.c:439: warning: long int format, time_t arg (arg 4)
>>>> query.c:439: warning: long int format, time_t arg (arg 5)
>>>> query.c:439: warning: long int format, time_t arg (arg 4)
>>>> query.c:439: warning: long int format, time_t arg (arg 5)
>>>> gmake[1]: *** [query.o] Error 1
>>>> gmake[1]: Leaving directory `/usr/local/src/mysqlfs-0.4.0-rc1'
>>>> gmake: *** [all] Error 2
>>>>
>>>> The code section it's complaining about is below. The last line is line
>>>> 439.
>>>>
>>>> ---------
>>>>
>>>> int query_utime(MYSQL *mysql, long inode, struct utimbuf *time)
>>>> {
>>>> int ret;
>>>> char sql[SQL_MAX];
>>>>
>>>> snprintf(sql, SQL_MAX,
>>>> "UPDATE inodes "
>>>> "SET atime=%ld, mtime=%ld "
>>>> "WHERE inode=%lu",
>>>> time->actime, time->modtime, inode);
>>>>
>>>> --------
>>>>
>>>> It appears to not like time->actime and time->modtime. Any idea what
>>>> might cause this or how to debug it/fix it up?
>>>>
>>>> Thanks!
>>>>
>>>> Tony Shadwick
>>>> OSS Solutions
>>>>
>>>> -------------------------------------------------------------------------
>>>> Take Surveys. Earn Cash. Influence the Future of IT
>>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>>>> opinions on IT & business topics through brief surveys-and earn cash
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>> _______________________________________________
>>>> Mysqlfs-general mailing list
>>>> Mys...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/mysqlfs-general
>>> -------------------------------------------------------------------------
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>>> opinions on IT & business topics through brief surveys-and earn cash
>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>> _______________________________________________
>>> Mysqlfs-general mailing list
>>> Mys...@li...
>>> https://lists.sourceforge.net/lists/listinfo/mysqlfs-general
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys-and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> Mysqlfs-general mailing list
>> Mys...@li...
>> https://lists.sourceforge.net/lists/listinfo/mysqlfs-general
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Mysqlfs-general mailing list
> Mys...@li...
> https://lists.sourceforge.net/lists/listinfo/mysqlfs-general
|